Python Win32Com&Excel.Application无法保存在调度程序上

问题描述 投票:5回答:1

我在使用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()

事实

  1. [任务计划程序中的任务已使用管理员帐户正确设置。这可以通过正在创建的脚本中的其他文件来确认。
  2. 登录到自动化机器中时运行脚本将正确创建并保存Excel文件。
  3. 任务计划程序在完成时报告0x1错误。

我先是进入Win32Com,所以我希望我缺少一些东西。为什么该脚本不保存文件?

python excel com scheduled-tasks win32com
1个回答
0
投票

我的信誉度不足,无法对您的实际问题发表评论。但是,你有没有想过?我目前正面临着同样的问题。

© www.soinside.com 2019 - 2024. All rights reserved.