python - 使用 xlwings 将 Excel 打印为 pdf
问题描述
我正在尝试将 Excel 文件打印为 pdf 格式xlwings
。我正在使用excel api
这个。
我已经通过两种方式进行了尝试:
1/ 使用PrintOut()
带PrintToFile
参数的调用:
wb.api.PrintOut(PrintToFile=True, PrToFileName="5.pdf", Preview=True)
这里的问题是 Excel 只是打印文件,而忽略了我的其他设置。
2/ 使用ExportAsFixedFormat
wb.api.ExportAsFixedFormat(0, str(SwmId) + ".pdf")
这里 Excel 闪了一下,但最后什么也没做。
为了记录:我不能使用宏并从 Python 调用它,因为我有大约一千个这样的 Excel 文件。所以,我不能把宏放在每一个中。在 VBA 中创建自定义函数而不是在每个文件中调用它可能是一种解决方法。但是,老实说,如果我可以直接从 Python 中用一行代码来做这件事会更容易。
解决方案
下面是一个独立的代码示例,说明在我的机器上将 excel 工作簿打印为 pdf(使用该ExportAsFixedFormat
方法):
# Environment
# -----------
# OS: Windows 10
# Excel: 2013
# python: 3.7.4
# xlwings: 0.15.8
import os
import xlwings as xw
# Initialize new excel workbook
book = xw.Book()
sheet = book.sheets[0]
sheet.range("A1").value = "dolphins"
# Construct path for pdf file
current_work_dir = os.getcwd()
pdf_path = os.path.join(current_work_dir, "workbook_printout.pdf")
# Save excel workbook to pdf file
print(f"Saving workbook as '{pdf_path}' ...")
book.api.ExportAsFixedFormat(0, pdf_path)
# Open the created pdf file
print(f"Opening pdf file with default application ...")
os.startfile(pdf_path)
推荐阅读
- javascript - 我的 Visual Studio 代码无法识别“异步”关键字
- typescript - 根据打字稿中的其他已知对象值缩小对象值的类型
- python - 访问两个协程之间的公共共享变量
- reactjs - 材质 UI Snackbar autoHideDuration 为 null
- html - 当步长大于剩余值时,HTML Range 输入不会一直填充
- sprockets - 在请求期间创建新样式表然后立即要求它会产生错误
- ruby-on-rails - 定义了 2 个模型之间的一对一关系,但似乎仍然能够建立一对多
- python - 命令提示符无法识别 PATH 中的更改。我该如何解决?
- python - 在 python 中清理这个 int64 变量
- matlab - 如何以编程方式导出两个模型的 visdiff 结果(Matlab 版本 <= R2016b)?