Introducción
Nos encontramos trabajando con la plataforma de Microsoft SQL Server Reporting Services y nos piden la realización de un report con una serie de características, entre ellas, que sea exportable a Excel.
Problema
Una vez creado nuestro informe, y según que especificaciones de parámetros nos damos cuenta que la lista de resultados supera el límite de filas permitido por Excel (65.536 por pestaña para versiones previas a 2013). El informe se muestra de forma correcta en el entorno, pero al intentar exportarlo nos encontramos con el siguiente mensaje:
¿Como resolver este error?
Solución
La vía rápida sería la exportación en otros formatos, pero partamos de la base de que el cliente quiere alterar los resultados del informe, tratarlos como tablas, etc.
La idea que planteamos consiste en tratar el número de filas como una agrupación más de nuestro objeto tablix, de tal forma que pagine antes de llegar al tope establecido.
Veámoslo a través de un ejemplo práctico.
Resolviendo el límite de filas
Partimos del report creado (informe con data source, data set y una tabla con nuestros datos).
Añadimos una agrupación de tipo padre por encima del resto de agrupaciones del objeto. Para ello hacemos click en el primer grupo (Detalles en nuestro caso), seleccionamos “Parent Group…” dentro de “Add Group”.
Abrimos las propiedades del grupo (con cuidado de darle un nombre apropiado para saber a que hacemos referencia) para establecer la siguiente expresión:
Int((RowNumber(Nothing))/65520)
Declarando así el tope de registros que serán exportados por pestaña.
Esta restricción es exclusiva para cada Tablix o Matrix en el cuerpo del informe. Si tu informe contiene cabecera deberás tener cuidado con ella (con el pie no hay problema, pues no se exporta en Excel). Puedes modificar la formula en función del espacio extra que necesites (nosotros hemos dejado un pequeño margen para la cabecera).
El siguiente paso consiste en romper la agrupación en un salto de página entre cada instancia del grupo.
Además de eliminar el orden por defecto que establece al crearse.
Por otro lado, cada vez que se crea un grupo se añade de forma automática una columna a la tabla. En este caso no nos interesa, con lo que procedemos a borrarla. Botón derecho en la columna, “Delete Columns”, con cuidado de no borrar el grupo asociado a la columna, seleccionamos la opción "Delete columns only".
Una vez realizados estos pasos, podrás hacer un preview del report y exportarlo sin problemas a cualquier formato Excel.