Python - 将 XLSX 转换为 PDF

新手上路,请多包涵

我一直在我的开发服务器中使用 win32com 模块轻松地从 xlsx 转换为 pdf

 o = win32com.client.Dispatch("Excel.Application")
o.Visible = False
o.DisplayAlerts = False
wb = o.Workbooks.Open("test.xlsx")))
wb.WorkSheets("sheet1").Select()
wb.ActiveSheet.ExportAsFixedFormat(0, "test.pdf")
o.Quit()

但是,我已经在未安装 Excel 应用程序的生产服务器中部署了我的 Django 应用程序,它引发了以下错误:

 File "C:\virtualenvs\structuraldb\lib\site-packages\win32com\client__init__.p
y", line 95, in Dispatch
    dispatch, userName = dynamic._GetGoodDispatchAndUserName(dispatch,userName,c
lsctx)
  File "C:\virtualenvs\structuraldb\lib\site-packages\win32com\client\dynamic.py
", line 114, in _GetGoodDispatchAndUserName
    return (_GetGoodDispatch(IDispatch, clsctx), userName)
  File "C:\virtualenvs\structuraldb\lib\site-packages\win32com\client\dynamic.py
", line 91, in _GetGoodDispatch
    IDispatch = pythoncom.CoCreateInstance(IDispatch, None, clsctx, pythoncom.II
D_IDispatch)
com_error: (-2147221005, 'Invalid class string', None, None)

在Python中从 xlsx 转换为 PDF 有什么好的选择吗?

我已经用 PDFWriter 测试了 xtopdf,但是使用这个解决方案你需要读取和迭代范围并逐行写入。不知道有没有类似win32com.client的更直接的解决方案。

谢谢!

原文由 DavidRguez 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 632
1 个回答

由于我原来的 答案 被删除了并且最终有点用处,所以我在这里重新发布。

您可以分 3 步完成:

  1. 对熊猫表现出色: pandas.read_excel
  2. 熊猫到 HTML: pandas.DataFrame.to_html
  3. HTML 到 pdf: python-pdfkit (git)python-pdfkit (pypi.org)
 import pandas as pd
import pdfkit

df = pd.read_excel("file.xlsx")
df.to_html("file.html")
pdfkit.from_file("file.html", "file.pdf")

安装:

 sudo pip3.6 install pandas xlrd pdfkit
sudo apt-get install wkhtmltopdf

原文由 Thomas Devoogdt 发布,翻译遵循 CC BY-SA 4.0 许可协议

推荐问题