PHPExcel ERR_INVALID_RESPONSE с PHP7.0

У меня есть скрипт, который создает файл Excel и экспортирует его. Это работало нормально в PHP5.6, но после обновления до PHP7.0 это больше не работает.

Я обнаружил пару связанных проблем, когда люди предлагали установить php7.0-zip, но это не решило проблему.

Также получаю ту же ошибку в разных браузерах.

Это происходит после $objWriter->save('php://output');

require_once 'includes/PHPExcel/PHPExcel.php';
require_once 'includes/PHPExcel/PHPExcel/Writer/Excel2007.php';

$title = 'Export'. date('d-m-Y');
$count = $_GET['count'];

$objPHPExcel = new PHPExcel();

$objWorkSheet = $objPHPExcel->createSheet(0);

foreach ($_SESSION['tableheaders'][$count] as $column => $val) {
    $objWorkSheet->setCellValueByColumnAndRow($column, 1, $val);
    $objWorkSheet->getStyleByColumnAndRow($column, 1)->getFont()->setBold(true);
    $objWorkSheet->getStyleByColumnAndRow($column, 1)->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID)->getStartColor()->setRGB('C2C2C2');
}

$lastColumnIndex = 'A';

foreach ($_SESSION['tablerows'][$count] as $row => $innerArr) {
    foreach ($innerArr as $column => $val) {
        $objWorkSheet->setCellValueByColumnAndRow($column, $row + 2, $val);
        $objPHPExcel->getActiveSheet()->getColumnDimensionByColumn($column)->setAutoSize(true);

        $lastColumnIndex = $objPHPExcel->getActiveSheet()->getColumnDimensionByColumn($column)->getColumnIndex();
    }
}

$objPHPExcel->getActiveSheet()->freezePane('A2');
$objPHPExcel->getActiveSheet()->setAutoFilter("A1:{$lastColumnIndex}1");

$objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);

header("Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
header("Content-Disposition: attachment; filename='{$title}.xlsx'");

// If I die here, the error does not happen but my Excel file is damaged/empty.

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

person Bart    schedule 27.02.2018    source источник


Ответы (2)


Обнаружил проблему, в PHPExcel v1.8.0 в файле PHPExcel/Calculation/Functions.php в строке 581 есть break; после оператора return, который вызывает ошибку.

Это было исправлено в последней (и последней) версии 1.8.1.

person Bart    schedule 01.03.2018

Phpexcel плохо работает с PHP 7.0

Попробуйте перейти с Phpexcel на phpSpreadsheet.

phpSpreadsheet очень хорошо работает с последними версиями php.

person dhiman    schedule 01.11.2019