Consideraciones cuando se exporta a formatos como Excel o CSV
Para evitar comportamientos inesperados a la hora de exportar a formatos como Excel o CSV, es necesario tener en cuenta los siguientes aspectos importantes durante el diseño de reportes:
No todos los formatos de documento son iguales
Puede utilizar muchos elementos diferentes para hacer el diseño. Los datos pueden presentarse en un formato claro tabular, pero usualmente llevan encabezados o títulos con formato y elementos posiblemente gráficos, tablas o subreportes. Un documento con bastantes controles puede ser representado perfectamente por un formato de exportación centrada en el documento como un PDF. Algunos formatos hacen un buen trabajo con la presentación de documentos, pero pueden tener problemas al exportar documentos que necesitan ser editados como DOCX y RTF.
Hay un grupo de formatos con visualización limitada que se usan para el trabajo interactivo con datos integrados. Es el caso de XLS(X) y CSV. Se hablará de estos en este capítulo.
Considere exportar los datos de forma separada
Considere implementar funciones de exportación de datos en las aplicaciones por separado. El sistema de reportes WYSIWYG tiene como finalidad crear las exportaciones de datos para usuarios que desean ejecutar sus procesos de análisis en una hoja de cálculo. Es indispensable que la estructura de exportación de datos sea lo más limpia posible, los elementos visuales de cualquier tipo con frecuencia no ofrecen valor añadido para este propósito.
Exportar datos de forma limpia
Varios formatos de exportación no soportan elementos de intersección. El motor de exportación genera una estructura tabular donde filas y columnas se utilizan para colocar elementos de salida como lo requiere el diseño de informes visuales. Especialmente para formatos de Excel y CSV, esta técnica de implementación puede resultar en más columnas o filas o celdas incluso combinadas, que hace que sea difícil trabajar con los documentos para fines de análisis de datos. Se muestra varios escenarios del problema, encontrando posibles soluciones o estrategias para el diseño de sus informes para mantenerlos compatibles con exportaciones centradas en datos.
Columnas desalineadas
En la siguiente imagen se muestra un diseño de reporte con una tabla. Puede ser difícil de ver, pero las columnas del encabezado no se alinean perfectamente con las del resto de la tabla.
Este es el resultado de la exportación a XLSX:
Se puede ver que sólo las columnas A, C, E y G son totalmente visibles, mientras que las columnas B, D, F y H casi no se pueden ver. Esto sucede porque las columnas en el informe están desalineadas, por lo tanto, las columnas en el encabezado de la tabla no se alinean correctamente con los de la banda de detalle. El problema se vuelve más visible al ampliar el archivo de Excel y agregar algunos colores:
Puede solucionar este problema, alineando de manera precisa el encabezado y la tabla de la banda de detalle de cada celda, mediante los indicadores verticales en el editor.
En esta imagen se muestran las guías de alineación de color rojo.
Espacios en Blanco
En este reporte se muestran algunos elementos gráficos que están separados por espacio entre ellos:
Al exportar a XLSX, este es el resultado:
Se generan filas y columnas adicionales por causa de los espacios que había en el reporte inicial. Para determinar el origen de tales espacios puede ser útil definir colores de fondo del elemento en el diseñador de informes antes de exportar.
En algunos casos, se recomienda deshabilitar la opción CanGrow de las celdas de las tablas para evitar que al momento de exportar las celdas crezca de tamaño y ocurra un desbordamiento en el número de filas en el documento XLS(X).
Los colores se muestran en Excel, haciendo visibles los límites de la celda:
Como solución, se recomienda ajustar las posiciones de cada elemento para que no quede ningún espacio vacío. Puede utilizar las propiedades TextAlignment y Padding para alinearlos.
Encabezado y pie de página
En los reportes, las bandas de encabezado y pie de página también pueden causar problemas en las filas o columnas del archivo de exportación, si sus controles no se alinean con los de otras bandas. El siguiente es un diseño de reporte que muestra este problema:
El archivo XLSX resultante tiene este aspecto:
Usar colores de fondo ayuda a entender exactamente lo que causa el problema. Esta imagen muestra líneas rojas para ilustrar los controles que influyeron en la creación de columnas.
La recomendación es alinear controles en encabezados y pies de página con los de las bandas de datos del informe. En algunos casos es recomendable remover los elementos del encabezado o pie de página en caso que se requiera una mejor tabulación de los datos y no aparezcan columnas adicionales.
Valores calculados y con formato personalizado
Las exportaciones a Excel y CSV no funcionarán en los siguientes casos:
-
Cuando el valor de una celda provenga de un valor calculado.
-
Cuando al valor de una celda se le aplique un valor de formato derivado de un formato personalizado.
-
Cuando se usa el evento BeforePrint para asignar valores personalizados a la propiedad Text de las etiquetas o las celdas de tabla.
Esto es debido a que Excel y CSV son los únicos formatos soportados actualmente que distinguen entre los valores de cadena y otros tipos de datos (como números, decimales etc.) Por ende, no es posible realizar los cálculos que involucren este tipo de campos.
Cuando se requiera exportar este tipo de campos, se recomienda usar el evento EvaluateBinding en vez de BeforePrint. Para tal caso asigne su campo calculado a la variable e.Value y cambie el valor de la celda de XlsxExportOptions.TextExportMode a Text. El dato final siempre será un valor de cadena de texto, por lo tanto, en el archivo de Excel resultante no se podrán realizar cálculos u operaciones, como sumas etc.
Aspectos específicos de CSV
Para las exportaciones CSV, hay dos opciones adicionales que pueden ayudar a evitar las celdas vacías en el archivo resultante. Estas opciones son SkipEmptyColumns y SkipEmptyRows las cuales están habilitadas de forma predeterminada. El siguiente es un diseño de informe de ejemplo para demostrar el efecto de estas opciones:
Cuando se exporta a CSV y se carga en Excel con la configuración predeterminada, este es el resultado:
Y esto es lo que se obtiene si se deshabilitan ambas propiedades:
Otra opción que puede ser útil para las exportaciones CSV es la propiedad estática FollowReportLayout, la cual está habilitada por defecto.
Un informe exportado con esa configuración predeterminada se verá así:
Al deshabilitar esa propiedad, no se observarán ciertos detalles de diseño en el archivo resultante. Esto significa que se podrá eliminar el espacio vacío de una exportación.
Estas opciones adicionales para las exportaciones de formato CSV son importantes dado que este formato requiere estructuras limpias de exportación de datos para que estos puedan usarse en mecanismos de transferencia de datos automatizada.