miércoles, 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.

7 comentarios:

  1. Muchas gracias por tu articulo .. talvez podrias explicar un poco mas acerca de su instalacion (en donde o hay que ejecutarlo )..y un ejemplo de un reporte conectado a una base de datos ..gracias

    ResponderEliminar
  2. hola, sabes yo trabajo con PHP, usualmente utilizo librerias para los PDF, pero un amigo me dijo que deberia existir algun reporteador, asi que investigue y di con ireport de JAVA pero por ahi me enteré que se puede utilizar java/bridge para utilizarlo en mis proyectos PHP. La verdad no e podido correrlo aun en PHP. Si tienes algun manual entendible o articulo favor de notificarmelo. Saludos excelentes ejemplos de ireport + jasperrepost + netbeans.

    ResponderEliminar
  3. @"Montellano"

    Hola Montellano.

    En realidad nunca he hecho la integración de PHP con Java, sin embargo como comentas, existe un conector para estos dos. En este sitio puedes encontrar un poco más de información (ya incluyendo lo de jasperreports)

    http://www.adictosaltrabajo.com/tutoriales/tutoriales.php?pagina=jasperreportPHP

    El articulo es un poco viejo, pero espere te ayude :D.

    Saludos.

    ResponderEliminar
  4. Muy interesante el foro, quisiera trabajar mucho con iReport y dominarlo al maximo, gracias amigo.

    ResponderEliminar
  5. Buenas tardes.

    Tengo una pregunta.

    Como hago para crear los reportes directamente desde código Java?
    He visto que puedo usar unos ya existentes, pero no veo como crearlos, sin usar el diseñador de reportes.

    Muchas gracias

    ResponderEliminar
  6. Estimado

    soy novato en este tema , estuve leyendo tu articulo y me parece interesante muy didáctico realice los ejemplos y funcionan perfectamente, (en NetBeans y Windows) pero ahora quiero aplicarlos en un servidor linux con tomcat , al desplegar el war de mi proyecto en el servidor no me muestra nada al momento de desplegar el reporte.

    debo instalar algo mas en el servidor de linux.
    por favor orientarme en esto.

    muchas gracias.

    saludos



    ResponderEliminar
  7. buenos dias queria molestarte, estoy haciendo un proyecto en matlab y me dijeron que podia usar java para generar reportes importando librerias de java no se si me puedes ayudar.

    ResponderEliminar