2017-10-05 163 views
0

所以我是新來的並行處理,但我開始使它同時解析多個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。

回答

1

所以我想出瞭解決方案,它實際上非常容易。我只是說從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()