【问题标题】:PHPExcel - Applying styles to many cells fasterPHPExcel - 更快地将样式应用于多个单元格
【发布时间】:2016-05-19 15:54:56
【问题描述】:

我正在使用 PHPExcel 创建一个包含大约 20,000 个单元格的电子表格。其中一些单元格的样式为红色。为了应用红色样式,我正在遍历一个单元格引用数组:

foreach ($notCheapest as $cellRef) {
    $sheet->getStyle($cellRef)->applyFromArray([
        'font' => [
            'color' => ['rgb' => 'a00000']
        ]
    ]);
}

虽然这可行,但它真的很慢。有没有办法通过附加样式将一组单元格引用传递给 PHPExcel?我猜想调用 getter 1000 次,而 applyFromArray() 方法是导致这里缓慢的原因。

【问题讨论】:

    标签: performance phpexcel


    【解决方案1】:

    有没有办法通过附加样式将单元格引用数组传递给 PHPExcel?

    不,但如果您有连续的单元格块,您可以指定一个范围而不是单个单元格,这样效率更高:

    $sheet->getStyle('B2:C5')->applyFromArray([
        'font' => [
            'color' => ['rgb' => 'a00000']
        ]
    ]);
    

    因为它只是对该范围内所有单元格的单个请求,然后样式将应用于该单元格范围,而不是单独应用于每个单元格,因此它的内存效率和速度效率都要高得多

    【讨论】:

    • 谢谢马克,这是有道理的。我认为计算区域对我来说是不可行的(当然不能很快完成) - 我会接受速度,也许会实现一个队列或其他东西让用户下载电子表格..
    • 另外,感谢您最近在 phpcambridge 发表演讲 :) 没想到这么快就使用 phpexcel!很棒的包:)
    • 如果生成电子表格需要花费任何时间,我建议将其作为后端进程并将结果邮寄给用户,或者在文件可供下载时通知他们
    • 我很高兴能进行这次演讲;我总是喜欢展示为开源项目做出贡献是多么容易
    猜你喜欢
    • 1970-01-01
    • 2013-09-08
    • 2023-03-12
    • 1970-01-01
    • 2017-04-14
    • 2012-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多