Exportación a Excel con C# | Parte 3


Actualizado: Exportación a Excel con C# | Parte 1Exportación a Excel con C# | Parte 2

Como ya les había comentado para terminar esta sesión de artículos voy a usar el antes mencionado ClosedXML. Vamos a usar el mismo proyecto anterior como base solo cambiaremos algunas cosas que pasaremos a ver inmediatamente. Necesitaremos ClosedXML y hacer referencia a la siguiente DLL: DocumentFormat.OpenXml.dll (parte de MS Open XML SDK 2.0)

Primero agregamos las referencias como lo hicimos en artículo anterior. Y luego pasamos a escribir esto en nuestro archivo donde vamos a exportar.


using Excel = ClosedXML.Excel;

Ahora continuemos con nuestra exportación.

foreach ( Vendedor persona in lista )
            {
                try
                {
                    worksheet.Range ( "A" + cont ).Value = persona.Nombre + " " + persona.Apellido;
                    worksheet.Range ( "B" + cont ).Value = persona.ventasPrimer;
                    worksheet.Range ( "C" + cont ).Value = persona.ventasSegundo;
                    worksheet.Range ( "D" + cont ).Value = persona.ventasTercer;
                    worksheet.Range ( "E" + cont ).Value = persona.ventasCuarto;

                    //Agregamos la Suma de los Trimestres usando la formula que obtuvimos en el
                    //documento de Excel al crear la Macro.
                    worksheet.Range ( "F" + cont ).FormulaR1C1 = String.Format ( "=SUM(RC[-{0}]:RC[-1])", 4 );

                    //Agregamos el promedio usando otra vez una formula de una Macro en Excel
                    worksheet.Range ( "G" + cont ).FormulaR1C1 = String.Format ( "=RC[-1]/{0}", 4 );

                    cont++;
                }
                catch { }

            }

            worksheet.Range ( "A" + cont ).Value = "Ventas Totales";
            worksheet.Range ( "A" + ( cont + 1 ) ).Value = "Promedio";

            foreach ( char col in columns )
            {
                //Agregamos las Ventas Totales
                worksheet.Range ( col + "" + cont ).FormulaR1C1 = String.Format("=SUM(R[-{0}]C:R[-1]C)", lista.Count);

                //Agregamos el Promedio
                worksheet.Range ( col + "" + ( cont + 1 ) ).FormulaR1C1 = String.Format("=R[-1]C/{0}", lista.Count);
            }

Miremos las diferencias que tenemos.

  1. worksheet.get_Range es cambiado por worksheet.Range
  2. En la misma linea encontramos que ahora usamos Value en vez de Value2
  3. Ya no tenemos el pedazo de código donde exportábamos la gráfica. Esto es porque todavía esta en fase de desarrollo.

Si se estan preguntando que con ClosedXML no han ganado nada y al contrario han perdido funcionalidades, esperen a ver esta pequeña funcionalidad que nos trae el utilizar ClosedXML. 

En la parte de arriba vemos un mensaje bastante descriptivo de Worksheet.Name y abajo vemos un mensaje que no ayuda mucho. Esta pequeña funcionalidad que en mi caso me ha gustado mucho – pues al usar operaciones más difíciles tenemos mas ayuda que con los mensajes de Interop – y aunque esto parezca insignificante no es lo único en lo que es mejor ClosedXML, repasemos algunas cosas en las que es mejor.

  1. Copiar datos desde cualquier Colección IEnumerable (Ejemplo)
  2. Exportar DataTable de manera sencilla (Ejemplo)
  3. Exportar DataSet de manera sencilla (Ejemplo)
  4. Actualizaciones Constantes

Les dejo como queda el proyecto exportado obviamente sin el gráfico porque todavía no existe esa opción. Además adjunto el proyecto exportacionExcel – ClosedXML.zip. Como siempre acordándoles que quiten la extensión .odt y dejen la .zip.

Anuncios

4 Respuestas a “Exportación a Excel con C# | Parte 3

  1. como abro el archivo exportado sin guardarlo?

  2. tu en lace de descarga no funciona

  3. No existe el archivo de descarga

  4. Im thankful for the post. Great. bgakbdeckdde

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