El siguiente artículo es para quienes esten interesados en una herramienta Java para la elaboración de reportes. Existe una gran variedad de herramientas generadoras de reportes, en este artículo se dará una introducción a JasperReports, considerada por muchos como la mejor herramienta de código libre.
Introducción a JasperReports JasperReports es la mejor herramienta de código libre en Java para generar reportes. Puede entregar ricas presentaciones o diseños en la pantalla, para la impresora o para archivos en formato PDF, HTML, RTF, XLS, CSV y XML.
Está completamente escrita en Java y se puede utilizar en una gran variedad de aplicaciones de Java, incluyendo J2EE o aplicaciones Web, para generar contenido dinámico.
Requerimientos de JasperReports · Se requiere
tener instalado en el equipo el JDK 1.4 (SDK) o posterior. No basta con tener instalado el J2RE (Run Time Environment).
· Las siguientes librerías junto con la de JasperReports deben incluirse en el proyecto en que se desee incluir esta herramienta para generar reportes.
· Driver JDBC 2.0 (Usualmente incluido en el SDK)
· PDF. Librería libre Java-PDF iText por Bruno Lowagie y Paulo Soares
· XLS
Funcionamiento de JasperReports JasperReports trabaja en forma similar a un compilador y a un intérprete, ver figura 1. El usuario diseña el reporte codificándolo en XML de acuerdo a las etiquetas y atributos definidos en un archivo llamado jasperreports.dtd (parte de JasperReports). Usando XML el usuario define completamente el reporte, describiendo donde colocar texto, imágenes, líneas, rectángulos, cómo adquirir los datos, como realizar ciertos cálculos para mostrar totales, etc.
Este archivo fuente XML debe ser compilado para obtener un reporte real. La versión compilada del fuente es nombrada "archivo jasper" (este termina con .jasper). Un Archivo jasper es el compilado de un código fuente. Cuando tenemos un archivo jasper, necesitamos otra cosa para producir un reporte: necesitamos datos. Esto no siempre es cierto. En algunos casos querríamos generar un reporte que no mostrara datos dinámicos, solo texto estático por ejemplo, pero esto puede simplificarse a un reporte que tiene solamente un registro vacío. Para proporcionar estos registros al “jasper engine” necesitamos presentarlos usando una interfaz especial específica llamada JRDataSource. Una fuente de datos + un Archivo jasper = un “archivo print”. Un “archivo print” puede exportarse en muchos formatos como PDF, HTML, RTF, XML, XLS, CVS, etc. La exportación se puede realizar utilizando clases especiales para implementar exportadores específicos.
Compilación, exportación de reportes de JasperReports Para un novato, diseñar y crear el archivo jasper es la tarea mas dura. Cuando se haya diseñado y compilado el archivo jasper, se puede utilizar la librería JasperReports para llenar dinámicamente el reporte en varios entornos como una aplicación web (Usando un servlet de Java por ejemplo, pero también funciona para generar reportes PDF desde un script PHP).
Jasper tiene disponible un visualizador especial para desplegar la vista previa de un reporte; diseñado para aplicaciones tradicionales de Java basadas en Swing.
iReport iReport es un diseñador visual de código libre para JasperReports escrito en Java. Es un programa que ayuda a los usuarios y desarrolladores que usan la librería JasperReports para diseñar reportes visualmente. A través de una interfaz rica y simple de usar, iReport provee las funciones más importantes para crear reportes amenos en poco tiempo.
iReport puede ayudar a la gente que no conoce la sintaxis XML para generar reportes de JasperReports. Funcionamiento de iReport iReport provee a los usuarios de JasperReports una interfaz visual para construir reportes, generar archivos “jasper” y “print” de prueba. iReport nació como una herramienta de desarrollo, pero puede utilizarse como una herramienta de oficina para adquirir datos almacenados en una base de datos, sin pasar a través de alguna otra aplicación.
iReport puede leer y modificar ambos tipos de archivo, XML y jasper. A través de JasperReports, es capaz de compilar XML a archivos jasper y “ejecutar reportes” para llenarlos usando varios tipos de fuentes de datos (JRDataSource) y exportar el resultado a PDF, HTML, XLS, CSV,…
Requerimientos de instalación (Windows 2000, NT, XP) · Sun JDK 1.4 (SDK) o superior.
· Acrobat 5.0 no es requerido, pero es fuertemente recomendado.
· Si se desea conectar con una base de datos, se debe proporcionar el Driver JDBC correspondiente.
Instalación y configuración ((Windows 2000, NT, XP)) Si tiene instalado en su equipo un jdk (sdk) y no simplemente un j2re, está listo para iniciar la instalación.
1. Descomprima iReport-x.x.x.zip y copie el directorio extraído al lugar que desee (C:iReport-x.x.x por ejemplo)
2. Busque un archivo llamado tools.jar en su jdk y cópielo en el directorio lib de iReport. (C:iReport-x.x.xlib)
3. Ejecute iReport.bat o iReport.sh.
Después de ejecutarse por primera vez, iReport creará un directorio (.ireport) en su directorio principal (home). Aquí se almacenarán todos los archivos de configuración en formato XML.
Proceda a configurar iReport con los siguientes pasos:
1. Vaya a menu->tools->options.
2. Vaya a la pestaña de Programas externos (external programs).
3. Configure los programas visualizadores externos.
4. En la pestaña General puede configurar el idioma
Pruebe si la configuración fue correcta. Cree un nuevo reporte en blanco, haga clic en el botón ejecutar sin conexión (run without connection).
Después de unos segundos aparecerá el reporte con el programa que se haya seleccionado para visualizarse.
¿Qué necesito descargar? Este es el resumen de las librerías que debe descargar:
· JasperReports
o
jasperreports-1.0.1.jar o commons-digester.jar
o commons-beanutils.jar
o commons-collections.jar
o commons-logging.jar
o itext-1.02b.jar
o poi-2.0-final-20040126.jar
· iReport
o
iReport-0.5.1 (versión 0.5.1) Recuerde que es necesario tener instalado el Jdk 1.4 o superior, no basta con tener instalado el J2RE.
NOTA: En el directorio /lib de iReport se encuentran versiones de las librerías de jasperreports y librerías adicionales para JasperReports (commons-digester.jar, commons-beanutils.jar, …). Es muy importante asegurarse que la librería de jasper utilizada tanto en iReport como en su proyecto, sea la misma, de lo contrario obtendrá errores al intentar llenar dinámicamente su reporte desde otra aplicación Java. Para cualquier otra versión de iReport que descargue, debe verificar la versión máxima de JasperReports soportada si es que considera descargarla por separado.
Los sitios desde donde puede descargar JasperReports e iReport son los siguientes
jasperreports.sourceforge.net/ ireport.sourceforge.net/index.php)
En ambos sitios tiene la opción de descargar la distribución binaria, o bien el código fuente de los proyectos. Es recomendable obtener el fuente de JasperReports, en este se incluye toda la documentación y API’s, además de código y ejemplos para realizar reportes. Debes obtener la herramienta ANT si deseas modificar y recompilar los fuentes de los proyectos.
¿Como agregar la librería de JasperReports y las librerías adicionales al proyecto? Dependiendo del entorno de desarrollo que utilice (NetBeans, JBuilder, Eclipse…), puede agregar estas librerías a su IDE y posteriormente a su proyecto. Acerca del directorio en que deberían colocarse, algunos prefieren colocar las librerías en el directorio jrelibext de su SDK. Personalmente trabajando en Windows prefiero colocar las librerías en un directorio del proyecto, como el lib. Lo más importante es indicar al compilador el lugar en que estas se localizan.
En JBuilder, las librerías se pueden agregar accediendo al menú tools -> Configure -> Libraries. Seleccionando las carpetas Project o User se oprime el botón New, se pone el nombre de la librería y se especifica el directorio en que se encuentran. Para agregarlas al proyecto, se va al menú Project->Project Properties y en la pestaña Requiered libraries se selecciona la de JasperReports que acaba de agregar y listo.
Si la compilación se realiza manualmente, deberá utilizar -classpath en la línea de comando para especificar la ubicación de las librerías. Un ejemplo de línea de comando es el siguiente:
-classpath "C:JasperReportsjasperreports-1.0.1.jar;C:JasperReportscommons-digester.jar; … ”
Recuerde que debe incluir no solo la librería JasperReports; también sus librerías adicionales, de lo contrario podría obtener errores al compilar su proyecto. La librería iReport.jar en el directorio lib de su iReport, debería agregarse al proyecto solo si diseña el reporte con iReport y pretende compilarlo desde su aplicación Java. En nuestro caso, se diseñará y compilará el reporte con iReport para generar un archivo .jasper, por lo que no es necesario agregar iReport.jar al proyecto.
En la segunda parte del artículo, se mostrará paso a paso la manera de diseñar un reporte con iReport. De la compilación de este reporte, se obtendrá un archivo *.jasper, el cual será llenado y mostrado dinámicamente desde una aplicación Java Swing.
16.- dennis
Martes 12 de junio de 2007 a las 12:42
hola, tengo un poblema se supone q nosotros mandamos parametros de la forma
parameters.put("fecha",Fecha);
parameters.put("id_almacen",id_almacen);
pero como podemos hacer cuando queremos un reporte que tengoa varios valores de id_almacen, sabiendo q el parametro q le mandamos es estatico, hay alguna forma???
ejemplo, si id_almacen es 50, me salgan todos los campos que quiero, luego agregar en ese reporte todos los id_almacen q tiene mi base de datos.
16.1.- Miguel Angel
Viernes 24 de agosto de 2007 a las 11:16
Saludos, este es un gran articulo para inicar con el jasperreports, yo tengo un pequeño problema. Tengo una aplicacion Windows (En Java no es para web es con JFrame y JPanels) cuando aparece el reporte y lo reviso al cerrar esa ventana me cierra toda la aplicacion, ¿alguien tiene idea de por que me pasa esto? agradeciendo de antemano su atencion a este mensaje.
16.1.1.- Alexito
Martes 30 de octubre de 2007 a las 08:57
Miguel Angel, tu problema esta en un simple "true", cuando utilizas el "JasperViewer", al llamarlo debes poner "false" en el segundo campo del constructor, por ejemplo: "JasperViewer.viewReport(print, false);"
espero te sirva, Saludos.
16.1.1.1.- Miguel Angel
Martes 30 de octubre de 2007 a las 11:29
Si me sirvio de mucho, Muchisimas Gracias =D
15.- Carmina
Viernes 09 de marzo de 2007 a las 04:06
Hola, quisiera saber si se puede imprimir un jasperreport sin visualizarlo. Es decir, que cuando pulse al botón no se muestre el report y empiece a imprimir. En caso de no poderse hacer eso, ¿se puede hacer que al pinchar sobre el botón de imprimir del jasperreport no aparezca la ventana de configuración de la impresora? Saludos y gracias.
14.- Richard Bedoya
Jueves 15 de febrero de 2007 a las 06:17
Un articulo muy interesante... práctico y sencillo y de mucha utilidad
13.- Jose Luis Mesa
Viernes 17 de noviembre de 2006 a las 13:38
Hola!!!, me gusto mucho el contenido de los manuales, esta muy bien explicado y sirve para novatos como yo
12.- Hugo
Lunes 16 de octubre de 2006 a las 14:42
12.1.- sdarknot
Viernes 09 de noviembre de 2007 a las 14:25
oe man probe ese link per o sale ke no se encontro la pagina si tienes ese torrent mandalo a mi correo
ok darkx_valen666@hotmail.com
11.- Hugo
Lunes 16 de octubre de 2006 a las 14:40