关于 PHPExcel 的有关问题
程序员文章站
2024-01-21 11:52:04
...
关于 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()会不会有影响, 能不能先存到变量里
数据库有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()会不会有影响, 能不能先存到变量里
相关文章
相关视频
专题推荐
-
独孤九贱-php全栈开发教程
全栈 170W+
主讲:Peter-Zhu 轻松幽默、简短易学,非常适合PHP学习入门
-
玉女心经-web前端开发教程
入门 80W+
主讲:灭绝师太 由浅入深、明快简洁,非常适合前端学习入门
-
天龙八部-实战开发教程
实战 120W+
主讲:西门大官人 思路清晰、严谨规范,适合有一定web编程基础学习
网友评论
文明上网理性发言,请遵守 新闻评论服务协议
我要评论