当由win32com打开时,Excel提示“名称不能与内置名称相同”,但当由我手动打开时,Excel提示“名称不能与内置名称相同”

2024-04-25 01:19:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试用python自动化一些事情,其中一个步骤是使用“win32com.client”模块打开.xlsx文件,然后将一些工作表打印成PDF。 如果我已经在Excel中打开了文件,那么一切都很好,但是如果Python脚本想要打开它,Excel会要求我为“\u FilterDatabase”和“Print\u Area”设置一个不同的名称,即使我可以手动打开它而没有任何问题

如果我确实更改了名称,那么我必须再次设置所有打印区域。使用新打印区域保存文件会导致相同问题。我不知道为什么用win32com打开文件与手动打开不同

以下是用于打开文件的简单代码:

import win32com.client

wb_path = r'D:\Users\Agenerick\Documents\Projects\sprawozdania-gen\excel\a.xlsx'
o = win32com.client.Dispatch("Excel.Application")
o.Visible = True
o.Workbooks.Open(wb_path)

我尝试过使用ReadOnly标志和xlwings,甚至在Powershell中使用了ComObject,没有区别,但是,使用子进程打开文件很好,但是我无法真正隐藏窗口。我也没有安装任何其他版本的Excel


Tags: 模块文件path脚本名称client区域pdf
1条回答
网友
1楼 · 发布于 2024-04-25 01:19:30

我的朋友帮我做了这件事,并找到了一篇带有类似bug的德语帖子。我修复它的方法是用o.Workbooks.OpenXML(wb_path)替换o.Workbooks.Open(wb_path)

显然这是Excel的一个缺陷。在此之后,我还必须将wb.Worksheets.Select()(或类似的东西)更改为wb.Sheets.Select()

相关问题 更多 >