为了克服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 !