PHPExcel下载格式化数据太慢

时间:2019-05-14 13:51:43

标签: php phpexcel

我使用了之前的问题,现在遇到了性能问题。 导出数据将包含大约15,000行,并耗时10分钟以上。

PHPExcel: Set Column Names fromArray using PHP array

if (PHP_SAPI == 'cli')
    die('This should only be run from a Web Browser');
require_once dirname(__FILE__) . '/Excel_Classes/PHPExcel.php';
$user = $_POST['user'];
$title = "Manager Report-" . $_POST['page'] . ".xlsx";
$objPHPExcel = new PHPExcel();
$k = json_decode($_POST['arg1'], TRUE);
$objPHPExcel->getProperties()->setCreator("Manager Report")
        ->setLastModifiedBy($user)
        ->setTitle("Report from Manager Report")
        ->setDescription("Report from Manager Report")
        ->setKeywords("Manager Report")
        ->setCategory("Manager Report");

$objPHPExcel->getActiveSheet()->setTitle($_POST['page'])
        ->fromArray(array_keys($k[0]), NULL, 'A1')
        ->fromArray($k, NULL, 'A2');

function cellColor($cells, $color) {
    global $objPHPExcel;
    $objPHPExcel->getActiveSheet()->getStyle('A1:' .
            $objPHPExcel->getActiveSheet()->getHighestColumn() . "1"
    )->applyFromArray(array(
        'font' => array(
            'bold' => true,
        ),
        'borders' => array(
            'allborders' => array(
                'style' => PHPExcel_Style_Border::BORDER_THIN
            )
        ),
        'fill' => array(
            'type' => PHPExcel_Style_Fill::FILL_SOLID,
            'startcolor' => array(
                'rgb' => $color
            )
        ),
    ));
    $objPHPExcel->getActiveSheet()->getStyle('A2:' .
                    $objPHPExcel->getActiveSheet()->getHighestColumn()
                    ->getHighestRow()
    )->applyFromArray(array(
        'borders' => array(
            'allborders' => array(
                'style' => PHPExcel_Style_Border::BORDER_THIN
            )
        )
    ));
}

cellColor('A1:G1', 'FFFF99');
for ($i = 'A'; $i != $objPHPExcel->getActiveSheet()->getHighestColumn(); $i++) {
    $objPHPExcel->getActiveSheet()->getColumnDimension($i)->setAutoSize(TRUE);
}
$objPHPExcel->getActiveSheet()->freezePane('A2')
        ->setShowGridlines(false)
        ->setAutoFilter('A1:' . $objPHPExcel->getActiveSheet()->getHighestColumn() . "1");
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="' . $title . '"');
header('Cache-Control: max-age=0');
header('Cache-Control: max-age=1');
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); 
header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' IST');
header('Cache-Control: cache, must-revalidate');
header('Pragma: public');
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');

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

建议提高性能。

0 个答案:

没有答案