PHPExcel возвращает поврежденный файл
Если я сохраню это в файл:
$objWriter->save("test.xls");
А затем скачать с сервера, я могу открыть файл без проблем.
Но когда я пытаюсь сохранить в php://output
, получил поврежденный файл, как описано в этом вопросе.
Я попробовал это:
ob_end_clean();
header( "Content-type: application/vnd.ms-excel" );
header('Content-Disposition: attachment; filename="test.xls"');
header("Pragma: no-cache");
header("Expires: 0");
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
$objWriter->save('php://output');
exit;
ob_end_clean();
не помогает
Я старался PHPExcel_Writer_Excel2007
а также PHPExcel_Writer_Excel5
, Та же проблема.
UPD: как я вижу, файл Excell при запуске имеет спецификацию ("EF BB BF"). Но я проверил все свои сценарии, у них нет символа спецификации. Значит ли это, что PXPExcell добавляет спецификацию?
2 ответа
Решение
Я добавил ob_end_clean();
также после раздела заголовков. И символ спецификации исчез.
ob_end_clean();
header( "Content-type: application/vnd.ms-excel" );
header('Content-Disposition: attachment; filename="test.xls"');
header("Pragma: no-cache");
header("Expires: 0");
ob_end_clean();
Пользователь **ob_end_clean(); ** Прежде чем установить заголовок
как это:
ob_end_clean();
header('Content-Type: application/vnd.ms-excel'); //mime type
header("Content-Disposition: attachment; filename=\"filename.xls\"");
header("Cache-Control: max-age=0");
$objWriter = PHPExcel_IOFactory::createWriter($object, 'Excel5');
$objWriter->save('php://output');
Попробуйте использовать следующий код:
$filename = $name.".xls";
ob_end_clean();
header( "Content-type: application/vnd.ms-excel" );
header('Content-Disposition: attachment;filename='.$filename .' ');
header("Pragma: no-cache");
header("Expires: 0");
$objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
$objWriter->save('php://output');
ob_end_clean();