【问题标题】:openpyxl format worksheet for printing?用于打印的openpyxl格式工作表?
【发布时间】:2019-12-15 16:58:37
【问题描述】:

将 python3 与 openpyxl 一起使用。是否可以为(纸张)打印格式化工作表?即我需要将 excel 默认值更改为双面打印、横向打印、打印整个工作簿等等等,这样我就可以打开 excel 文件并点击打印。

简单的是或否答案很好,我看到工作表类下有一些方法,例如'A3' 或 'Executive' 理论上应该对应于纸张大小,但它们似乎是整数的字符串值?

【问题讨论】:

    标签: openpyxl


    【解决方案1】:

    是的,这可能。

    这是一个非常有效的问题,并且足够精确,可以回答。

    在文档中,有这个部分:

    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']
    

    【讨论】:

      【解决方案2】:

      这个问题实在是太笼统了。在 Excel 中有许多与打印相关的设置,但您可能应该查看文档:https://openpyxl.readthedocs.io/en/latest/print_settings.html

      【讨论】:

      • 是的,打印支持确实有限。我需要打印所有行适合页面的单面 8"x14" 横向。不幸的是,我对 Python 的熟练程度还不够,无法为解决方案做出贡献。
      • 听起来您想访问打印机驱动程序管理的某些内容。这不能从 Python 完成。否则请查看openpyxl.worksheet 中的page 模块。请参阅规范中的 18.3.1.63 pageSetup(页面设置设置)。
      猜你喜欢
      • 2022-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-31
      相关资源
      最近更新 更多