如何使用Python将Excel转换为PDF

3

我有一个主文件夹,里面有一些 .xlsx、.ipynb 和 .jpeg 文件以及一些子文件夹。

现在我想把主文件夹中的所有 .xlsx 文件转换成 PDF 文件。

这是我每天都要做的例行工作,如果您能教我如何使用 Python 完成它,我将不胜感激。

*所有文件的第一个工作表中都有一些数据

谢谢


1
似乎有帮助:https://dev59.com/_K7la4cB1Zd3GeqPb2Lq#61587091 - stilManiac
不幸的是,wkhtmltopdf 不支持 Python3。 - sam_sam
2个回答

6

请问您已经尝试过什么了吗?

我建议尝试使用pywin32。

  1. 下载pywin32
python3 -m pip install pywin32

写一个脚本来自动化。
import win32com.client
from pywintypes import com_error

# Path to original excel file
WB_PATH = r'~/path/to/file.xlsx'
# PDF path when saving
PATH_TO_PDF = r'~/path/to/file.pdf'
excel = win32com.client.Dispatch("Excel.Application")
excel.Visible = False
try:
    print('Start conversion to PDF')
    # Open
    wb = excel.Workbooks.Open(WB_PATH)
    # Specify the sheet you want to save by index. 1 is the first (leftmost) sheet.
    ws_index_list = [1,2,3,4,5,6,7,8,9,10,11,12]
    wb.WorkSheets(ws_index_list).Select()
    # Save
    wb.ActiveSheet.ExportAsFixedFormat(0, PATH_TO_PDF)
except com_error as e:
    print('failed.')
else:
    print('Succeeded.')
finally:
    wb.Close()
    excel.Quit()

是的,我在谷歌搜索时看到了这个脚本,但是无法从这里实现将多个Excel文件放入一个文件夹中。 - sam_sam
使用 Conda Python 3.8.3 和 pywin32 v227,无法通过 Dispatch: pywintypes.com_error: (-2147023728, 'Element not found.', None, None) - xtian
嗨@xtian,您必须安装Excel,因为它实际上会打开Excel并自动将其导出为PDF。要检查错误代码“-2147023728”的含义,此答案似乎很有帮助。 - Thisas
嗨@sam_sam,你能详细解释一下你遇到的问题吗?你是否遇到了任何错误,或者它只是没有提供你所希望的结果。非常抱歉回复晚了,我已经有一段时间没有打开stackoverflow了。 - Thisas
非常感谢。我花了整个昨晚寻找解决方案。 - Gilbert
很高兴能帮助你,@Gilbert,希望最终能为你解决问题。 - Thisas

-5

尝试像这样:

saveFormat = self.SaveFormat

workbook = self.Workbook(self.dataDir + "Book1.xls")

#Save the document in PDF format

workbook.save(self.dataDir + "OutBook1.pdf", saveFormat.PDF)

\# Print message

print "\n Excel to PDF conversion performed successfully."

“.self”是什么?它给我这个错误:“NameError: name 'self' is not defined”。 - sam_sam
2
这段代码来自一个类,所以才会出现 "self"。作者应该对代码进行修订。 - the_economist

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接