已解决
调用 xlwings 创建多线程时报错 pywintypes.com_error: ( ‘应用程序调用一个已为另一线程整理的接口)解决方法
来自网友在路上 185885提问 提问时间:2023-11-07 04:42:56阅读次数: 85
最佳答案 问答题库858位专家为你答疑解惑
创建xlwings对象
import xlwings
def run_program():app = xw.App(visible=False)# app = xw.App(visible=False, add_book=False) # 创建不可见的 Excel 应用程序实例app.display_alerts = False # 关闭 Excel 的警报app.screen_updating = False # 关闭 Excel 的屏幕更新wb = xw.Book(rule_file)
…
当开启多线程
try:thread1=threading.Thread(target=run_program)thread1.start()except Exception as re:# check_list.writeErroLog(re)traceback.print_exc(file=open('erro_log.txt','w+'))
**
这时候报错
**
Exception in thread Thread-1:
Traceback (most recent call last):File "D:\ProgramData\Anaconda3\envs\python38\lib\threading.py", line 932, in _bootstrap_innerself.run()File "D:\ProgramData\Anaconda3\envs\python38\lib\threading.py", line 870, in runself._target(*self._args, **self._kwargs)File "XXXXXX/main.py", line 135, in run_programresult_arr = rf1.Read_FormulaValue_1(rule_file, sheet_data, sheet_name, num_rows, num_cols, first_row)File "XXXXXX", line 249, in Read_FormulaValue_1app.quit()File "D:\ProgramData\Anaconda3\envs\python38\lib\site-packages\xlwings\main.py", line 300, in quitreturn self.impl.quit()File "D:\ProgramData\Anaconda3\envs\python38\lib\site-packages\xlwings\_xlwindows.py", line 368, in quitself.xl.DisplayAlerts = FalseFile "D:\ProgramData\Anaconda3\envs\python38\lib\site-packages\xlwings\_xlwindows.py", line 107, in __setattr__return setattr(self._inner, key, value)File "D:\ProgramData\Anaconda3\envs\python38\lib\site-packages\win32com\client\__init__.py", line 595, in __setattr__self._oleobj_.Invoke(*(args + (value,) + defArgs))
pywintypes.com_error: (-2147417842, '应用程序调用一个已为另一线程整理的接口。', None, None)
需要加入pythoncom.CoInitialize(),进行初始化。
def run_program():pythoncom.CoInitialize()...其他代码
这样就能正常运行。
查看全文
99%的人还看了
相似问题
猜你感兴趣
版权申明
本文"调用 xlwings 创建多线程时报错 pywintypes.com_error: ( ‘应用程序调用一个已为另一线程整理的接口)解决方法":http://eshow365.cn/6-34214-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!
- 上一篇: 4.网络之TCP
- 下一篇: 二维码智慧门牌管理系统全新升级:个性化配置,智能管理,让你的社区更安全!