28 de enero de 2009

Creación de Reportes con Múltiples Formatos usando JasperReports y iReport

Frecuente, o mejor dicho siempre, los clientes desean ver reportes sobre los datos que se generan en el sistema y, en ocasiones, se encuentran almacenados en nuestra base de datos.

Si han tenido que hacer reportes de 7 o más columnas sabrán que esto no es tan sencillo como muchos de nosotros podríamos pensar. Muchos desarrolladores me han comentado que es lo más fácil que hay ya que, a lo más, nos tardaremos media hora en "crear el query" para obtener los datos que necesitamos...

Si bien esto podría ser cierto en la mayoría de los casos, lo que no siempre es fácil es mapear estos datos a los objetos que vamos a usar y aún menos el formaterarlos de manera que nuestro reporte sea fácil de entender y le proporcione al cliente la suficiente información como para que este le sea de utilidad.

La cosa se complica cuando nos piden reportes en formatos distintos al texto plano o HTML (en el caso de los sistemas web) como por ejemplo PDF, CSV, XLS, RTF, etc., ya que estos formatos no son manejados de forma nativa por Java


Podríamos usar iText para crear los reportes en PDF, JExcelAPI para los XLS, y así sucesivamente. Sin embargo estas APIs no trabajan de la misma forma, por lo que primero tendríamos que aprender a usar cada una de ellas además de que, en la mayoría de los casos, toda la información del formateo de los datos se encuentra en código Java duro, por lo que cualquier cambio requiere primero identificar entre nuestra maraña de código dónde se encuentra la sección que necesitamos modificar y posteriormente hacer este cambio.

Afortunadamente existe una alternativa para la creación de estos reportes: JasperReports. JasperReports es un API OpenSource que nos permite generar reportes en formatos PDF, XML, HTML, CSV, XLS, RTF, y TXT con solo unas cuantas líneas de código y guardar este reporte en un archivo, enviarlo por un OutputStream, o mostrarlo directamente con un visor especial (si usamos una aplicación swing).

Además nos permite integrar en nuestros reportes cosas como gráficas de todos tipos, tablas cruzadas, y subreportes para poder mostrar mejor nuestros datos.

Por si fuera poco los creadores de JasperReports nos proporcionan también un editor WYSIWYG para crear toda la parte visual de los reportes (formatos, posiciones, tipos de letra, estilos, imagenes, decoraciones, etc.) llamada iReport, la cual es un complemento perfecto para JasperReports.

iReports se encuentra en dos versiones, una es como una aplicación standalone básada en NetBeans (de hecho verán que la interface es casi la misma) y la otra es como un plugin para NetBeans 6.0, 6.1, y 6.5.

La última versión de JasperReports es la 3.1.3, publicada el 12 de enero del 2009, y pueden descargarla directamente desde aquí, o pueden entrar aquí para ver si existe una versión más nueva.

La última versión de iReport es la 3.1.3, publicada el 13 de enero del 2009, y está diseñana para trabajar con la versión 3.1.3 de JasperReports (por extraño que parezca) y pueden descargarla directo desde aquí o pueden entrar aquí para ver si existe una versión más nueva. Si prefieren descargarlo como un plugin del NetBeans pueden hacerlo desde aquí.

En el siguiente post explicaré cómo crear nuestros reportes usando iReport y cómo generarlos desde una aplicación Java.

Actualizacion:


Parte 1 del tutorial.