1

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

现在我们已经在一个对象数组中创建了几个客户端,并尝试在 python 端一次生成多个 excel 文件。当我们将 optimize_write 设置为 False 时,我们可以这样做,但当优化写入标志设置为 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);

是否有可能这样做,或者任何可用的黑客攻击?

4

1 回答 1

1

是的,这是可能的,并且不需要破解。通过对优化编写器例程稍作修改,这可以很容易地测试:

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 !
于 2013-03-19T06:10:55.503 回答