如何用Python关闭SAP导出的特定Excel工作簿或阻止用户输入?
问题与解决方案:关闭SAP导出的特定Excel工作簿
问题描述
- 开发了带基础UI的Python程序,支持用户选择SAP语言和机器序列号,点击「运行」后执行SAP脚本导出对应机器的物料清单(BOM)
- 导出的BOM会自动在Excel中打开,但后续需要读取该文件计算面积,因此需自动关闭这个由SAP打开的Excel工作簿
- 当前采用模拟按下
alt+f4的方式关闭,但仅在用户未进行键鼠操作时有效 - 存在两个疑问:
- 能否通过Python关闭Excel中特定工作簿?尝试过xlsxwriter,但仅能关闭该库创建的工作簿;使用os库关闭
EXCEL.EXE不可行,因为工作环境中员工常保持Excel开启,不能关闭所有工作簿 - 若无法关闭特定工作簿,能否在程序运行时阻止用户输入以避免执行错误?
- 能否通过Python关闭Excel中特定工作簿?尝试过xlsxwriter,但仅能关闭该库创建的工作簿;使用os库关闭
已解决方案(2024年2月2日更新)
使用win32com库连接Excel应用程序,直接定位并关闭目标工作簿,代码片段如下:
Excel = win32com.client.Dispatch("Excel.Application") wb = Excel.Workbooks.Open(file_complete_path_pintura) wb.Close(False) time.sleep(1)
- 实现逻辑:通过
win32com获取当前运行的Excel实例,打开目标工作簿的完整路径后,调用Close(False)方法(参数False表示不保存工作簿的更改),即可精准关闭该特定工作簿,之后就能正常读取导出的BOM数据。
内容的提问来源于stack exchange,提问作者GabrielKarloh
相关产品推荐
相关产品推荐

