【问题标题】:openpyxl - set custom paper size for printingopenpyxl - 为打印设置自定义纸张尺寸
【发布时间】:2020-02-17 06:27:28
【问题描述】:

我想用openpyxl将纸张尺寸打印选项设置为A6自定义用户尺寸模板,代码如下:

    workbook = Workbook()
    ws = workbook.active
    ws.page_setup.paperSize = ws.PAPERSIZE_CUSTOM

不幸的是,从文档看来,唯一可用的枚举尺寸是:

PAPERSIZE_LETTER = '1'
PAPERSIZE_LETTER_SMALL = '2'
PAPERSIZE_TABLOID = '3'
PAPERSIZE_LEDGER = '4'
PAPERSIZE_LEGAL = '5'
PAPERSIZE_STATEMENT = '6'
PAPERSIZE_EXECUTIVE = '7'
PAPERSIZE_A3 = '8'
PAPERSIZE_A4 = '9'
PAPERSIZE_A4_SMALL = '10'
PAPERSIZE_A5 = '11'

我尝试将纸张高度和纸张宽度设置为我的自定义属性:

    #ws.page_setup.paperSize = ws.PAPERSIZE_A6
    ws.page_setup.paperHeight = '105mm'
    ws.page_setup.paperWidth = '148mm'

但是,当通过 excel 打印时,我仍然需要使用下拉对话框选择“A6”,然后才能打印到正确的纸张尺寸。

有什么办法可以做到这一点吗?或达到类似的效果?如果这很重要,我在 Mac OS 上。

【问题讨论】:

    标签: python openpyxl


    【解决方案1】:

    问题:设置自定义打印纸张尺寸

    从文档中,似乎唯一可用的枚举尺寸是...

    缺失值,来自 OpenOffice:

    • A670
    • 自定义0

    值的类型必须是int

    尝试使用:

    ws.page_setup.paperSize = 70
    # or
    ws.set_printer_settings(70, ORIENTATION_PORTRAIT)
    

    不改变格式 => 页面 => [Page]设置。


    这对我有用:

    ws.page_setup.paperHeight = '105mm'
    ws.page_setup.paperWidth = '148mm'
    

    格式 => 页面 => [Page] 设置更改为User: 并使用给定的Height/Width

    我建议使用以下

    ws.set_printer_settings(0, ORIENTATION_PORTRAIT)
    ws.page_setup.paperHeight = '105mm'
    ws.page_setup.paperWidth = '148mm'
    

    用 Python 测试:3.4.2 - openpyxl:2.4.1 - LibreOffice:5.2.7.2

    【讨论】:

    • 感谢您的建议,但 openpyxl-3.0.0 不走运,在 excel 中,打印对话框默认为 US Letter 用于未知枚举 0。不过,70 适用于 A6,这有助于我的一个用例。
    • @randomfigure: "print dialog just defaults to US Letter": 确认一下,试过ws.page_setup.usePrinterDefaults = False没有成功。
    • 是的,我尝试过ws.page_setup.usePrinterDefaults = False,但它会导致我的其他设置(例如scaleorientation)被忽略/重置。
    • Excel 还将打印机特定设置作为 BLOB 存储在 Excel 文件中:这些对 openpyxl 完全不透明。
    • 是的,就像实际的宏代码一样。它也是特定于操作系统的。 AFAIK 页面设置仅供 Excel 内部使用,这就是它有自己的预览窗格的原因。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-02
    • 2010-10-15
    相关资源
    最近更新 更多