You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows任务计划程序执行Python脚本写入Excel时出错求助

问题描述

尝试通过Windows 11任务计划程序定时运行批处理文件,以执行Python脚本写入Excel文件。任务计划程序显示运行成功,但Python脚本始终在写入Excel环节报错。

已尝试的操作

  • 批处理文件内容:
py WriteToExcel.py
  • 使用两个管理员组账户运行任务,均配置了脚本及文件所在驱动器的完全权限,且所有文件已解除阻止
  • 批处理、Python脚本、Excel文件位于同一本地文件夹,通过命令行直接执行批处理完全正常,但任务计划程序执行时必然触发报错
  • Python脚本报错代码段:
try:
    wb = xw.Book("E:\Project\Python\DevResults.xlsx")
    # wb = xw.Book("DevResults.xlsx")
    WriteLog("Writing ", "DevResults.xlsx")
except:
    WriteLog("ERROR ", "Error writing to DevResults")

完整Python脚本

# imports
from sqlalchemy import create_engine
from sqlalchemy.engine import URL
import pandas as pd
import sqlalchemy as sa
import xlwings as xw
from UploadData import sftpMethod
from sqlalchemy import text
from  WriteLog import WriteLog

connection_string = "xxx"
connection_url = URL.create(
    "mssql+pyodbc", query={"odbc_connect": connection_string})

engine = sa.create_engine(connection_url)

qry = text("EXECUTE dbo.GatherData")
with engine.connect() as con:
    rs = con.execute(qry)

df = pd.read_sql_query(qry, engine)

# load workbook
app = xw.App(visible=False)

try:
    wb = xw.Book("E:\Project\Python\DevResults.xlsx")
    # wb = xw.Book("DevResults.xlsx")
    WriteLog("Writing ", "DevResults.xlsx")
except:
    WriteLog("ERROR ", "Error writing to DevResults")   #ALWAYS AN ERROR

ws = wb.sheets['Dev']

# Update workbook at specified range
ws.range('A2').options(index=False, header=False).value = df

# Close workbook
wb.save()
wb.close()
app.quit()

可能的解决方法

1. 修复路径转义问题

Python中\是转义字符,直接写路径会导致解析错误,改用以下两种写法之一:

  • 双反斜杠:"E:\\Project\\Python\\DevResults.xlsx"
  • 原始字符串:r"E:\Project\Python\DevResults.xlsx"

2. 明确Python解释器路径与工作目录

任务计划的环境变量可能与命令行不一致,修改批处理文件:

cd /d "E:\Project\Python"
"C:\Python39\python.exe" WriteToExcel.py

注:将C:\Python39\python.exe替换为你的Python实际安装路径

3. 配置Excel的DCOM权限

xlwings依赖Excel的COM服务,后台运行时需配置权限:

  1. 运行dcomcnfg打开组件服务
  2. 依次展开组件服务>计算机>我的电脑>DCOM配置,找到Microsoft Excel应用程序
  3. 右键选择属性,在安全选项卡中,给运行任务的账户分配启动和激活权限、访问权限的允许权限

4. 捕获具体错误信息

修改异常捕获逻辑,记录详细错误以便定位问题:

try:
    wb = xw.Book(r"E:\Project\Python\DevResults.xlsx")
    WriteLog("Writing ", "DevResults.xlsx")
except Exception as e:
    WriteLog("ERROR ", f"Error writing to DevResults: {str(e)}")

5. 调整任务计划程序配置

  • 在任务常规选项卡,勾选不管用户是否登录都要运行,同时勾选使用最高权限运行
  • 在操作选项卡,编辑启动程序的操作,在起始于中填写脚本所在文件夹路径:E:\Project\Python

内容的提问来源于stack exchange,提问作者SkyeBoniwell

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 13:00:27