openpyxl-设置打印的自定义纸张尺寸

时间:2019-10-21 07:30:28

标签: python openpyxl

我想使用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。

1 个答案:

答案 0 :(得分:1)

  

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

从文档来看,似乎唯一可用的枚举大小是...

  

OpenOffice中缺少的值:

     
      
  • A6 70
  •   
  • 自定义0
  •   
     

值必须为int类型。

试图使用以下方法进行设置:

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

不会更改 Format => Page => [Page]设置。


这对我有用:

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

Format => Page => [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