2014-03-24 93 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)是罪魁禍首。 –