【问题标题】:Python script reading an Excel file stops executing in Task Scheduler读取 Excel 文件的 Python 脚本在任务计划程序中停止执行
【发布时间】:2015-06-24 18:21:22
【问题描述】:

由在 Windows Server 2012(64 位)上运行的任务计划程序执行的 python 2.7 脚本在打开现有 XLS 文件时不会引发异常。创建调度工作正常(尝试/除了未显示):

xlApp = win32com.client.DispatchEx('Excel.Application')  

但在那之后:

try:
    log_message("Opening Excel Workbook object for the attachment using password '%s'" % email_found['PASSWORD'])
    workbook = xlApp.Workbooks.Open(attachment, False, False, None, email_found['PASSWORD'])
    log_message("Workbook opened, produced object with type '%s'" % type(workbook).__name__)
except Exception, e:
    log_message("Exception opening workbook")
    message = "Exception raised : %s" % str(e)
    log_message(message, 'ERROR')
    xlApp.Quit()
    return 22  

log_message() 写入日志文件并可选择发送电子邮件。出现第一条消息,这就是日志文件的结尾。 Excel 在任务管理器中显示为正在运行,而任务在任务计划程序中显示为正在运行。

同样的脚本,当由同一用户在命令 shell 中运行时,成功完成。同样的脚本,当在 Win7 机器上的任务计划程序中运行时,成功完成。

其他信息:

  1. 其帐户运行任务的用户是本地管理员。我已经尝试了两个这样的用户,但两者都发生了同样的事情。
  2. 盒子上只安装了一个 Excel (2010) 实例。
  3. 完整路径在“附件”中的文件肯定存在,可以用Excel交互打开。
  4. 存储在 email_found['PASSWORD'] 的字符串包含 XLS 文件的正确密码。
  5. 我发现一些帖子提到了拥有这些目录中的一个或另一个(或两者)的必要性:
    C:\Windows\SysWOW64\config\systemprofile\Desktop
    C:\Windows\System32\config\systemprofile\Desktop
    两者都在我面前(它们是空的)。
  6. 我在 Windows 上运行此脚本,而不是在我们首选的 Linux 平台上使用 xlrd,因为 xlrd 不支持受密码保护的 XLS 文件。 XLS 文件由客户每周发送给我们。

欢迎提出任何建议,提前致谢。

【问题讨论】:

  • 'attachment' 是 XLS 文件的完整路径;我将制作一个不受密码保护的版本。感谢您的反馈。
  • 我已经针对非密码保护的 XLS 文件运行了一部分代码。同样的事情发生:执行停止在调用 xlApp.Workbooks.Open()
  • 我已经使用受密码保护和不受密码保护的文件对此进行了测试,这些文件存储在本地磁盘和服务器共享上(使用 UNC 名称访问)。只要 XLS 文件在本地存储,该脚本就可以工作。追逐那个,我在superuser上找到了这篇文章

标签: python-2.7 win32com import-from-excel


【解决方案1】:

我遇到了类似的问题。但是当我在 TaskScheduler 中配置任务时,我将配置从“无论用户是否登录都运行”更改为“用户登录时运行”。它奏效了!我的脚本转到 OneDrive 文件夹并从选定的 excel 中读取和提取数据。

【讨论】:

  • 添加一些代码进行演示怎么样?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-17
  • 2014-12-23
  • 2023-02-07
  • 2023-02-21
  • 2018-09-09
  • 1970-01-01
相关资源
最近更新 更多