我在打开导出的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);
}
但是文件被下载,并且弹出相同的修复消息。
注意:从服务器本身下载文件(不是通过浏览器)并打开文件时,就没有问题。