Manual Users - JAVA - Jasper Reports
Manual Users - JAVA - Jasper Reports
users.code
{ Java }
La librera es 100% Java, y puede reutilizarse tanto en aplicaciones clien-
te y cliente/servidor, como en aplicaciones web, J2EE, etc.
JasperReports permite organizar la informacin obtenida desde una base
de datos relacional, a travs de conectores JDBC, en diseos de reportes pre-
definidos en un formato XML.
Son varios los conceptos que deben conocerse, especialmente, su estructu-
ra de paquetes. Para mejorar su entendimiento, a lo largo de este artculo
presentaremos un ejemplo y describiremos los pasos por seguir.
Conociendo la librera
La estructura de paquetes y las clases ms importantes son:
>net.sf.jasperreports.engine.JasperExportManager
>net.sf.jasperreports.engine.JasperPrintManager
>net.sf.jasperreports.engine.JasperFillManager
>net.sf.jasperreports.engine.JasperCompileManager
>net.sf.jasperreports.view.JasperViewer
>net.sf.jasperreports.view.JasperDesignViewer
Estas clases presentan una abstraccin para facilitar la vista del reporte, el di-
seo, la impresin, el llenado, la compilacin, etc. Las primeras cuatro permi-
ten manejar el motor de generacin del reporte, y las ltimas dos (las pertene-
cientes al paquete view), la visualizacin de los reportes. A continuacin, des-
cribiremos su funcionalidad principal.
Armando un reporte
Los reportes se generan basados en un diseo (xml), armado y compilado
antes de la puesta en marcha del motor generador del reporte. Una vez lis-
COMBINANDO REPORTES EN JAVA
n punto muy importante de los sistemas
se presenta a la hora de mostrar la infor-
macin resultante de los procesos de las
aplicaciones y/o del da a da, principal-
mente, cuando esto implica tomar decisiones comer-
ciales o gerenciales. Dicha informacin, por lo gene-
ral, est almacenada en bases de datos o, en su de-
fecto, en archivos planos.
Es posible realizar consultas a las bases de datos, leer
estos archivos, disear y codificar ventanas o interfa-
ces de usuarios, para interactuar con esa informacin.
Pero este proceso se torna complicado cuando es nece-
sario sumarle la funcionalidad de impresin, la custo-
mizacin rpida de la informacin que estamos mos-
trando, o bien cuando la aplicacin tiene mltiples in-
terfaces, es decir, cuando el usuario puede utilizarla
como un cliente Windows o desde un navegador.
A partir de estos puntos, toma importancia la gene-
racin de reportes, tanto para obtener dinamismo en
las consultas, como para lograr mltiples vistas e, in-
cluso, para facilitar el mantenimiento posterior y su
extensibilidad.
Para Java, durante un tiempo, ste fue uno de los
puntos ms dbiles del lenguaje. Hoy en da, existen
diversas libreras y herramientas dedicadas (varias de
ellas, Open Source) para la rpida generacin de re-
portes. Veremos en esta ocasin la librera JasperRe-
ports, una de las ms conocidas e interesantes, que,
combinada con herramientas para el diseo, facilita
y agiliza la generacin, la previsualizacin y la im-
presin de los reportes.
JasperReports es, precisamente, una poderosa he-
rramienta para generar reportes en Java, con la ha-
bilidad de producir contenido completo para la pan-
talla, directo para impresora o en diferentes formatos
de archivo (PDF, XLS, CSV y XML, entre otros).
U
JasperReports
Analizaremos cmo podemos utilizar una de las libreras ms conocidas
en el lenguaje Java, para poder trabajar de una manera sencilla con los
reportes realizados con otras herramientas.
[Figura 1] Diseo visual del reporte con IReport.
JasperReports es, precisamente,
una poderosa herramienta para
generar reportes en Java, con la
habilidad de producir contenido
completo para la pantalla, directo
para impresora o en diferentes
formatos de archivo.
63
users.code
to el diseo, el motor realiza la carga de datos a tra-
vs de una conexin JDBC a una base de datos rela-
cional, respetando los campos y las consultas prede-
finidas.
Cumplidos estos pasos, entran en juego las clases que
permiten exportar, imprimir o visualizar el reporte, pa-
ra darle fin a su ciclo de vida.
Vamos por partes
A partir de ahora, nos dedicaremos a ver cules son
los pasos que se deben seguir para utilizar la librera
JasperReports.
Diseando
El diseo representa un template que va a ser utili-
zado por el motor para armar el reporte de acuerdo con
su estructura, y completado con la informacin obteni-
da desde la base de datos.
El documento de diseo est representado por un ar-
chivo XML que mantiene la estructura de un archivo
DTD definido por el motor de JasperReports, que se ob-
tiene al descargar las libreras.
Para poder darle vida al reporte y completarlo,
previamente es necesario compilar el archivo.
La generacin de un diseo implica editar un archivo
XML siguiendo el formato publicado por:
<!DOCTYPE jasperReport PUBLIC
"-//JasperReports//DTD Report Design//EN"
"http://jasperreports.sourceforge.net/dtds/
jasperreport.dtd">
Habitualmente, estos documentos XML cuentan con
una estructura similar a la de cualquier documento de
texto, lo cual facilita su entendimiento. Principalmente,
se siguen estas secciones:
title Ttulo del reporte
pageHeader Encabezado del documento
columnHeader Encabezado de las columnas
detail Detalle del documento. Cuerpo
columnFooter Pie de la columna
pageFooter Pie del documento
sumary Cierre del documento
El orden en el que estn enunciadas las secciones,
comnmente llamadas band, es el orden en que, por
lo general, se declaran dentro de un documento, segn
su nivel.
Dentro de cada una de las secciones pueden encon-
trarse, tambin, tags (delimitadores), similares a los del
lenguaje HTML, para indicar campos de texto (<text-
field>), tamao (<size=>), altura (<height=>), ancho
(<width=>), etc.
Incluso, se encuentran las consultas que se realizan a
la base de datos para cargar el reporte, indicadas por el
delimitador: <query String>, as como tambin, la refe-
rencia a los parmetros, variables y campos del reporte,
a travs de los delimitadores $P{parmetro}, $V{varia-
ble} y $F{campo} respectivamente, etc.
Para entender mejor la estructura de este archivo
XML, veamos a continuacin un breve ejemplo:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE jasperReport PUBLIC "-//JasperReports//DTD
Report Design//EN"
"http://jasperreports.sourceforge.net/dtds/
jasperreport.dtd">
<jasperReport name="Reporte .CODE" >
<parameter name="Title" class="java.lang.String"/>
<queryString><![CDATA[select name, cost from
product]]></queryString>
<field name="NOMBRE" class="java.lang.String"/>
<field name="PRODUCTO" class="java.lang.String"/>
<title>
<band height="50">
<textField>
<reportElement x="0" y="0" width="200"
height="50" />
<textFieldExpression>$P{Title}
Aplicaciones con ANT
http://jasperreports.sourceforge.net
Pgina oficial de Jasper Reports, con herramientas, documentacin,
noticias y todo lo referido a esta comunidad.
www.businessobjects.com/products/reporting/
crystalreports/java/default.asp
Pgina de Crystal Reports para Java, con recursos, documentos
y hasta una versin trial para bajar y probar este software.
www.jfree.org/jfreereport
Sitio oficial de una alternativa a Jasper Reports, an en estado beta,
pero realmente interesante.
www.ftponline.com/javapro/whitepapers/reporting/
crystalreports
White Paper sobre reportes desde Crystal Reports, en Java, de la
comunidad JavaPro.
www.reportingengines.com
Sitio con gran cantidad de software para hacer reportes desde Java,
con posibilidad de exportar a Excel, etc.
www.java4less.com
Java for Less ofrece una variedad de componentes para Java, entre
los cuales se incluye RReport, que cuenta con un diseador visual.
users.code
{ Java }
</textFieldExpression>
</textField>
</band>
</title>
<pageHeader>
<textField>Encabezado</textField>
</pageHeader>
<columnHeader>
<band height="20">
<staticText>
<reportElement x="180" y="0"
width="180" height="20"/>
<textElement>
<font isUnderline="true"/>
</textElement>
<text><![CDATA[NAME]]></text>
</staticText>