0

我正在使用 PHPExcel 1.7.9 版。

这是我的 PHP 代码:

        $temp_name = $_FILES['upload']['tmp_name'];
        $fname = $_FILES['upload']['name'];
        $transfer = move_uploaded_file($temp_name,TEMP_DIR.$fname);
        $file_location = TEMP_DIR.$fname;
        $inputFileType = PHPExcel_IOFactory::identify($file_location);
        $objReader = PHPExcel_IOFactory::createReader($inputFileType);
        $objReader->setReadDataOnly(true);
        $objPHPExcel = $objReader->load($file_location);

对于上面的每一行代码,我回显产生输出所花费的时间


启动页面加载0.0272秒
上传文件页面加载0.0408秒
识别文件页面加载0.0612秒
创建阅读器页面加载0.0613秒
设置只读数据页面加载0.0613秒
文件读取页面加载17.3884秒

我的问题是,为什么

$objPHPExcel = $objReader->load($file_location);

加载需要 17.3884 秒?

其他信息:

  • 微软 Excel 2007
  • 大小 384kb
  • 最大列 - AF
  • 最大行数 = 184 行
4

1 回答 1

1

phpexcel在将大文件写入磁盘时需要大量内存的原因...

excel文档中存在大量数据,内容、公式、条件标记、标记、引用、单元格大小等不一而足……

对于每个单元格,必须对其进行适当的分析、解释,并与 phpexcel 中的相应值匹配。

这是最耗时和最占用内存的转换过程。

您有 32 x 184 列数据 = 5888 个必须解释的单元格 = 每个表格单元格 0.002953 秒,即表格单元格 2.9 毫秒。

考虑到所有数据处理和可变事件,我发现这非常快。

如果你真的想要速度,你需要编写自己的 c(++) 库并将其加载到 php 中,那么你可以获得真正的速度提升。

于 2014-03-24T13:42:36.623 回答