使用 xlwings 打印 Excel 为 pdf
Print Excel to pdf with xlwings
我正在尝试使用 xlwings
将 Excel 个文件打印为 pdf。为此,我正在使用 excel api
。
我试过两种方法:
1/ 使用带有 PrintToFile
参数的 PrintOut()
调用:
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)
xlwings 文档推荐使用 xw.App():
from pathlib import Path
import xlwings as xw
import os
with xw.App() as app:
# user will not even see the excel opening up
app.visible = False
book = app.books.open(path_to_excelfile)
sheet = book.sheets[0]
sheet.page_setup.print_area = '$A:$Q'
sheet.range("A1").value = "experimental"
# Construct path for pdf file
current_work_dir = os.getcwd()
pdf_file_name = "pdf_workbook_printout.pdf"
pdf_path = Path(current_work_dir, pdf_file_name)
# Save excel workbook as pdf and showing it
sheet.to_pdf(path=pdf_path, show=True)
我正在尝试使用 xlwings
将 Excel 个文件打印为 pdf。为此,我正在使用 excel api
。
我试过两种方法:
1/ 使用带有 PrintToFile
参数的 PrintOut()
调用:
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)
xlwings 文档推荐使用 xw.App():
from pathlib import Path
import xlwings as xw
import os
with xw.App() as app:
# user will not even see the excel opening up
app.visible = False
book = app.books.open(path_to_excelfile)
sheet = book.sheets[0]
sheet.page_setup.print_area = '$A:$Q'
sheet.range("A1").value = "experimental"
# Construct path for pdf file
current_work_dir = os.getcwd()
pdf_file_name = "pdf_workbook_printout.pdf"
pdf_path = Path(current_work_dir, pdf_file_name)
# Save excel workbook as pdf and showing it
sheet.to_pdf(path=pdf_path, show=True)