使用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。