如何避免xlwings禁用SQL Spreads加载项并解决首次运行崩溃问题
解决xlwings打开Excel时SQL Spreads加载项导致崩溃的问题
以下是几个可行的解决思路:
临时禁用指定加载项再恢复
启动Excel时先关闭SQL Spreads加载项,完成脚本操作后再重新启用,避免登录弹窗阻塞服务启动:import xlwings as xw # 启动Excel实例,不自动新建工作簿 app = xw.App(visible=True, add_book=False) # 找到SQL Spreads加载项并禁用 for addin in app.api.AddIns: # 替换为Excel加载项列表中显示的SQL Spreads准确名称 if addin.Name == "SQL Spreads": addin.Installed = False # 正常打开目标工作簿 wb_output = xw.Book(output_file_path, update_links=False) # 脚本操作完成后,恢复加载项(如果后续需要手动使用) for addin in app.api.AddIns: if addin.Name == "SQL Spreads": addin.Installed = True # 后续保存、退出操作 wb_output.save() app.quit()提前完成SQL Spreads登录并记住状态
手动打开Excel,完成SQL Spreads的Microsoft账户登录,勾选「记住我」选项后关闭Excel。下次通过xlwings启动时,加载项不会弹出登录窗口,也就不会阻塞服务启动。调整COM超时时间
给SQL Spreads足够的启动/登录时间,修改xlwings连接Excel的超时设置:import xlwings as xw import pythoncom # 初始化COM并设置30秒超时(可根据实际情况调整) pythoncom.CoInitializeEx(pythoncom.COINIT_MULTITHREADED) pythoncom.CoSetTimeout(30000) # 打开工作簿 wb_output = xw.Book(output_file_path, update_links=False)无加载项模式启动Excel
如果脚本运行不需要用到SQL Spreads,直接以禁用所有加载项的模式启动Excel:import xlwings as xw # 启动Excel时禁用所有加载项 app = xw.App(visible=True, add_book=False, options={"addins": False}) wb_output = xw.Book(output_file_path, update_links=False) # 完成操作后退出 wb_output.save() app.quit()
内容的提问来源于stack exchange,提问作者Hibbert
相关产品推荐
相关产品推荐

