通过COM接口打印Excel工作表

5 投票
2 回答
2916 浏览
提问于 2025-04-17 12:05

我用Python的xlwt库编程生成了一堆Excel表格,一切都很顺利。但现在我需要把这些表格都转换成PDF格式。我尝试使用pywin32和com接口来实现这个转换。我的方法大致是这样的:

import win32com.client
o = win32com.client.Dispatch("Excel.Application")
o.Visible = 1
wb = o.Workbooks.Open('foo.xls')
ws = wb.Worksheets[1]
ws.printout()

但是不幸的是,当我这样做的时候,会弹出一个Adobe打印机的窗口,询问我想把PDF保存到哪个路径。如果我每一页都要手动输入路径或者点击确认,那就失去了编程自动化的意义。有没有办法让我在Python代码里直接输入这个路径,而不是手动输入?有没有更好的方法可以把这些工作簿里的每个表格转换成PDF呢?非常感谢,
Alex

2 个回答

0

你可以选择“另存为PDF”或者“打印为PDF”。这样可以绕过你打印驱动的问题。

4

与其使用 PrintOut 方法,不如用 ExportAsFixedFormat。这样你可以指定文件格式为PDF,并且可以给文件起个名字。试试这个:

ws.ExportAsFixedFormat(0, 'c:\users\alex\foo.pdf')

撰写回答