У меня есть файл Excel, который включает один лист Excel. на листе есть несколько разных разделов, которые я хочу добавить в область печати. Но в openpyxl я обнаружил, что могу установить только одну область печати. Есть ли какие-либо возможности для многократной печати в openpyxl или других библиотеках на существующем листе?
Должна быть возможность добавлять диапазоны вместе одной командой.
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')
Работает для меня. Я заметил, что вторая запятая в приведенном выше примере — это точка, поэтому убедитесь, что каждый диапазон разделен запятой (обновлен пример кода). Если все в порядке, какая у вас версия Openpyxl? должна быть позже версии 2.4, раньше этой функции не существовало (лучше, если у вас последняя версия 3.1.2). Если версия актуальна, как вы ее реализуете и определяете, что она не работает?
Я получил последнюю версию openpyxl и делаю это:sheet.print_area = f'{printArea[0]},{printArea[1]}' print(sheet.print_area), вывод в консоли - 'Sheet1'!$A$1:$ Q$34,'Sheet1'!$A$40:$Q$75, но в Excel эта область печати не выбрана
Не знаю, почему вы указываете имя листа в диапазоне. Область печати применяется к листу, а не к книге, поэтому имя листа не требуется. Однако я обновил пример кода, чтобы использовать предоставленные вами значения области печати. Две области печати по-прежнему настроены правильно. Если имя рабочего листа, к которому вы применяете области печати, не было «Лист1», эти области печати все равно будут установлены на этом листе.
Это действительно работает. Проблема была в масштабировании. Область печати, которую вы предоставляете, работает правильно, спасибо.
Вы можете дать свой первый ответ. Я надеюсь, что это поможет многим людям
не работал при таком подходе