gpt4 book ai didi

PHPExcel 很慢 - 改进方法?

转载 作者:IT王子 更新时间:2023-10-29 00:52:37 41 4
gpt4 key购买 nike

我正在使用 PHPExcel 生成 .xlsx 格式的报告。在小数据集(几十行,3 张)的初始测试阶段还可以,但是现在当在每张超过 500 行的实际生产数据上使用它时,它变得非常慢。生成文件需要 48 秒,当运行包含更多信息的报告时,整个过程失败并显示 fatal error :第 1041 行的 PHPExcel/Worksheet.php 中超过 30 秒的最大执行时间。有时它在另一个 PHPExcel 文件中,所以我怀疑确切位置是否相关。

理想情况下,如果可能的话,我想以某种方式加快速度。如果不是,那么至少增加此脚本的执行限制。

到目前为止,我看到的唯一建议是在范围而不是单个单元格中设置样式。不幸的是,我已经在范围内做了我的造型而且它也相当小。还有其他建议吗?

最佳答案

它是否填充工作表?还是储蓄?你觉得太慢了吗?

您如何使用数据填充电子表格?

  • 使用 fromArray() 方法比填充每个单独的单元格更有效,尤其是在您使用高级值绑定(bind)器自动设置单元格数据类型时。
  • 如果您使用

    为工作表中的每个单元格设置值
    $objPHPExcel->getActiveSheet()->setCellValue('A1',$x);
    $objPHPExcel->getActiveSheet()->setCellValue('B1',$y);

    使用

    $sheet = $objPHPExcel->getActiveSheet();
    $sheet->setCellValue('A1',$x);
    $sheet->setCellValue('B1',$y);

    这样您就只访问一次 getActiveSheet() 方法;或利用流畅的界面设置多个单元格,只需一次调用 $objPHPExcel->getActiveSheet()

    $objPHPExcel->getActiveSheet()->setCellValue('A1',$x)
    ->setCellValue('B1',$y);

您已评论将样式应用于单元格范围:

  • 您还可以选择使用 applyFromArray() 一次性设置各种样式设置。
  • 如果您可以将样式应用于列或行而不是简单地应用于范围,则效率会高得多

如果您在工作簿中使用公式,则保存时:

  • 使用

    $objWriter->setPreCalculateFormulas(false)

    禁用在 PHPExcel 中计算公式。

这些只是有助于提高性能的一些提示,论坛主题中还有很多建议。它们不一定都有帮助,太多取决于您的特定工作簿来给出任何绝对值,但是您应该能够改善这种缓慢的速度。即使是我用于开发的小笔记本也可以比您的生产服务器更快地编写 3 个工作表、20 列、2,000 行 Excel 2007 文件。

编辑

如果可以简单地提高 PHPExcel 本身的速度,我早就这样做了。事实上,我一直在进行性能测试,看看如何提高它的速度。如果您想要比 PHPExcel 本身提供的更快的速度,那么有一个 list of alternative libraries here .

关于PHPExcel 很慢 - 改进方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5983845/

41 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com