python - Python Excel COM 互操作:强制无头模式并阻止用户输入
问题描述
使用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 活动。
解决方案
如本答案所述,在实例化 Excel 时问题消失了: https ://stackoverflow.com/a/36711595/4721381
推荐阅读
- sql - 如何从 2 个不同的 CTE 结果中取出值
- javascript - 更新软件包后 NPM 手动审查不起作用
- python - 在熊猫合并期间增加一个值
- tidy - tidy 将 xml 属性添加到 html 中的 lang 标记
- javascript - 单击一个 html 标记并显示另一个最初隐藏的标记
- java - Java 多线程 - 有限制的生产者消费者
- javascript - 由于 e.preventDefault(),我的表单验证不起作用
- java - Spring boot Jpa Entity,映射相同的引用列作为id和实体
- javascript - 无法使用 jsstore 批量更新 indexDb 数据
- oracle - 从 vb.net 应用程序重新调整值插入 Oracle DB