tag route net for data asp all asp.net http csv

asp.net - route - Tipo de contenido de respuesta como CSV



select asp-for asp-items (11)

Necesito enviar un archivo CSV en respuesta HTTP. ¿Cómo puedo configurar la respuesta de salida como formato CSV?

Esto no está funcionando:

Response.ContentType = "application/CSV";


A lo largo de los años he estado perfeccionando un conjunto perfecto de encabezados que funcionan de manera brillante en todos los navegadores que conozco

// 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");


Descubrí que el problema con IE es que detecta los datos devueltos y toma una decisión sobre qué tipo de contenido cree que se ha enviado. Hay una serie de efectos secundarios que esto provoca, como abrir siempre un cuadro de diálogo para guardar archivos de texto, ya que está utilizando la compresión de las transferencias de datos. La solución es (en código php) ......

header(''X-Content-Type-Options: nosniff'');


El tipo MIME del CSV es texto / csv según RFC 4180 .


En ASP.net MVC, puede usar un FileContentResult y el método File :

public FileContentResult DownloadManifest() { byte[] csvData = getCsvData(); return File(csvData, "text/csv", "filename.csv"); }


La configuración del tipo de contenido y la disposición del contenido como se describe anteriormente produce resultados muy variados con diferentes navegadores:

IE8: el cuadro de diálogo Guardar como se desea y Excel como la aplicación predeterminada. 100% bueno.

Firefox: el cuadro de diálogo Guardar como se muestra, pero Firefox no tiene idea de que sea una hoja de cálculo. Sugiere abrirlo con Visual Studio! 50% bueno

Chrome: los consejos son totalmente ignorados. Los datos CSV se muestran en el navegador. 0% bien.

Por supuesto, en todos estos casos me refiero a los navegadores que salen de su caja, sin personalización de las asignaciones de mime / aplicación.


Para C # MVC 4.5 necesitas hacer esto:

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.


Pruebe uno de estos otros tipos de mime (desde aquí: http://filext.com/file-extension/CSV )

  • texto / valores separados por comas
  • texto / csv
  • aplicacion / csv
  • aplicación / excel
  • aplicacion / vnd.ms-excel
  • aplicación / vnd.msexcel

Además, el tipo mime puede ser sensible a mayúsculas y minúsculas ...


Solo usa asi

Response.Clear(); Response.ContentType = "application/CSV"; Response.AddHeader("content-disposition", "attachment; filename=/"" + filename + ".csv/""); Response.Write(t.ToString()); Response.End();


Sugiero insertar un carácter ''/'' delante de ''myfilename.cvs''

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

Espero que obtengas mejores resultados.


Usar text/csv es el tipo más apropiado.

También debe considerar agregar un encabezado de Content-Disposition a la respuesta. A menudo, un Internet Explorer cargará un texto / csv directamente en una instancia alojada de Excel. Esto puede o no ser un resultado deseable.

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

Lo anterior hará que aparezca un cuadro de diálogo "Guardar como" en el archivo, que puede ser lo que usted pretende.


Utilice text/csv como tipo de contenido.