Python 使用xlwings将Excel打印为pdf

Python 使用xlwings将Excel打印为pdf,python,xlwings,Python,Xlwings,我正在尝试使用xlwings将Excel文件打印为pdf。我正在为此使用excelapi 我试过两种方法: 1/使用带有PrintToFile参数的PrintOut()调用: wb.api.PrintOut(PrintToFile=True, PrToFileName="5.pdf", Preview=True) 这里的问题是Excel只是打印文件,而忽略了我的其他设置 2/使用ExportAsFixedFormat wb.api.ExportAsFixedFormat(0, str(Sw

我正在尝试使用
xlwings
将Excel文件打印为pdf。我正在为此使用
excelapi

我试过两种方法:

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)