Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/254.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在Excel文件中添加数据需要较长的时间_Php_Phpexcel - Fatal编程技术网

Php 在Excel文件中添加数据需要较长的时间

Php 在Excel文件中添加数据需要较长的时间,php,phpexcel,Php,Phpexcel,我的数据库中有大约20000条记录。我正在获取该数据进程并将其添加到数组中,直到这里它工作正常,但当我将数据添加到excel时,需要更长的时间。我的代码在下面 public function testexcel($result) { $objPHPExcel = new PHPExcel(); $objPHPExcel->setActiveSheetIndex(0); $objPHPExcel->getActiveSheet()

我的数据库中有大约20000条记录。我正在获取该数据进程并将其添加到数组中,直到这里它工作正常,但当我将数据添加到excel时,需要更长的时间。我的代码在下面

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对象的效率低得多