在并行处理中使用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()