【问题标题】:How to get a range of cells while retaining their format from an .xlsx document?如何从 .xlsx 文档中获取一系列单元格,同时保留其格式?
【发布时间】:2020-06-15 21:26:32
【问题描述】:

我正在尝试使用以下代码打印从 xlsx 到 pdf 的一系列单元格

from win32com import client

xlApp = client.Dispatch("Excel.Application")
books = xlApp.Workbooks.Open('C:\\Users\....\\2020.xlsx')
ws = books.Worksheets['TEST']
ws.Visible = 1
ws.ExportAsFixedFormat(0, 'C:\\Users\.....\\trial.pdf')

此代码运行良好。但是,我想调整以仅打印从A1K50 的单元格;并且在转换为 PDF 时应保留 excel 中的单元格格式。这可能吗?

【问题讨论】:

  • 我不是专家,但使用可以读取 Excel 文件的几个第三方模块之一(比使用 win32com)可能更容易。
  • 根据我的研究,其他第三方产品需要将 excel 转换为 html 并执行所有自定义样式然后打印为 pdf。单元格范围没有直接打印

标签: python excel win32com


【解决方案1】:

使用 python 代码与其他第三方包进行格式化非常困难。当格式化需要大量工作或格式化可能是动态的并且您可能只需要按原样打印 excel 时,以下解决方案很有用:

这个解决方案是使用下面的代码完成的(注意技巧是使用IgnorePrintAreas=False),但是,我想打印的范围我在excel上将它设置为printable range。这将使用 Excel 中存在的格式打印我感兴趣的范围。

from win32com import client
xlApp = client.Dispatch("Excel.Application")
books = xlApp.Workbooks.Open('C:\\Users\....\\2020.xlsx')
ws = books.Worksheets['TEST']
ws.Visible = 1
ws.ExportAsFixedFormat(0, 'C:\\Users\.....\\trial.pdf',IgnorePrintAreas=False)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-03
    • 1970-01-01
    • 2016-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多