374

HTTP 応答で CSV ファイルを送信する必要があります。出力応答を CSV 形式に設定するにはどうすればよいですか?

これは機能していません:

Response.ContentType = "application/CSV";
4

11 に答える 11

550

使用text/csvが最も適切なタイプです。

Content-Disposition応答にヘッダーを追加することも検討する必要があります。多くの場合、text / csvは、InternetExplorerによってホストされているExcelのインスタンスに直接読み込まれます。これは、望ましい結果である場合とそうでない場合があります。

Response.AddHeader("Content-Disposition", "attachment;filename=myfilename.csv");

上記の場合、ファイルの[名前を付けて保存]ダイアログが表示されます。これは意図したとおりの場合があります。

于 2008-12-26T11:26:39.887 に答える
188

CSV の MIME タイプはRFC 4180text/csvに準拠しています。

于 2009-03-16T18:47:19.113 に答える
76

text/csvコンテンツ タイプとして使用します。

于 2008-12-26T09:36:43.023 に答える
54

何年にもわたって、私が知っているすべてのブラウザーで見事に機能する、このための完璧なヘッダーのセットを磨いてきました。

// these headers avoid IE problems when using https:
// see http://support.microsoft.com/kb/812935
header("Cache-Control: must-revalidate");
header("Pragma: must-revalidate");

header("Content-type: application/vnd.ms-excel");
header("Content-disposition: attachment; filename=$filename.csv");
于 2009-11-12T01:11:39.870 に答える
29

これらの他の MIME タイプのいずれかを試してください (ここから: http://filext.com/file-extension/CSV )

  • テキスト/カンマ区切り値
  • テキスト/csv
  • アプリケーション/csv
  • アプリケーション/エクセル
  • アプリケーション/vnd.ms-Excel
  • アプリケーション/vnd.msexcel

また、MIME タイプでは大文字と小文字が区別される場合があります...

于 2008-12-26T09:37:12.663 に答える
15

そのように使うだけ

Response.Clear();
Response.ContentType = "application/CSV";
Response.AddHeader("content-disposition", "attachment; filename=\"" + filename + ".csv\"");
Response.Write(t.ToString());
Response.End();
于 2009-04-28T12:54:13.677 に答える
3

IE の問題は、返されたデータを傍受し、送信されたと考えられるコンテンツ タイプについて独自の判断を下すことであることがわかりました。データ転送の圧縮を使用しているために、テキスト ファイルの名前を付けて保存ダイアログが常に開かれるなど、これによって引き起こされる多くの副作用があります。解決策は(phpコードで)......

header('X-Content-Type-Options: nosniff');
于 2012-02-16T12:20:31.643 に答える
2

上記のようにコンテンツタイプとコンテンツ配置を設定すると、ブラウザによって結果が大きく異なります。

IE8:必要に応じて[名前を付けて保存]ダイアログを表示し、デフォルトのアプリとしてExcelを使用します。100%良い。

Firefox:[名前を付けて保存]ダイアログは表示されますが、Firefoxはそれがスプレッドシートであるとは認識していません。Visual Studioで開くことをお勧めします!50%良い

Chrome:ヒントは完全に無視されます。CSVデータがブラウザに表示されます。0%良い。

もちろん、これらすべての場合において、mime /アプリケーションのマッピングをカスタマイズせずに、ブラウザが箱から出てきたときに参照しています。

于 2009-04-28T01:39:03.520 に答える
2

「myfilename.cvs」の前に「/」文字を挿入することをお勧めします

Response.AddHeader("Content-Disposition", "attachment;filename=/myfilename.csv");

より良い結果が得られることを願っています。

于 2011-06-13T21:59:36.793 に答える