Treść odpowiedzi wpisz jako CSV

Muszę wysłać plik CSV w odpowiedzi HTTP. Jak ustawić odpowiedź wyjściową jako format CSV?

To nie działa:

Response.ContentType = "application/CSV";
Author: Maverick, 2008-12-26

11 answers

Użycie text/csv jest najbardziej odpowiednim typem.

Należy również rozważyć dodanie nagłówka Content-Disposition do odpowiedzi. Często tekst / plik csv zostanie załadowany przez Internet Explorer bezpośrednio do hostowanej instancji programu Excel. Może to być pożądany rezultat lub nie.

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

Powyższe spowoduje wyświetlenie okna dialogowego "Zapisz jako", które może być tym, co zamierzasz.

 441
Author: AnthonyWJones,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-11-11 02:48:39

Typ MIME pliku CSV to text / csv zgodnie z RFC 4180 .

 121
Author: sastanin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-03-16 18:47:19

Użyj text/csv jako typu zawartości.

 49
Author: ibz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-07-30 07:37:31

Przez lata udoskonalałem idealny zestaw nagłówków do tego, które działają genialnie we wszystkich przeglądarkach, które znam

// 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");
 46
Author: dangerous,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-11-12 01:11:39

Spróbuj jednego z tych innych typów mime (stąd: http://filext.com/file-extension/CSV )

  • wartości oddzielone przecinkami
  • tekst / csv
  • application / csv
  • application / excel
  • application / vnd. ms-excel
  • application / vnd.msexcel

Również typ mime Może uwzględniać wielkość liter...

 23
Author: diclophis,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-12-26 09:37:12

Just Use like that

Response.Clear();
Response.ContentType = "application/CSV";
Response.AddHeader("content-disposition", "attachment; filename=\"" + filename + ".csv\"");
Response.Write(t.ToString());
Response.End();
 15
Author: GateKiller,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-11-03 14:57:25

W ASP.net MVC, można użyć metody FileContentResult i File:

public FileContentResult DownloadManifest() {
    byte[] csvData = getCsvData();
    return File(csvData, "text/csv", "filename.csv");
}
 5
Author: Rob Church,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-07-25 11:35:41

Ustawienie typu zawartości i jej rozmieszczenia w sposób opisany powyżej daje bardzo różne wyniki w różnych przeglądarkach:

IE8: Zapisz okno dialogowe zgodnie z życzeniem, a Excel jako domyślna aplikacja. 100% dobry.

Firefox: pojawia się okno dialogowe SaveAs, ale Firefox nie ma pojęcia, że jest to arkusz kalkulacyjny. Proponuje otwarcie z Visual Studio! 50% Dobra

Chrome: podpowiedzi są w pełni ignorowane. Dane CSV są wyświetlane w przeglądarce. 0% dobra.

Oczywiście we wszystkich tych przypadki mam na myśli przeglądarki, ponieważ wychodzą z pudełka, bez dostosowywania mapowań MIME/aplikacji.

 2
Author: ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-04-28 01:39:03

Proponuję wstawić znak ' / 'przed' myfilename.cvs "

Response.AddHeader("Content-Disposition", "attachment;filename=/myfilename.csv");
Mam nadzieję, że osiągniesz lepsze wyniki.
 2
Author: Jaider,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-06-13 21:59:36

Odkryłem, że problem z IE polega na tym, że wącha dane zwrotne i sam decyduje o tym, jaki typ treści myśli, że został wysłany. Istnieje wiele skutków ubocznych, które powoduje, takich jak zawsze otwieranie okna saveAs dla plików tekstowych, ponieważ używasz kompresji danych trasnferes. Rozwiązaniem jest (w kodzie php)......

header('X-Content-Type-Options: nosniff');
 2
Author: Wookie,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-06-24 19:21:21

W C # MVC 4.5 musisz zrobić tak:

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.
 0
Author: Suresh Kamrushi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-27 11:35:41