可以使用Openpyxl并行创建多个excel文件,同时将optimized_write设置为True


Is is possible to create multiple excel files parallely using Openpyxl, while optimized_write set to True?

为了克服PHPExcel的内存限制,我们使用Python的openpyxl库生成Excel文件,并使用节俭从PHP发送要保存在Excel文件中的数据。

现在,我们已经在一组对象中创建了几个客户端,并尝试在python端同时生成多个excel文件。当我们将optimized_write设置为False时,我们可以这样做,但当optimized-write标志设置为True时,我们不能这样做。

    $ob[$X][$Y] = new PhpPythonExcel();
    $ob[$X][$Y]->client->openExcel(True); //openExcel method sets optimized_write flag to True of False.
    ...
    //write something to the files.
    ...
    $ob[$X][$Y]->client->saveFile($fileName);

有可能这样做吗,或者有任何可用的破解方法吗?

是的,这是可能的,不需要破解。只要稍微修改一下优化的写入程序,就可以很容易地进行测试:

from openpyxl import Workbook
library = []
sheets = []
for x in range(5):
    wb = Workbook(optimized_write = True)
    library.append(wb)
    sheets.append(wb.create_sheet())
for irow in xrange(100):
    for idx, ws in enumerate(sheets):
        # + idx so they are all different
        ws.append(['%d' % (i + idx) for i in xrange(200)])
for idx, wb in enumerate(library):
    wb.save('new_big_file_{}.xlsx'.format(idx)) # don't forget to save !