Python-Excel - win32com 具有定义的名称或 openpyxl 打印?

发布于 2025-01-09 12:05:56 字数 539 浏览 1 评论 0原文

我一直在通过 Python 自动化一些大型 Excel 电子表格。我需要通过创建用于提供输出的特定 Excel 工具获得大量输入。我的电子表格已定义输入参数的名称(即 Area 而不是 C5)。我的输入存储在字典中,其中包含输入参数的键(区域是键)。我正在尝试将带有名称引用的输入传递给工具电子表格。我已经用 openpyxl 成功做到了这一点。然而,在每次迭代之后,我希望 python 将输出打印到 Pdf 中。不幸的是,我没有找到使用 openpyxl 的方法,只能使用 win32com 调度来实现该功能。

不幸的是,当我运行 openpyxl 和 win32com 的组合时,我丢失了一些格式(某些单元格混合了符号和字母,而 openpyxl 将所有单元格都转换为相关单元格中的符号)。

这里的问题是:

  1. 有没有办法通过openpyxl打印文件?

或者

  1. 是否可以将带有单元格名称的输入值传递到win32com(我只找到了带有单元格地址而不是单元格名称的选项),以便我废弃openpyxl?

非常感谢!

I have been automasing some big Excel spreadsheets through Python. I need to get a big input through a specific Excel tool created to provide an output. My spreadsheets have defined names for the input parameters (ie. Area insteead of C5). My input is stored in a dictionary with the keys of input parameters (Area is a key). I am trying to pass the input with name reference to the tool spreadsheet. I have managed to do that with openpyxl. However, after every itteration, I want python to print me the output to Pdf. Unfortunately, I didn't find a way with openpyxl and have resorted to putting win32com dispatch for that function.

Unfortunately when I run the combo of openpyxl and win32com , I lose some of the formating (someof the cells have a mixture of symbols and letters and openpyxl turns all to symbols in the relative cell).

The question here is:

  1. Is there a way to print the file via openpyxl?

or

  1. Is it possible to pass the input value with cell name into win32com (I have found only an option with cell address not cell name) so that I scrap the openpyxl?

Much appreciated!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

爱*していゐ 2025-01-16 12:05:56

您无法使用 openpyxl 打印为 PDF,只能根据 Openpyxl 文档更改打印设置。
但是,您可以使用 win32com 打印为 PDF,

wb.ActiveSheet.ExportAsFixedFormat(0, <path>/<pdf_filename.pdf>)

其中 0 或 1 代表类型,因此 0 是 pdf;

class FixedFormatType:
    xlTypePDF = 0  # from enum XlFixedFormatType
    xlTypeXPS = 1  # from enum XlFixedFormatType

如果工作表中的单元格 C5 定义了名称“Area”,并且希望在 win32com 中引用其值,则语法为:

cell_value = wb.Names("Area").RefersToRange(1).Value

You cannot print to PDF using openpyxl only change print settings per the Openpyxl Documentation.
However you can print to PDF using win32com

wb.ActiveSheet.ExportAsFixedFormat(0, <path>/<pdf_filename.pdf>)

where 0 or 1 represent the type, so 0 is pdf;

class FixedFormatType:
    xlTypePDF = 0  # from enum XlFixedFormatType
    xlTypeXPS = 1  # from enum XlFixedFormatType

If you have cell C5 in your sheet with defined name 'Area' and wish to reference its value in win32com the syntax would be;

cell_value = wb.Names("Area").RefersToRange(1).Value
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文