我有一个自托管的windows runner,我试图运行一个工作流,该工作流执行一个创建Excel文件的Python脚本。工作流的.yaml代码:
name: test
run-name: test
on: [push]
jobs:
create-excel:
runs-on: self-hosted
steps:
- name: Check out repository
uses: actions/checkout@v3
- name: Create excel
run: python create_excel.py
该脚本通过COM接口创建Excel文档(必须使用COM,我不能切换到pandas / xlrd或其他包):
import os
import win32com.client as win32
excel = win32.Dispatch("Excel.Application")
workbook = excel.Workbooks.Add()
workbook.SaveAs(os.getcwd() + '\\Created.xlsx')
workbook.Close()
excel.Quit()
如果我在本地运行python脚本,一切都很好。工作流崩溃,但:它可以创建Excel COM对象和新文件,但COM对象无法保存文件:
Traceback (most recent call last):
File "C:\actions-runner\_work\TestRepo\create_excel.py", line 8, in <module>
workbook.SaveAs(os.getcwd()+'\\Created.xlsx')
File "<COMObject Add>", line 4, in SaveAs
pywintypes.com_error: (-2147352567, 'Exception occurred.', (0, 'Microsoft Excel', 'SaveAs method of Workbook class failed', 'xlmain11.chm', 0, -2146827284), None)
2条答案
按热度按时间cigdeys31#
尝试在
windows-latest
(指向Windows Server 2022)runner上重现您的问题,但运行正常。显然,这和你的
self-hosted
跑步机有关。在浏览了其他类似的线程之后,我发现您可能需要验证您是否具有对该路径的写访问权限。以下是我的工作流程:
输出:
vyswwuz22#
我设法找到了解决办法:您需要更改Excel的DCOM设置: