回答:
使用text/csv
は最も適切なタイプです。
またContent-Disposition
、応答にヘッダーを追加することも検討する必要があります。多くの場合、text / csvは、Internet ExplorerによってホストされているExcelのインスタンスに直接読み込まれます。これは望ましい結果である場合とそうでない場合があります。
Response.AddHeader("Content-Disposition", "attachment;filename=myfilename.csv");
上記により、ファイルの[名前を付けて保存]ダイアログが表示され、意図したとおりになる場合があります。
長年にわたって、私が知っているすべてのブラウザーで見事に機能するヘッダーの完璧なセットを磨き続けてきました
// 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");
これらの他のMIMEタイプのいずれかを試してください(ここから:http : //filext.com/file-extension/CSV)
また、mimeタイプは大文字と小文字が区別される場合があります...
そのまま使う
Response.Clear();
Response.ContentType = "application/CSV";
Response.AddHeader("content-disposition", "attachment; filename=\"" + filename + ".csv\"");
Response.Write(t.ToString());
Response.End();
return new EmptyResult()
して、ファイル名を固定する必要があります。そうでない場合、IEはファイルをとして保存しようとしますActionName.htm
。
上記のようにコンテンツタイプとコンテンツの配置を設定すると、ブラウザによって結果が大きく異なります。
IE8:必要に応じて[名前を付けて保存]ダイアログ、およびデフォルトのアプリとしてExcel。100%良い。
Firefox:[名前を付けて保存]ダイアログは表示されますが、Firefoxはそれがスプレッドシートであることを認識していません。Visual Studioで開くことをお勧めします!50%良い
Chrome:ヒントは完全に無視されます。ブラウザにCSVデータが表示されます。良い0%。
もちろん、これらすべてのケースで、ブラウザがボックスから出てきたときに、mime /アプリケーションのマッピングをカスタマイズすることなく、ブラウザを指します。
C#MVC 4.5の場合、次のようにする必要があります。
Response.Clear();
Response.ContentType = "application/CSV";
Response.AddHeader("content-disposition", "attachment; filename=\"" + fileName + ".csv\"");
Response.Write(dataNeedToPrint);
Response.End();
return new EmptyResult(); //this line is important else it will not work.