在并行处理中使用XLWings
问题描述:
所以我是新来的并行处理,但我开始使它同时解析多个Excel文件。当我只使用openpyxl时它运行良好,但是据我所知,它是一个基本的XML解析器。当我包括使用XLWings的部分(我想利用其评价公式在Excel文件验证目的的能力优势),我收到以下错误:在并行处理中使用XLWings
pywintypes.com_error: (-2147221008, 'CoInitialize has not been called.', None, None)
这大约是我用来初始化代码一个新的XLWings实例并加载工作簿:
def openWorkbook(self, filePath):
app = xw.apps.add()
app.display_alerts = False
app.screen_updating = False
wb = self.app.books(filePath) #Note that this is called only once for each workbook.
app.screen_updating = True
app.quit()
是否有某种方法可以让XLW打开多个同时发生的Excel实例?我应该尝试做一些像this?如果是这样,我不确定初始化如何将线程交给XLWings。
答
所以我想出了解决方案,它实际上非常容易。我只是说从pythoncom包pythoncom.CoInitialize()
我xw.apps.add()调用之前:
ParallelProcessController.py
LoadWorkbook.py
import xlwings as xw
import pythoncom
def openWorkbook(self, filePath):
pythoncom.CoInitialize()
app = xw.apps.add()
wb = app.books(filePath) #Note that this is called only once for each workbook.
app.quit()