Используя text/csv
самый соответствующий тип.
необходимо также рассмотреть добавление Content-Disposition
заголовок к ответу. Часто text/csv будет загружен Internet Explorer непосредственно в размещенный экземпляр Excel. Это может или не может быть желательным результатом.
Response.AddHeader("Content-Disposition", "attachment;filename=myfilename.csv");
Вышеупомянутое заставит диалоговое окно "Сохранить Как" файла появляться, который может быть тем, что Вы предназначаете.
Тип MIME CSV text/csv согласно RFC 4180 .
Используйте text/csv
в качестве типа контента.
Попробуйте один из этих других типов пантомимы (отсюда: http://filext.com/file-extension/CSV )
кроме того, тип пантомимы мог бы быть чувствительным к регистру...
Просто используйте так
Response.Clear();
Response.ContentType = "application/CSV";
Response.AddHeader("content-disposition", "attachment; filename=\"" + filename + ".csv\"");
Response.Write(t.ToString());
Response.End();
Установка типа контента и расположения контента, как описано выше, приводит к сильно различающимся результатам в разных браузерах:
IE8: диалог SaveAs по желанию и Excel в качестве приложения по умолчанию. На 100% хорошо.
Firefox: диалог SaveAs действительно появляется, но Firefox даже не подозревает, что это электронная таблица. Предлагает открыть его с помощью Visual Studio! 50% хорошо
Chrome: подсказки полностью игнорируются. Данные CSV отображаются в браузере. 0% хорошо.
Конечно, во всех этих случаях я имею в виду браузеры, когда они выходят из коробки, без настройки отображений mime / приложения.
На протяжении многих лет я оттачивал для этого идеальный набор заголовков, которые блестяще работают во всех известных мне браузерах
// 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");