我在使用PHPExcel類在PHP中導出數據從MySQL表。 PHP頁面簡單地像一個循環寫入Excel數據:PHP導出巨大的Excel文件
$objPHPExcel = new PHPExcel();
# Query result goes to array $result
# ...
$i = 1;
for ($r = 0; $r < count($result); $r++) {
# Set $value1, $value2, $value3 from $result
$objPHPExcel->setActiveSheetIndex(0)
->setCellValue("A$i", $value1)
->setCellValue("B$i", $value2)
->setCellValue("C$i", $value3);
$i++;
}
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
$objWriter->save("/path/to/exported_file.xlsx");
此代碼工作正常時,導出的文件不是很大。我能夠輸出大約10,000條記錄。但是,當文件變大(從查詢返回更多記錄)時,出現以下錯誤。
Fatal error: Allowed memory size of 536870912 bytes exhausted (tried to allocate 71 bytes)
我/etc/php5/apache2/php.ini
增加內存限制1024M。即使增加後,我仍然得到這個錯誤。
我試圖通過在SELECT
聲明中追加LIMIT
來限制查詢結果,而不是通過限制查詢結果來創建多個excel文件,但這也沒有解決問題。
任何想法如何解決這個問題?
我在ubuntu服務器上運行php-5.2.4和apache-2.2.8。
您需要創建Excel文件的哪些功能? csv會不夠嗎?其次「xlsx」文件往往是最大的 - 你可以使用二進制文件(xls或xlsb)嗎? – Juliusz