Exportando a Excel desde .NET

Generalmente cuando trabajamos en .NET y tenemos que exportar a Excel nos encontramos con un problema del cual no encontré una solución “simple”. El mismo se trata de un “warning” cuando intentamos “abrir” el archivo generado:

Excel cannot open the file ‘filename.xls’ because the file format for the file extension is not valid. Verify that the file has not been corrupted and that the file extension matches the format of the file.

Warning

Warning

Este error ocurría con los clientes que tenían instalado la versión 2007 Microsoft Excel. Investigando un poco me encontré con diferentes origines del problema, miles de soluciones y ninguna efectiva.

Por lo tanto me puse a probar diferentes frameworks que realizaban exportaciones a Excel, y me encontré con NPOI que está basado en su versión Java, y la verdad que es muy completo. Resumiendo bastante,  NPOI es un proyecto open source que nos ayuda a leer/crear archivos xls, doc y ppt.

Descargadas las DLL correspondientes y referenciadas en mi proyecto ASP.NET MVC 2 me dispuse a probarlas, y efectivamente eliminaron ese molesto mensaje al abrir – con MS Excel 2007 – mi archivo creado 🙂 .

Les dejo a continuación un simple código para quienes deseen probar esta librería:

string filename = "grilla.xls";
Response.ContentType = "application/vnd.ms-excel";
Response.AddHeader("Content-Disposition", string.Format("attachment;filename={0}", filename));
Response.Clear();

HSSFWorkbook workbook = new HSSFWorkbook();
HSSFSheet hoja1 = workbook.CreateSheet("Hoja1");

HSSFRow filaEncabezado = hoja1.CreateRow(0);
filaEncabezado.CreateCell(0).SetCellValue("Fecha");
filaEncabezado.CreateCell(1).SetCellValue("Nombre");
filaEncabezado.CreateCell(2).SetCellValue("Edad");

HSSFRow filaRegistro = hoja1.CreateRow(1);
filaRegistro.CreateCell(0).SetCellValue(DateTime.Now);
filaRegistro.CreateCell(1).SetCellValue("Sebis");
filaRegistro.CreateCell(2).SetCellValue(50);

MemoryStream file = new MemoryStream();
workbook.Write(file);

Response.BinaryWrite(file.GetBuffer());
Response.End();
Anuncios

3 comentarios en “Exportando a Excel desde .NET

  1. me sirvio mucho este ejemplo ya que busque libreria open source para aprender a crear archivos xls y no encontraba algo tan claro como lo que tu amablemente publicaste, por otra parte me gustaria saber donde encuentro informacion sobre como usar las demas proepiedas por ejemplo (HSSFDataFormat, HSSFFont,HSSFPicture) me interesa con el fin de elaborar archivos con mejor formato, gracias

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s