PHPExcel加载文件超过15秒

时间:2014-03-24 13:33:10

标签: phpexcel phpexcelreader

我正在使用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秒   
上传文件Pageload 0.0408秒   
在0.0612秒内识别文件页面加载量   
在0.0613秒内创建Reader Pageload   
在0.0613秒内设置Read Data OnlyPageload   
文件读取页面加载时间为17.3884秒

我的问题是,为什么

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

需要17.3884秒才能加载?

其他信息:

  • MS Excel 2007
  • 尺寸384kb
  • 最大列 - AF
  • 最大行= 184行

1 个答案:

答案 0 :(得分:1)

在将大文件写入光盘时,phpexcel需要大量内存的原因相同......

excel文档中存在大量数据,包括内容,公式,条件标记,标记,引用,单元格大小等...

对于每个细胞,必须正确分析,解释,与phpexcel中的相应值匹配。

这是转换过程中耗费时间和内存最多的。

您有32 x 184列数据= 5888个单元格,每个表格单元格需要解释= 0.002953秒,表格单元格为2.9毫秒。

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

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