WIN32COM saving/exporting 多张 PDF
WIN32COM saving/exporting multiple sheets as PDF
我想 select 工作簿中的多个工作表(按特定顺序)并使用 win32com 将它们导出为单个 PDF。我试过了:
wb_HC.Sheets(['sheetname1','sheetname2']).ExportAsFixedFormat(0, workdir+'\'+run_date+'_MD_Summary.pdf')
但这不起作用。我知道在 VBA 中可以将工作表称为工作表数组:
Array(sheets(1), sheets(2))
但我认为这不等同于 Python 中的 list()。
考虑使用 Python 的列表 []
方法,它可以对应于 VBA 的 Array()
。将其应用于传递 Sheet 索引号或 Sheet 名称的 Worksheets()
方法。然后在 ExportAsFixedFormat
中用 xlApp.ActiveSheet
:
限定方法
import os
import win32com.client
workdir = "C:\Path\To\Working\Directory"
rundate = '2016-09-11'
try:
xlApp = win32com.client.Dispatch("Excel.Application")
wb = xlApp.Workbooks.Open(os.path.join(workdir, 'ExcelFile.xlsx'))
wb.Worksheets(["Sheet1", "Sheet2"]).Select()
xlTypePDF = 0
xlQualityStandard = 0
xlApp.ActiveSheet.ExportAsFixedFormat(xlTypePDF,
os.path.join(workdir, run_date+'_MD_Summary.pdf'),
xlQualityStandard, True, True)
except Exception as e:
print(e)
finally:
wb.Close(False)
xlApp.Quit
wb = None
xlApp = None
顺便说一下,请务必将您的处理包装在 try/except/finally
块中。否则,您遇到的任何错误都会在后台进程中留下 Excel.exe 运行。在此设置中,脚本始终关闭工作簿并取消初始化 COM 对象,无论出现什么错误。 VBA 中的对应项是 On Error Goto ...
处理(另一种最佳实践方法)。
我想 select 工作簿中的多个工作表(按特定顺序)并使用 win32com 将它们导出为单个 PDF。我试过了:
wb_HC.Sheets(['sheetname1','sheetname2']).ExportAsFixedFormat(0, workdir+'\'+run_date+'_MD_Summary.pdf')
但这不起作用。我知道在 VBA 中可以将工作表称为工作表数组:
Array(sheets(1), sheets(2))
但我认为这不等同于 Python 中的 list()。
考虑使用 Python 的列表 []
方法,它可以对应于 VBA 的 Array()
。将其应用于传递 Sheet 索引号或 Sheet 名称的 Worksheets()
方法。然后在 ExportAsFixedFormat
中用 xlApp.ActiveSheet
:
import os
import win32com.client
workdir = "C:\Path\To\Working\Directory"
rundate = '2016-09-11'
try:
xlApp = win32com.client.Dispatch("Excel.Application")
wb = xlApp.Workbooks.Open(os.path.join(workdir, 'ExcelFile.xlsx'))
wb.Worksheets(["Sheet1", "Sheet2"]).Select()
xlTypePDF = 0
xlQualityStandard = 0
xlApp.ActiveSheet.ExportAsFixedFormat(xlTypePDF,
os.path.join(workdir, run_date+'_MD_Summary.pdf'),
xlQualityStandard, True, True)
except Exception as e:
print(e)
finally:
wb.Close(False)
xlApp.Quit
wb = None
xlApp = None
顺便说一下,请务必将您的处理包装在 try/except/finally
块中。否则,您遇到的任何错误都会在后台进程中留下 Excel.exe 运行。在此设置中,脚本始终关闭工作簿并取消初始化 COM 对象,无论出现什么错误。 VBA 中的对应项是 On Error Goto ...
处理(另一种最佳实践方法)。