8

グーグル検索中に、異なるファイル形式で生成された Excel を出力するときに設定する必要がある 2 つの異なるヘッダー セットが見つかりました。

例えば

タイプ「Excel5」のヘッダーは次のとおりです。

header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type: application/download");;
header("Content-Disposition: attachment;filename=$filename");
header("Content-Transfer-Encoding: binary ");

タイプ「Excel2007」のヘッダーは次のとおりです。

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

私の質問: CSVHTMLPDFなどの他のファイル タイプがあるため、ファイル タイプごとに異なるヘッダーを設定する必要がありますか?

4

1 に答える 1

12
header("Pragma: public");

いいえ - これは単に間違っています - 多くの人はキャッシュと関係があると考えていますが

header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");

Excel とは関係ありません - これらはキャッシュを制御するだけです

header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type: application/download");;

いいえ - content-type ヘッダーは 1 つだけにする必要があります。OLE を使用する MS Excel ファイルの場合、MIME タイプは application/vnd.ms-excel である必要があります。

上記の 2 番目のヘッダーのみが有効な MIME タイプです。

header("Content-Disposition: attachment;filename=$filename");
header("Content-Transfer-Encoding: binary ");

2 番目のヘッダーは冗長で、前者はダウンロード用のファイル名を指定します。

コンテンツ タイプ: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');

.xlsx ファイルのみ (つまり、XML で保存)。それ以外の場合は、application/vnd.ms-excel を使用する必要があります。実際、後者は下位互換性があるはずです。

私の質問: ファイルの種類ごとに異なるヘッダーを設定する必要がありますか?

はい - Content-Type ヘッダーファイル タイプです。ただし、このヘッダーのみを変更する必要があります。

C.

于 2010-04-08T12:06:20.947 に答える