2014-03-24 62 views
0

我正在使用PHPExcel 1.7.9版。PHPExcel加载文件超过15秒

这是我的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秒内创建读取器页面负载
集读取数据OnlyPageload在0.0613秒
文件中17.3884秒

我的问题是,为什么

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

采取17.3884秒加载读取页面加载?

其他信息:

  • MS Excel 2007中
  • 大小384KB
  • 最大列 - AF
  • 最大行= 184行

回答

1

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

大量的数据存在于Excel文件,从内容,公式,有条件的标记,标记,引用,细胞大小等不同...

因为它已经被正确分析,解释,以匹配每个单元phpexcel中的相应值。

这是最花费时间和内存密集的转换过程。

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

考虑到所有的数据处理和变化的事件,我发现相当快。

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

+0

在每个单元格中迭代我们没有任何问题PHPExcel。我可以证实这一点。 –

+0

你能改说吗?我不明白你想说什么...... – Tschallacka

+0

我的意思是,当在5888单元格上迭代时间少于5秒。我强烈怀疑$ objectReader-> load($ filename)是罪魁祸首。 –