我正在测试PHPSpreadsheet是如何处理大型excel电子表格的。初步测试表明,对于大型电子表格,内存很快就会用完。
有没有一种逐步编写电子表格的方法?
我有一段很久以前用来从PHP创建电子表格的老代码。它使用了一个非常旧的标准,并将进行更新。但我的旧代码的一个优点是,我可以直接写入文件,而不是在内存中构建整个文件,因此可以轻松地处理非常大的电子表格,而不会超出内存限制。
在PHPSpreadsheet中可以做类似的事情吗?我试着阅读了文档,并搜索了各种论坛,但大多数回复似乎只是“增加可用内存”。
发布于 2018-06-07 18:55:45
在他们的文档中有一个关于这方面的主题:
https://phpspreadsheet.readthedocs.io/en/latest/topics/memory_saving/#memory-saving
你基本上可以将单元存储在缓存中,例如Redis中(从他们的文档中):
$client = new \Redis();
$client->connect('127.0.0.1', 6379);
$pool = new \Cache\Adapter\Redis\RedisCachePool($client);
$simpleCache = new \Cache\Bridge\SimpleCache\SimpleCacheBridge($pool);
\PhpOffice\PhpSpreadsheet\Settings::setCache($simpleCache);
如果您使用的是Predis,则可以使用以下存储库:
https://github.com/php-cache/predis-adapter
并使用以下代码:
$client = new \Predis\Client($yourParameters, $yourOptions);
$pool = new \Cache\Adapter\Predis\PredisCachePool($client);
$simpleCache = new \Cache\Bridge\SimpleCache\SimpleCacheBridge($pool);
\PhpOffice\PhpSpreadsheet\Settings::setCache($simpleCache);
https://stackoverflow.com/questions/50731704
复制相似问题