【发布时间】:2021-05-18 17:06:55
【问题描述】:
我们检测到一些较大的导出变得非常缓慢的情况,因此我们尝试分析该问题。我们谈论的是导出 - 仅作为示例 - 大约 600 列 x 6000 行。
旁注:我们使用 CakePHP 并有一个 ExportHelper,它在内部使用一个电子表格实例并将活动工作表绑定到一个内部属性以便更快地参考。有一个添加整行的函数,但在函数内部,每个单元格及其样式都是单独添加的。
在给定的情况下,我们不会在颜色、边框、字体样式等方面添加公式或视觉样式。也没有组合单元格。
但我们需要对某些列的单元格应用数字格式。如果我们注释掉应用样式的代码,例如
$this->_xlsWorksheet->getStyleByColumnAndRow($c, $r)->getNumberFormat()->setFormatCode(NumberFormat::FORMAT_PERCENTAGE_00);
...然后导出只需几秒钟。但是如果我们把代码留在里面,导出要么需要几分钟,要么会因为内存问题而崩溃。开启缓存似乎没有帮助。
所以我想知道:有什么办法可以加快这些与单元格格式相关的调用?我们是否应该先写入所有单元格内容,并且仅在最后将样式应用于完整列,这意味着:从第二行到最后一行的单元格范围(不包括包含标题的第一行),而不是应用通过单独调用为单元格设置样式?
【问题讨论】:
标签: excel phpspreadsheet