我正在使用PHPExcel库生成基于mysql数据库的excel数据。 MySql查询结果为1,34,000行。 Excel在一张工作表上支持65,536行。所以制作逻辑如PHPExcel导出大文件失败
foreach($result as $value) { $val = array_values($value); if($rowscounter < 65000) { $objPHPExcel->addRow($val,$rowscounter); } else { $active_sheet++; $objPHPExcel->createSheet(); $objPHPExcel->setActiveSheetIndex($active_sheet); $rowscounter = 1; } $rowscounter++; } // deliver header header("Content-Type: $mtype; charset=" . $objPHPExcel->sEncoding); header("Content-Type:application/octet-stream"); header("Content-Disposition: inline; filename=\"" . $filename . ".$ext\""); // Save it as an excel 2003 file $objWriter = IOFactory::createWriter($objPHPExcel,$objPHPExcel->sFileFormat); //echo "Peak memory usage: " . (memory_get_peak_usage(true)/1024/1024) . " MB";exit; $objWriter->save('php://output');
创建新的工作表后,65000记录达到一个woeksheet。
但它不起作用;不给任何输出或错误。起初我认为这是因为内存限制。但是,当回显它显示峰值内存1400.5 MB,我已经设置我的内存限制高达3500MB使用ini_set('memory_limit', '3500M');
您可以请建议的东西或任何替代?
您能概述您对PHPExcel所做的更改吗?您正在引用诸如$ objPHPExcel-> addRow()(我希望将其与工作表而不是工作簿关联)等方法以及不属于PHPExcel库代码的属性(如$ objPHPExcel-> sFileFormat)。 – 2010-10-08 12:23:50
您是否尝试过调试以确定它在foreach()循环中失败,还是尝试写入文件? – 2010-10-08 12:24:18
是标记,$ objPHPExcel-> addRow()是我的函数,它只是使用 - > getActiveSheet() - > setCellValueByColumnAndRow(); – 2010-10-08 12:31:31