У меня проблемы с открытием экспортированного файла Excel.
У меня раньше была та же проблема, и мне пришлось сначала сохранить ее по какому-то пути, а затем прочитать файл и записать его в выходной буфер.
Это работало без проблем на моемлокальный компьютер.
Но такая же проблема произошла на сервере.
Вот что я сделал ранее:
// Save Excel 2007 file
$lsFileName = isset($file_name) && $file_name != null ? $file_name.'.xlsx' : 'Report.xlsx';
$upload_dir = "upload/export_dump/";
if(is_dir($upload_dir) == false) {
mkdir($upload_dir, 0777);
}
$lsSavePath = $upload_dir.$lsFileName;
$objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
$objWriter->setIncludeCharts(TRUE);
$objWriter->save($lsSavePath);
$lnFilesize = filesize($lsSavePath);
// Redirect output to a client’s web browser (Excel2007)
header('Content-Type: application/force-download');
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header("Content-Disposition: attachment; filename=" . utf8_decode($lsFileName));
header('Content-Transfer-Encoding: binary');
header('Accept-Ranges: bytes');
header('Cache-Control: max-age=0');
header("Content-Length:" . $lnFilesize);
readfile($lsSavePath);
РЕДАКТИРОВАТЬ: я пытался проверить, были ли какие-либо выводы сделаны док чтению файла.
.
.
header("Content-Length:" . $lnFilesize);
$output = ob_get_contents();
if(!empty($output)) {
var_dump($output);
die('Something was definitely printed!');
} else {
readfile($lsSavePath);
}
Но файл загружается, и появляется такое же сообщение о восстановлении.
ПРИМЕЧАНИЕ. При загрузке файла с самого сервера (не через браузер) и открытиифайл, нет проблем.