Php 在Excel文件中添加数据需要较长的时间
我的数据库中有大约20000条记录。我正在获取该数据进程并将其添加到数组中,直到这里它工作正常,但当我将数据添加到excel时,需要更长的时间。我的代码在下面Php 在Excel文件中添加数据需要较长的时间,php,phpexcel,Php,Phpexcel,我的数据库中有大约20000条记录。我正在获取该数据进程并将其添加到数组中,直到这里它工作正常,但当我将数据添加到excel时,需要更长的时间。我的代码在下面 public function testexcel($result) { $objPHPExcel = new PHPExcel(); $objPHPExcel->setActiveSheetIndex(0); $objPHPExcel->getActiveSheet()
public function testexcel($result) {
$objPHPExcel = new PHPExcel();
$objPHPExcel->setActiveSheetIndex(0);
$objPHPExcel->getActiveSheet()->setTitle('Panel');
$alp = range('A', 'Z');
$alp_count = 1;
$columns = array(
'A' => 'client_name',
'B' => 'clientCircle',
'C' => 'proj_name',
'D' => 'state',
'E' => 'city',
'F' => 'pincode',
'G' => 'address',
'H' => 'branchName',
'I' => 'panelIp',
'J' => 'panelLocation',
'K' => 'panelType',
'L' => 'panelId',
'M' => 'panelManufacturer',
'N' => 'panelModel',
'O' => 'panelCurrentVersion',
'P' => 'siteId',
'Q' => 'craCompany',
'R' => 'mspCompany',
'S' => 'hkCompany',
'T' => 'installationVendor',
'U' => 'antenna',
'V' => 'subscription',
'W' => 'dvr_user_id',
'X' => 'dvr_password',
'Y' => 'dvr_port',
);
$count = 1;
foreach ($result as $k => $v) {
foreach ($columns as $k1 => $v1) {
if (isset($v[$v1]))
$objPHPExcel->getActiveSheet()->setCellValueExplicit($k1 . $count, $v[$v1]);
else {
$objPHPExcel->getActiveSheet()->setCellValueExplicit($k1 . $count, "");
}
// }
}
$count++;
}
$date = date('Y/m/d h:i:s');
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="Panel-' . $date . '.xlsx"');
header('Cache-Control: max-age=0');
// If you're serving to IE 9, then the following may be needed
header('Cache-Control: max-age=1');
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
$objWriter->save('php://output');
}
请建议我如何优化代码,以减少在excel中添加数据的时间。
提前感谢现在您有了大量迭代的
$result*$columns
迭代。最好将$result
数组设置为$key
=>$value
的$columnName
=>$value
形状,然后只迭代$result
。从数据库结果构建一个大数组,然后,迭代该大数组写入PHPExcel对象的效率要比直接将数据库结果写入PHPExcel对象的效率低得多