我在使用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