web-dev-qa-db-ja.com

PHP Excelヘッダー

header("Content-Type:   application/vnd.ms-Excel; charset=utf-8");
header("Content-type:   application/x-msexcel; charset=utf-8");
header("Content-Disposition: attachment; filename=abc.xsl"); 
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: private",false);
echo "Some Text"

これは、phpを使用してxslファイルを記述およびダウンロードするコードです。
私の問題は、Excelファイルを開くときMS-Excelがファイルを開く前に警告を表示することです

開こうとしているファイルは、ファイル拡張子... Blah blahで指定されたものとは異なる形式です

PHPこの警告を削除するコードとはどうすればよいですか?内容は正しく記述されています。

これは、ファイルに書き込まれたコンテンツがtxtファイルのコンテンツであり、ファイル拡張子が正しくない、つまりxlsだからです。溶液?

ライブラリを使用することを提案しないでください。

14
user794624

複数のContent-Typeヘッダーを提供しています。 application/vnd.ms-Excelで十分です。

また、構文エラーもいくつかあります。 echoステートメントで;を使用してステートメントを終了し、ファイル名拡張子を間違えます。

header("Content-Type:   application/vnd.ms-Excel; charset=utf-8");
header("Content-Disposition: attachment; filename=abc.xls");  //File name extension was wrong
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: private",false);
echo "Some Text"; //no ending ; here
31
Starx

これを試して

header("Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
header("Content-Disposition: attachment;filename=\"filename.xlsx\"");
header("Cache-Control: max-age=0");
8
safarov

PHPスクリプトの最後にexit;を追加してみてください。

0
Petko Doichev