如何强制在PHP中下载.xlsx文件而不损坏它?

时间:2019-04-26 09:10:15

标签: php excel phpexcel

所有现有问题都没有对我有所帮助。 我试图强制下载文件类型为.xlsx的Excel文件。在像这样的下载代码中,它工作得很好:

echo "<a href='" . $dateiname . "'>Datei herunterladen</a>";

但是,每当我尝试进行强制下载时,它都不会起作用。我已经尝试过关于stackoverflow各种问题的各种标题,最后两个是

header('Content-type: application/octet-stream');
header('Content-Disposition: attachment; filename="' . $dateiname . '"');
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Pragma: no-cache');
header('Content-Length: ' . filesize($dateiname));
$objWriter->save('php://output');

header("Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
header("Content-Transfer-Encoding: binary ");
header('Content-Disposition: attachment; filename='.basename($dateiname));
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($dateiname));
$objWriter->save('php://output');

我在创建文件的同一文件中都尝试过,但是在单独的文件中都尝试过,但是无论哪种方式,我总是会收到错误消息:

  

Excel无法打开文件(文件名),因为文件格式或文件扩展名无效。确认文件没有被篡改,并且文件扩展名与文件的格式匹配。

服务器上的文件本身看起来还不错。

1 个答案:

答案 0 :(得分:1)

我发现我是如何使用PHPExcel强制下载xls文件的。

header("Content-Disposition: attachment; filename={$fileName}.{$fileFormat}");
header("Content-Type: application/vnd.ms-excel;");
header("Cache-Control: max-age=0");

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

希望有帮助。