Exportar a CSV desde ASP.Net MVC con C#

Posted on Posted in .Net, Entity Framework, MVC

Algo muuuuy común que te vas a encontrar es que los usuarios te pidan una forma rápida de exportar a Excel, y al final de cuentas es algo que vas a usar en la mayoría de tus proyectos; y no debería de ser algo doloroso hacerlo, así que buscando en Internet una forma rápida y sencilla para exportar a CSV desde ASP.Net MVC me encontré con la solución.

La librería (mini-librería, realmente es un archivo), que nos ayudara es CsvExport, y tienes dos formas de usarla:

  • La fácil: Copia el archivo/código de CsvExport.cs desde la pagina hacia tu proyecto y listo
  • La mas fácil: bájate el NuGet de CsvExport y listo
Bajar el NuGet de CsvExport para exportar a CSV desde ASP.Net
Bajar el NuGet de CsvExport para exportar a CSV desde ASP.Net

Una vez tengas el código en tu proyecto solo tendrás que crear una nueva acción de tipo FileResult como la siguiente:

public FileResult DescargarCSV()
{
	var filename = "Usuarios.csv";
	var usuarios = db.Usuarios.ToList();
	var miCSV = new Jitbit.Utils.CsvExport();

	foreach (var usuario in usuarios)
	{
		miCSV.AddRow();
		miCSV["ID"] = usuario.ID;
		miCSV["Nombre"] = usuario.Nombre;
		miCSV["Correo"] = usuario.Correo;
		...
		miCSV["PropiedadN"] = usuario.PropiedadN;
	}

	return File(miCSV.ExportToBytes(), "application/csv;charset=utf-8", filename);
}

 

Y para llamar la nueva acción, solamente utiliza esta linea de código en la vista de la entidad donde creaste la acción:

@Html.ActionLink("Descargar CSV", "DescargarCSV")

 

Y ya, tienes tu botón de exportar a CSV desde ASP.Net MVC, solamente modifica el código a tu gusto para que encaje con tus necesidades, este código funciona perfectamente si usas Entity Framework con MVC como tu ORM.