ERP en la nube: Generación de Reportes en Excel con eFactory ERP/CRM

Generación de Reportes en Excel con eFactory ERP/CRM

(eFactory v4.0.1, también válido para versiones anteriores)

Con eFactory tienes a tu disposición más de 2000 reportes y formatos distribuidos en las diferentes presentaciones de eFactory: eFactory ERP/CRM, eFactory Contabilidad, eFactory Nómina, eFactory iPos... además de la posibilidad de crear nuevos reportes y formatos que se ajusten a las necesidades de tu modelo de negocio. En este artículo se describirá el procedimiento para modificar un reporte de eFactory (en cualquiera de sus presentaciones) para que éste genere un archivo de MS Excel con un formato personalizado.
Reporte en Personalizado en Excel Generado con eFactory - Generación de Reportes en Excel con eFactory ERP/CRM
Reporte en Personalizado en Excel Generado con eFactory

De manera predeterminada los reportes son generados como documentos PDF que puedes archivar, enviar por correo o imprimir.

Reporte en PDF Generado con eFactory - Generación de Reportes en Excel con eFactory ERP/CRM
Reporte en PDF Generado con eFactory
Estos reportes pueden procesar los datos de tu empresa y mostrarlos de forma suficientemente clara para su análisis o para ser usado en la toma de decisiones. Sin embargo, si tu modelo de negocios lo requiere, el resultado del reporte puede ser descargado en un archivo simple de Excel con tan solo seleccionar la opción "Microsoft Excel - Solo datos (xls)" en la lista Destino.
Descargar un listado básico como archivo de Excel  - Generación de Reportes en Excel con eFactory ERP/CRM
Descargar un listado básico como archivo de Excel
Al seleccionar esta opción se descargará un archivo de Excel con los datos del reporte, que consistirá en una fila de encabezados y el resto de las filas contendrá los valores generados por el reporte.

Archivo de Excel Automático - Generación de Reportes en Excel con eFactory ERP/CRM
Archivo de Excel Automático
Si en cambio se selecciona la opción "Microsoft Excel (xls)" se generará un archivo de Excel con un formato similar al mostrado cuando se genera el PDF. Estos dos archivos son generados de forma automática, por lo que la apariencia de los mimos no siempre será la esperada. Con eFactory es posible personalizar la generación del archivo en Excel, como se explicará a continuación.

Cómo Modificar un Reporte de eFactory para salida en MS Excel

La mayoría de los reportes de eFactory consisten de cuatro archivos básicos, todos ellos con el mismo nombre y diferente extensión:

  • ASPX: el archivo de extensión aspx funciona solo como un esqueleto para contener al reporte. Este es el archivo que se configura en el Administrador de Reportes
  • VB: Este es el archivo que contiene la consulta a la base de datos, y es este donde programaremos el envío personalizado a Excel.
  • RPT: Este contiene el aspecto visual del reporte. Los reportes emitidos con Salida igual a "Pantalla" o como "Microsoft Excel (xls)" tendrán la misma apariencia definida en el archivo RPT. 
  • XSD: Este contiene la definición de los datos (nombres y tipos de datos) que se obtendrán en el archivo VB y que se mostrarán en el archivo RPT. 
Para personalizar el envío a MS Excel se deben seguir los siguientes pasos:
  • Si el reporte que se desea modificar es un reporte integrado de eFactory es recomendable crear un duplicado del reporte y modificar el duplicado. 
  • Abrir el archivo de extensión VB. Este archivo puede editarse en cualquier editor de texto, pero es recomendable hacerlo en Visual Studio. Para mayor comodidad al programar puedes utilizar un proyecto configurado como se indica en el artículo Programación de Complementos para eFactory ERP/CRM, Contabilidad y Nómina.
  • En el archivo VB se encuentra el código para ejecutar la consulta. Al final de éste se utiliza el método mObtenerTodosSinEsquema()el cual se comunica con la base de datos para obtener los registros indicados en la consulta. Luego de esto se configura la salida predeterminada del reporte (como pdf en pantalla), y a continuación de este punto es cuando comenzaremos a modificar la salida en Excel.
Estructura Final del Archivo VB del Reporte - Generación de Reportes en Excel con eFactory ERP/CRM
Estructura Final del Archivo VB del Reporte
  • La primera modificación es sencilla: debemos detectar el tipo de salida que el usuario seleccionó, y si esta fue "XLS" entonces ejecutar la lógica de generación. En caso contrario seguir ejecutando el reporte normalmente. 
  • Si la salida es "XLS" le indicaremos al objeto loReporte (el cual es un ReportDocument de CrystalReports) que genere la salida predeterminada en un archivo de Excel en la carpeta temporal de eFactory, usando el nombre de archivo indicado. Nótese que el nombre indicado se compone del mimo nombre del archivo VB más un sufijo aleatorio. 

Bloque de Control para el Tipo de Salida del Reporte - Generación de Reportes en Excel con eFactory ERP/CRM
Bloque de Control para el Tipo de Salida del Reporte

  • Luego llamamos al método Me.mGenerarArchivoExcel(), que será definida más adelante, para que aplique el formato personalizado a la salida en Excel.
  • Una vez aplicado el formato personalizado terminamos enviando el archivo al navegador mediante Me.Response.WriteFile() para que el usuario lo abra o descargue.

Programación de la salida en Excel 

Para programar el método Me.mGenerarArchivoExcel() es necesario tener la DLL Interop.Excel.dll en la carpeta Bin del proyecto.
En líneas generales, el proceso es el siguiente:

  •  Primero, declarar algunas variables con el formato de datos que será aplicado a las celdas de datos más adelante. El número de decimales para los montos, porcentajes, costos, precios, etc, se puede obtener desde opciones (usando el método goOpciones.mObtener()) o pueden colocarse de manera fija, si se conocen de antemano. Los formatos para números y fechas serán especificados en la hoja de Excel mediante cadenas, tal y como se muestra en la imagen siguiente. 

