我在使用win32com
和任务计划程序时遇到问题。 尽管脚本的其他方面已成功执行,但仍未进行Excel File保存操作。这是在自动化机器上运行的;没有活动的登录会话。请参阅以下事实。
我是Win32COM的新手,所以我可能不明白何时以及如何在Python中使用它。
我有一个Python脚本,该脚本通过Task Scheduler在夜间运行,该任务从内部数据库收集数据并将其输出到报告中。原始脚本使用csv
输出数据,但我了解了win32com
使用Excel VBA命令创建xlsx文件的信息。
我用代码扩展了现有的chronjob,以包装使用pymysql
的现有数据库操作:
import win32com.client as win32
try:
excel = win32.gencache.EnsureDispatch('Excel.Application')
excel.DisplayAlerts = False
wb = excel.Workbooks.Add()
basesht = wb.Sheets('Sheet1')
except:
#E-mail notification of failure.
sys.exit()
该脚本执行了许多数据库操作,这些操作需要几分钟。有些使用csv
导出到.csv,有些使用以下代码创建新工作表并导出获取的数据:
#For Each Report in Report Set (DB = Object extending pymysql)
resultSet = db.qryfetchall()
headers = list(resultSet[0].keys())
r, c = 1, len(headers)
wksht.Range(wksht.Cells(r,1),wksht.Cells(r,c)).Value = headers
for row in resultSet:
r += 1
wksht.Range(wksht.Cells(r,1),wksht.Cells(r,c)).Value = [str(i) for i in list(row.values())]
wksht.Columns.AutoFit()
else:
wksht.Range("A1").Value = "No Results"
程序以此结尾:
if wb.Sheets.Count > 1:
basesht.Delete()
wb.SaveAs(consolidated) #consolidated = save path
excel.Application.Quit()
我先是进入Win32Com,所以我希望我缺少一些东西。为什么该脚本不保存文件?
我的信誉度不足,无法对您的实际问题发表评论。但是,你有没有想过?我目前正面临着同样的问题。