3

PHPヘッダーを使用してオンザフライで生成されたExcelファイルをダウンロードしようとしています:

$filename = "assets.xls";
header('Content-Type: application/vnd.ms-excel');
header("Content-Disposition: attachment;filename=$filename");
header('Cache-Control: max-age=0');
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
$objWriter->save('php://output');

しかし、これは IE8 では動作しません (ただし、IE8 を搭載した他の PC では動作します???!!)。IE8 は、assets.xls の代わりに export.php ファイルをダウンロードしようとします。IE8がこれを行う理由は何ですか?

4

6 に答える 6

5

ファイル名の前後にとと 引用符の間にスペースを入れて、HTTP 仕様に従ってヘッダーを正しくフォーマットしてみてください。;filename

header('Content-Disposition: attachment; filename="' . $filename . '"');
于 2012-05-28T09:09:00.833 に答える
3

私は同じ問題に遭遇しました。そして、次の方法を使用して問題を解決します。

header("Cache-Control: private");
header("Content-Type: application/vnd.ms-excel");
header("Content-disposition: attachment; filename=$filename");
于 2014-01-06T06:32:51.013 に答える
2

私は同様の問題を抱えています。Content-Deposition ヘッダーの前に次のヘッダーを追加しました。

header("Content-type: text/csv");
header("X-Download-Options: noopen");
header("Content-Disposition: attachment; filename=\"ExcelFileName.csv\"");

それは私のために働くようです。ただし、最初にファイルを保存する必要があります。すぐに開くことはできません。

于 2012-11-19T20:30:10.677 に答える
1

私はまったく同じ問題を抱えています!「Content-Type」ヘッダーを削除することで機能するようになったので、IE8はそのタイプでうまく機能しないと思います..? 最良の代替案はまだわかりませんが、それは間違いなく私にとってのプレーヤーです.

于 2012-06-01T19:46:26.357 に答える
0

これを試して:

$filename   =   'Excel_Sheet_'.date('Ymd').".xls";

header("Cache-Control: public");
header("Content-Description: File Transfer");
header("Content-Disposition: attachment; filename=$filename");
header("Content-Type: application/vnd.ms-excel; "); 
header("Content-Transfer-Encoding: binary");
header('Cache-Control: max-age=0');
ob_clean();
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
$objWriter->save('php://output');
exit;
于 2013-03-01T14:32:54.463 に答える