我正在尝试用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
我的朋友帮我做了这件事,并找到了一篇带有类似bug的德语帖子。我修复它的方法是用
o.Workbooks.OpenXML(wb_path)
替换o.Workbooks.Open(wb_path)
显然这是Excel的一个缺陷。在此之后,我还必须将
wb.Worksheets.Select()
(或类似的东西)更改为wb.Sheets.Select()
相关问题 更多 >
编程相关推荐