Как я могу установить несколько областей печати с помощью openpyxl

У меня есть файл Excel, который включает один лист Excel. на листе есть несколько разных разделов, которые я хочу добавить в область печати. Но в openpyxl я обнаружил, что могу установить только одну область печати. Есть ли какие-либо возможности для многократной печати в openpyxl или других библиотеках на существующем листе?

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
0
80
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Должна быть возможность добавлять диапазоны вместе одной командой.

import openpyxl

wb = openpyxl.load_workbook('foo.xlsx')
sheet = wb['Sheet1']

printArea = ["'Sheet1'!$A$1:$Q$34","'Sheet1'!$A$40:$Q$75"]
print(f"PA1: {printArea[0]}\nPA2: {printArea[1]}")
sheet.print_area = f'{printArea[0]},{printArea[1]}'

wb.save('foo.xlsx')

Если вы хотите попробовать другую библиотеку, например Xlwings;

import xlwings as xw

with xw.App(visible=False) as app:
    wb = xw.Book('foo.xlsx')
    ws = wb.sheets('Sheet1')

    ws.page_setup.print_area = "A1:F10, A15:E19, A21:B22"

    ### Or using the api and full co-ords if preferred.
    # ws.api.PageSetup.PrintArea = "$A$1:$F$10,$A$15:$E$19,$A$21:$B$22"

    wb.save('foo.xlsx')

не работал при таком подходе

SAFIQUL ISLAM UZZAL 203-15-144 05.05.2024 09:15

Работает для меня. Я заметил, что вторая запятая в приведенном выше примере — это точка, поэтому убедитесь, что каждый диапазон разделен запятой (обновлен пример кода). Если все в порядке, какая у вас версия Openpyxl? должна быть позже версии 2.4, раньше этой функции не существовало (лучше, если у вас последняя версия 3.1.2). Если версия актуальна, как вы ее реализуете и определяете, что она не работает?

moken 05.05.2024 09:22

Я получил последнюю версию openpyxl и делаю это:sheet.print_area = f'{printArea[0]},{printArea[1]}' print(sheet.print_area), вывод в консоли - 'Sheet1'!$A$1:$ Q$34,'Sheet1'!$A$40:$Q$75, но в Excel эта область печати не выбрана

SAFIQUL ISLAM UZZAL 203-15-144 05.05.2024 10:13

Не знаю, почему вы указываете имя листа в диапазоне. Область печати применяется к листу, а не к книге, поэтому имя листа не требуется. Однако я обновил пример кода, чтобы использовать предоставленные вами значения области печати. Две области печати по-прежнему настроены правильно. Если имя рабочего листа, к которому вы применяете области печати, не было «Лист1», эти области печати все равно будут установлены на этом листе.

moken 05.05.2024 11:47

Это действительно работает. Проблема была в масштабировании. Область печати, которую вы предоставляете, работает правильно, спасибо.

SAFIQUL ISLAM UZZAL 203-15-144 05.05.2024 13:14

Вы можете дать свой первый ответ. Я надеюсь, что это поможет многим людям

SAFIQUL ISLAM UZZAL 203-15-144 05.05.2024 13:15

Другие вопросы по теме