Python Win32Com&Excel.Application无法在计划程序上保存

我遇到了使用win32com和任务计划程序的问题。 即使脚本执行成功,其他方面也不会发生Excel文件保存操作 。 这是在自动化机器上运行; 没有活动的login会话。 看下面的事实。

我是Win32COM新手,所以我可能不知道什么时候以及如何在Python中使用它。

背景

我有一个Python脚本,通过任务计划程序运行一夜,该程序从内部数据库收集数据并将其输出到报告中。 原来的脚本使用csv来输出数据,但我了解到win32com使用Excel VBA命令创buildxlsx文件。

我使用代码扩展了现有的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文件,另外一些则创build一个新的表格并使用下面的代码导出采集的数据:

 #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() 

事实

  1. 任务计划程序中的任务使用pipe理员帐户正确设置。 这由正在创build的脚本中的其他文件确认。
  2. login到自动化机器时运行脚本将正确创buildExcel文件并保存。
  3. 任务计划程序完成后报告0x1错误。

我深入到Win32Com,所以我期望我失去了一些东西。 为什么这个脚本不保存文件?