Método mGenerarArchivoExcel(): Variables de Formato - Generación de Reportes en Excel con eFactory ERP/CRM
Método mGenerarArchivoExcel(): Variables de Formato

  • Lo siguiente será declarar las variables de MS Excel que se usarán para manipular las celdas con los datos. 

Método mGenerarArchivoExcel(): Variables de MS Excel - Generación de Reportes en Excel con eFactory ERP/CRM
Método mGenerarArchivoExcel(): Variables de MS Excel

  • Se debe iniciar una nueva instancia de MS Excel y usarse para abrir el archivo que fue generado anteriormente (la ruta y nombre del archivo fue pasado a este método mediante el parámetro lcNombreArchivo). Al abrir el archivo borramos todo el contenido de las celdas, y aplicamos la fuente que usaremos por defecto en el archivo, como se muestra en la siguiente imagen. 

Método mGenerarArchivoExcel(): Abrir el Archivo y Formato por Defecto - Generación de Reportes en Excel con eFactory ERP/CRM
Método mGenerarArchivoExcel(): Abrir el Archivo y Formato por Defecto

  • Luego de abrir el archivo se procede a colocar los valores del encabezado, seleccionado y modificando una a una las celdas o rangos, para lo cual se debe:
    • Seleccionar una celda o rango de celdas, usando el objeto loRango.
    • Establecer el valor de la celda. Este puede ser un valor de tipo cadena (String), número (Integer, Decimal...), una fecha (Date o Datetime), etc. 
    • Si es un número o fecha, se debe establecer el formato de la celda asignándole uno de los formatos definidos al principio del método; por ejemplo: loRango.NumberFormat = lcFormatoMontos
    • Establecer el formato de la celda, indicando si la fuente será en negritas, en cursiva, de diferente tamaño, etc. 

Método mGenerarArchivoExcel(): Celdas del Encabezado del Documento - Generación de Reportes en Excel con eFactory ERP/CRM
Método mGenerarArchivoExcel(): Celdas del Encabezado del Documento

  • Una vez listo el encabezado del documento procedemos a cargar los registros seleccionados. Para ello:
    • Comenzaremos por agregar una fila de Encabezado de Columnas con los nombres de las columnas de datos a mostrar.
Método mGenerarArchivoExcel(): Encabezados de Columnas - Generación de Reportes en Excel con eFactory ERP/CRM
Método mGenerarArchivoExcel(): Encabezados de Columnas

    • Luego podemos seleccionar toda la linea de Encabezados de Columnas para darle un formato apropiado, como bordes, color de fuente y relleno.

Método mGenerarArchivoExcel(): Formato de Encabezados de Columnas - Generación de Reportes en Excel con eFactory ERP/CRM
Método mGenerarArchivoExcel(): Formato de Encabezados de Columnas

    • El objeto loDatos que se pasó como parámetro al método contiene una tabla con los renglones seleccionados en la consulta. Estos deben ser recorridos mediante un bucle FOR, donde cada iteración obtendrá una fila de datos con los valores a insertar, y estos se colocarán en la fila actual de la hoja de cálculo tal y como se hizo con el encabezado de las columnas en un paso anterior. 

Método mGenerarArchivoExcel(): Formato de Datos Seleccionados - Generación de Reportes en Excel con eFactory ERP/CRM
Método mGenerarArchivoExcel(): Formato de Datos Seleccionados

  • Al terminar el bucle FOR anterior, se procede a darle el formato final al archivo. 
    • A las celdas del encabezado puede aplicárseles un autofiltro, que mostrará en pantalla listas para que el usuario pueda filtrar los datos como desee. 
    • Generalmente querremos aplicar un borde alrededor de los datos.
    • Debajo de la tabla de datos se podría agregar algunos totales, como el número de registros, sumatorias, promedios, etc.
    • Antes de terminar se aplica la función Autofit a todas las celdas de la hoja de cálculo, para ajustar los tamaños a los valores que contengan. 
    • Luego del Autofit es recomendable indicar manualmente el ancho de cada una de las columnas de datos.

Método mGenerarArchivoExcel(): Formato Final del Archivo - Generación de Reportes en Excel con eFactory ERP/CRM
Método mGenerarArchivoExcel(): Formato Final del Archivo

  • El último paso será seleccionar la celda A1 del libro (aparecerá seleccionada cuando el usuario lo abra) y guardar los cambios hechos en el archivo temporal. Finalmente se liberan y cierran los objetos de Excel declarados al principio del método.

Método mGenerarArchivoExcel(): Guardado y Cierre del Archivo - Generación de Reportes en Excel con eFactory ERP/CRM
Método mGenerarArchivoExcel(): Guardado y Cierre del Archivo
Con esto el reporte estará listo para probarse. Si no hay problemas los siguientes pasos consistirán en abrir el reporte para probarlo con diferentes conjuntos de datos y verificar que el formato de salida del archivo sea el esperado.

Encontraras mas información técnica y funcional de nuestros productos eFactory ERP/CRM, Contabilidad, Nomina, Software de Punto de Ventas Web y Soluciones móviles en nuestra sección ¿Como lo hago? en nuestro sitio web haciendo clic aquí.

Videos Relacionados:





Roimer García
rjgarcia@factorysoft.com.ve
Desarrollo
Factory Soft Venezuela
www.factorysoft.com.ve


Entradas populares de este blog

ERP Cloud: Actualizaciones de las Versiones de eFactory ERP/CRM

Comprobantes de Retenciones Fiscales y Parafiscales