【发布时间】:2019-12-15 16:58:37
【问题描述】:
将 python3 与 openpyxl 一起使用。是否可以为(纸张)打印格式化工作表?即我需要将 excel 默认值更改为双面打印、横向打印、打印整个工作簿等等等,这样我就可以打开 excel 文件并点击打印。
简单的是或否答案很好,我看到工作表类下有一些方法,例如'A3' 或 'Executive' 理论上应该对应于纸张大小,但它们似乎是整数的字符串值?
【问题讨论】:
标签: openpyxl
将 python3 与 openpyxl 一起使用。是否可以为(纸张)打印格式化工作表?即我需要将 excel 默认值更改为双面打印、横向打印、打印整个工作簿等等等,这样我就可以打开 excel 文件并点击打印。
简单的是或否答案很好,我看到工作表类下有一些方法,例如'A3' 或 'Executive' 理论上应该对应于纸张大小,但它们似乎是整数的字符串值?
【问题讨论】:
标签: openpyxl
是的,这可能。
这是一个非常有效的问题,并且足够精确,可以回答。
在文档中,有这个部分:
https://openpyxl.readthedocs.io/en/stable/_modules/openpyxl/worksheet/page.html#PrintPageSetup
以编程方式定义数据:
您可以通过扩展其类 PrintPageSetup 来自定义您的 XLSX,传递您的值,例如:
wb = openpyxl.Workbook()
ws = wb.get_active_sheet()
ws.title = "Your Tab Title"
# Printer Settings
ws.page_setup.orientation = ws.ORIENTATION_LANDSCAPE
ws.page_setup.paperSize = ws.PAPERSIZE_A3
# Property settings
wsprops = ws.sheet_properties
wsprops.tabColor = "1072BA"
wsprops.filterMode = False
wsprops.pageSetUpPr = PageSetupProperties(fitToPage=True, autoPageBreaks=False)
wsprops.outlinePr.summaryBelow = False
wsprops.outlinePr.applyStyles = True
将数据填充到准备好的模板中:
此外,如果您愿意,您可以在 Excel 中准备文档,将其保存为模板,然后通过 openpyxl 打开它并动态添加您的实际数据。
文档中也对此进行了概述: https://openpyxl.readthedocs.io/en/stable/tutorial.html#loading-from-a-file
from openpyxl import load_workbook
wb2 = load_workbook('test.xlsx')
print wb2.get_sheet_names()
['Sheet2', 'New Title', 'Sheet1']
【讨论】:
这个问题实在是太笼统了。在 Excel 中有许多与打印相关的设置,但您可能应该查看文档:https://openpyxl.readthedocs.io/en/latest/print_settings.html
【讨论】:
openpyxl.worksheet 中的page 模块。请参阅规范中的 18.3.1.63 pageSetup(页面设置设置)。