Ir al contenido principal

Exportar Archivos en C# con NPOI


Siempre que se tiene que exportar un archivo, se tienen varias opciones; se puede pensar en usar reporting services, se puede usar librerías que se encuentran en la red, se pueden usar librerías especificas de .NET, pero hoy vamos a ver como usar la librería NPOI.

La librería NPOI es una librería de código abierto que se usa para parsear data en archivos de excel, en este caso vamos a usar  un data set  para realizar toda la operación.

Se va a crear un libro de excel con extensión xlsx, en el cual se va a crear la plantilla que se requiere para poder visualizar la data y la gráfica correspondiente.
se crea el método dentro del cual se tendrá la lógica 

       public void ejemplonpoi()
          { }
Se crean la variables necesarias para realizar la conversión del archivo
            var extension = "xlsx";
            string result = Path.GetTempPath();
            DataSet dt = new DataSet();
            dt = (DataSet)Session["ListData"];
            MemoryStream ms = new MemoryStream();
            string[] r =
                {
                    "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O",                          "P", "Q", "R",
                    "S", "T"
                };
Variable que contiene la ruta donde se deja la plantilla
            string filename = @"‪C:\Users\Desarrollo\Desktop\prueba.xlsx";

Se obtiene el nombre del archivo

         filename = Environment.GetFolderPath(Environment.SpecialFolder.Resources) + "\\" +         Path.GetFileName(filename);

Se crea el libro de trabajo

          IWorkbook workbook = new HSSFWorkbook();
          using (var file = new FileStream(@"D:\prueball.xlsx", FileMode.Open,      FileAccess.ReadWrite))      
                  {
                      workbook = new XSSFWorkbook(file);
                  }
Se lee el data set y en este caso cada datatable se mete en una hoja diferente del excel
                foreach (DataTable table in dt.Tables)
                  {
                      //Add a new worksheet to workbook with the Datatable name
                      ISheet sheet1 = "Nombre de la hoja en la que se va a ingresar la data";
                      for (int i = 0; i < table.Rows.Count; i++)
                      {
                          IRow row = sheet1.GetRow(i+1);
                          for (int j = 1; j < table.Columns.Count; j++)
                          {
                              ICell cell = row.CreateCell(j);
                              String columnName = table.Columns[j].ToString();
                              cell.SetCellValue(Convert.ToInt32(table.Rows[i][columnName].ToString()));
                          }
                      }
                  }

Por ultimo se obliga la descarga del archivo mediante el navegador del cliente.

 using (var exportData = new MemoryStream())
                  {
                      Response.Clear();
                      workbook.Write(exportData);
                      if (extension == "xlsx") //xlsx file format
                      {
                          Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
                          Response.AddHeader("Content-Disposition",
                              string.Format("attachment;filename={0}", @"D:\prueball.xlsx"));
                          Response.BinaryWrite(exportData.ToArray());
                      }
                      else if (extension == "xls") //xls file format
                      {
                          Response.ContentType = "application/vnd.ms-excel";
                          Response.AddHeader("Content-Disposition",
                              string.Format("attachment;filename={0}", "tpms_dict.xls"));
                          Response.BinaryWrite(exportData.GetBuffer());
                      }
                      Response.End();
                  }

Esta es una forma rápida y sencilla de crear reportes en excel que no tengan que procesar una cantidad muy grande de datos; en el próximo articulo se mostrara como realizar el export con la librería interop


Entradas populares de este blog

BUSQUEDA BINARIA EN C++

holas aqui les dejo el codigo de un ejemplo de busqueda binaria en un vector; esto esta hecho en dev c++.
recordemos que para hacer la busqueda binaria hay un requisito y es que el vector donde se va a buscar debe estar ordenado.
todos los creditos a alejandro ;)

HACER UN LOGIN CON VISUAL BASIC .NET

En este tutorial veremos como crear un formulario para hacer un login de manera fácil y sencilla, la herramienta con la cual se trabajara es visual studio 2010. Para comenzar crearemos un proyecto aplicación de Windows forms visual Basic.

damos un nombre al proyecto y clic en aceptar.  El proyecto se creara con  un formulario por defecto.

ahora vamos a agregar el formulario para hacer el login; para esto damos clic en proyecto agregar Windows form, formulario de inicio de sesión.


le damos un nombre al formulario y clic en aceptar. Aparecerá la siguiente ventana


en esta ventana ya podemos configurar todas las propiedades que necesitemos desde cambio de colores imagen etc.
El siguiente paso es hacer el código para la autentificación El formulario ya tiene un código predefinido el cual vamos a cambiar por un código personalizado.
Para comenzar aremos doble clic sobre el botón que  Aceptar  para que nos muestre el código El eveto del botón tiene el siguiente código
Me.close()
Esa l…

CREAR ARCHIVOS TXT EN VISUAL BASIC 2010

Buenas hoy veremos un ejemplo para crear un archivo .txt en visual basic .NET  utilizando la herramienta visual studio 2010.
el manual de referencia lo podemos encontrar en el libro 
VISUAL BASIC .NET lenguaje y aplicaciones 3ra edicion  Fco. Javier Ceballos
el tipo de acceso mas simple a un fichero de datos es el secuencial, un fichero abierto  para acceso secuencial es un fichero que puede almacenar registros de cualquier longitud.
Este tipo de acceso generalmente se utiliza con ficheros de texto en los que se escribe toda la información desde el principio hasta el final y se lee de la misma forma.
las acciones mas comunes que se manejan a la hora de trabajar con archivos son: CreateNew: crea un nuevo fichero. Si el fichero existe se lanzara una excepción del tipo IOException Create: Crear un nuevo fichero. Si el fichero existe sera sobrescrito  Open: abrir el fichero existente OpenOrCreate: abrir un fichero si existe si no se crea uno nuevo Truncate: abrir un fichero existente y trunca…