Maison  >  Article  >  développement back-end  >  关于 PHPExcel 的有关问题

关于 PHPExcel 的有关问题

WBOY
WBOYoriginal
2016-06-13 11:10:30956parcourir

关于 PHPExcel 的问题
数据库有600多条数据。
我用 PHPExcel 导出来要40多秒。
而我自己写个程序导出.csv的文件,却只要不到5秒···

请教一下大家为什么?
PHPExcel版本1.7.3
代码如下:

static public function exportDataModel($array_value, $result_data)
{
Export::head($array_value['export_head']);
$objPHPExcel = new PHPExcel();
$objWriter = new PHPExcel_Writer_Excel5($objPHPExcel);
$objPHPExcel->getProperties()->setCreator($array_value['PropertiesCreator']);
$objPHPExcel->getProperties()->setTitle($array_value['PropertiesTitle']);
$objPHPExcel->setActiveSheetIndex(0);
$objPHPExcel->getActiveSheet()->setTitle($array_value['ActiveSheetTitle']);

$column_name = array('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z');
$arr_ActiveSheetCellValue = $array_value['ActiveSheetCellValue'] ;
 
for($i = 0; $i  { 
$objPHPExcel->getActiveSheet()->setCellValue($column_name[$i].'1', $arr_ActiveSheetCellValue[$i]);
}
$row = 2; 
foreach ($result_data as $result_d)

$arr_ActiveSheetCellValueData = $array_value['ActiveSheetCellValueData'] ; 
for($j = 0; $j  { 
$objPHPExcel->getActiveSheet()->setCellValue($column_name[$j].$row, $result_d[$arr_ActiveSheetCellValueData[$j]]);

$row++;

$objWriter->save('php://output');
}


------解决方案--------------------
  PHPExcel是一个很强大的处理Excel的PHP开源类,但是很大的一个问题就是它占用内存太大,官网上是这么说的:PHPExcel平均下来使用1k/单元格的内存,因此大的文档会导致内存消耗的也很快。而你导出的csv文件用的是PHP的内置函数。所以相比下来,会相差很多!
------解决方案--------------------
在循环里老是$objPHPExcel->getActiveSheet()会不会有影响, 能不能先存到变量里
Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn