Heim  >  Artikel  >  Backend-Entwicklung  >  关于 PHPExcel 的有关问题

关于 PHPExcel 的有关问题

WBOY
WBOYOriginal
2016-06-13 11:10:30956Durchsuche

关于 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()会不会有影响, 能不能先存到变量里
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn