Python Excel COM Interop:强制无头模式并阻止用户输入

时间:2019-02-20 09:55:25

标签: python excel win32com

使用win32com与Excel交互:

import win32com.client
...
self.excel = win32com.client.gencache.EnsureDispatch("Excel.Application")
self.workbook = self.excel.Workbooks.Add()
#Modify the workbook...
self.workbook.SaveAs(...)
self.excel.Quit()

这很好用,只要在脚本启动之前没有Excel实例在运行,它就会在后台(无头模式)在后台生成一个新的Excel文档。

但是,如果用户已经打开Excel,则由Python脚本创建的Excel实例将变为可见。如何防止这种情况发生?更糟糕的是,当用户在两个Excel实例中的任何一个中执行任何操作(例如单击一个单元格)时,脚本都会失败:

(ERROR): pywintypes.com_error: (-2146777998, 'OLE error 0x800ac472', None, None)

是否有一种方法可以强制实施无头模式,尤其是防止GUI中的用户操作与正在运行的Python脚本冲突?换句话说,我希望脚本创建的Excel实例完全独立于可能正在发生的任何其他Excel-Activity。

1 个答案:

答案 0 :(得分:0)

按以下答案所述实例化Excel时问题消失了: https://stackoverflow.com/a/36711595/4721381