0% encontró este documento útil (0 votos)
342 vistas

Manual Users - JAVA - Jasper Reports

JasperReports es una poderosa herramienta para generar reportes en Java. Permite diseñar reportes en formato XML y extraer datos de bases de datos relacionales para completarlos. El proceso implica diseñar el reporte, compilarlo, llenarlo con datos y luego visualizarlo, imprimirlo u obtenerlo en otros formatos. Las clases de JasperReports facilitan cada una de estas etapas para generar reportes de forma dinámica.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
342 vistas

Manual Users - JAVA - Jasper Reports

JasperReports es una poderosa herramienta para generar reportes en Java. Permite diseñar reportes en formato XML y extraer datos de bases de datos relacionales para completarlos. El proceso implica diseñar el reporte, compilarlo, llenarlo con datos y luego visualizarlo, imprimirlo u obtenerlo en otros formatos. Las clases de JasperReports facilitan cada una de estas etapas para generar reportes de forma dinámica.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 4

62

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>

Una herramienta para tener en cuenta es IReport (ire-


port.sourceforge.net). En la [Figura 1] podremos ver el
ambiente de desarrollo.
Compilacin
Una vez que el diseo est listo, es necesario com-
pilarlo antes de poder iniciar el proceso de llenado.
La compilacin se lleva a cabo a travs del mtodo
compileReport() expuesto en la clase net.sf.jasperreports.
engine.JasperManager.
En este proceso, el diseo es transformado en un ob-
jeto serializable del tipo net.sf.jasperreports.engine.
JasperReport, que luego se guarda en disco. Este archi-
vo (objeto serializado) es utilizado cuando la aplica-
cin completa el reporte con informacin.
Para previsualizar un diseo, puede utilizarse la cla-
se net.sf. jasperreports.view.JasperDesignViewer, a
cuyo mtodo main() es posible entregarle el archivo
xml o el archivo compilado, a fin de visualizarlo.
Generacin
Una vez concluida la etapa de diseo del reporte, va-
mos a darle vida completndolo con el contenido ob-
tenido directamente de la base de datos o de clculos
intermedios.
As como existen clases que abstraen la complejidad
de compilacin del reporte, tambin las hay para la car-
ga de datos del reporte. La clase net.sf.jasperreports.
engine.JasperManager expone los mtodos fillRe-
portXXX(), a travs de los cuales nos permitirn rea-
lizar la carga de datos del reporte, pasndole como parmetros el objeto de
diseo (o bien, el archivo que lo representa en formato serializado) y la co-
nexin JDBC a la base de datos desde donde se obtendr la informacin que
necesitemos.
El resultado de este proceso es un objeto que representa un documento
listo para ser impreso, un objeto serializable del tipo net.sf.jasperreports.
engine.JasperPrint. Este objeto puede guardarse en disco para su uso pos-
terior, o bien puede ser impreso, enviado a la pantalla o transformado en
PDF, XLS, CSV, etc.
Visualizacin
Luego de cumplir los pasos anteriores, son varios los caminos que podemos
tomar. Por ejemplo, podemos optar por mostrar un reporte por pantalla, impri-
mirlo o bien transformarlo en algn tipo particular de archivo, como PDF.
>Mostrar un reporte por pantalla: utilizaremos la clase net.sf. jasperreports-
.view.JasperViewer, la cual, a travs de su mtodo main(), recibe el repor-
te, ya en su etapa final, para mostrar.
>Imprimir el reporte: utilizaremos los mtodos printReport(), printPage() o
printPages(), contenidos en la clase net.sf. jasperreports.engine.
JasperPrintManager.
>Exportar los datos a un formato de archivo especial: podemos utilizar los
mtodos exportReportXXX(), expuestos en la clase net.sf.jasperreports.
engine.JasperExportManager.
Un ejemplo
Veamos el funcionamiento de este motor realizando un ejemplo de cdi-
go, el cual nos permitir entender lo visto.
El siguiente es el cdigo que deberemos utilizar:
Map parametrosReporte; // Mapa de parmetros del reporte
JasperDesign disenioReporte; // diseo del reporte
JRDesignQuery queryReporte; // consulta a la base para
armar el reporte
// Armamos el MAP de parmetros adicionales a pasar al reporte
(los nombres estn determinados por el XML diseado
parametrosReporte.put("Identificacion", "121");
parametrosReporte.put("NumeroSecuencia", "01");
// Cargamos el diseo desde el archivo xml, la extensin por
defecto: .jrxml
disenioReporte = JRXmlLoader.load("DisenoXML.jrxml");
64
Algunas herramientas
interesantes
Jasper Assistant: www.jasperassistant.com
JasperPal: jasperpal.sourceforge.net
OpenReports Designer: opensourcesoft.net
Sunshine Reports: www.sunshinereports.com
[Figura 2] Muestra de la publicacin de un reporte.
65
users.code
JasperReports no es la
nica solucin para el
manejo de reportes en
Java; existen otras libreras
que posibilitan y facilitan la
generacin de reportes.
// Armamos y asignamos el query
queryReporte.setText("Select * from CLIENTES");
disenioReporte.setQuery(queryReporte);
// Compilamos el reporte y genera un objeto JasperReport
JasperReport report = JasperCompileManager.compileReport
(disenioReporte);
/* Llenamos el reporte, pasando el reporte compilado, los
parmetros y la conexin a DB y se genera un objeto
JasperPrint. La informacin se obtendr desde la conexin,
a partir del query indicado */
JasperPrint reporteListo = JasperFillManager.fillReport(report,
parametrosReporte, DBConnection);
/* Generamos el objeto de preview del reporte una vez listo*/
JasperViewer ReporteParaPreview = new JasperViewer(reporteListo,
false);
ReporteParaPreview.setTitle("Nuestro Primer Reporte");
// Mostramos el reporte
ReporteParaPreview.show();
Y qu otras opciones existen?
JasperReports no es la nica solucin para el manejo de reportes en Java; existen
otras libreras que posibilitan y facilitan la generacin de reportes. Elegimos JasperRe-
ports porque es una de las libreras Open Source ms completas, pero en la categora
de libreras gratuitas tambin podemos encontrar otros productos. Algunos de ellos son:
>Itext: se utiliza, habitualmente, para generar reportes de formatos planos, en gene-
ral, sin campos complejos, aunque cuenta con herramientas para mejorarlos. Sopor-
ta la posibilidad de ser exportado a PDF. www.lowagie.com/iText
>FOP: es un reporteador basado en XSL Formatting Objects (XSL FO). Maneja diversos
tipos de formatos, incluso ms complejos que Itext. xml.apache.org/fop
>POI: principalmente utilizado para formatos XLS, tanto para lectura como para escri-
tura. Est basado en Microsoft OLE 2 Compound Document Format. jakarta.apache.org/poi
Por el lado de los productos pagos, tambin existen libreras para el manejo de reportes.
Por ejemplo, hay una versin de Crystal Reports for Java, que cumple las funciones de dise-
ador, ms motor generador de reportes.
[Figura 3] Configurando Crystal Reports para Java.
Incluso, algunas herramientas de desa-
rrollo la traen incorporada en su IDE; una
de ellas es, por ejemplo, Borland JBuilder.
Respecto a las libreras Open Source, la
mayora puede agregarse a las herramientas
de desarrollo, simplemente, descargando la
librera desde el sitio de su fabricante e im-
portando los paquetes .jar, aunque en este
caso, seguramente, no se contar con asis-
tentes grficos.
Para seguir investigando
Para terminar, algunos temas y links im-
portantes para tener en cuenta y utilizar re-
portes en nuestras aplicaciones:
>El primer paso para comenzar a utilizar
las libreras del presente artculo es la
descarga del paquete de clases Jaspe-
rReports completo; no slo el conjunto
de libreras, sino la completa e intere-
sante documentacin que incluye y los
ejemplos de cdigo.
>Como segundo paso, es til conocer las
caractersticas de licenciamiento de Jas-
perReports. Si bien es de cdigo abierto,
debemos saber qu podemos hacer y qu
no con estas libreras. Todo lo referente
a licenciamiento puede consultarse en:
jasperreports.sourceforge.net/license.html.
>Por ltimo, podemos mencionar que
para disear reportes y evitar el trabajo
manual de generacin de archivos
XML, es importante conocer diferentes
herramientas visuales con el fin de en-
contrar la que mejor se adapte a cada
necesidad o nos permita reducir tiem-
pos en el armado.
Para obtener informacin adicional, po-
demos dirigirnos al sitio oficial de Jasper-
Reports, jasperreports.sourceforge.net.
Slo queda determinar los reportes que el
cliente precisa disear, el formato que me-
jor se adapte a esas necesidades, y reutili-
zar las libreras para la automatizacin del
proceso de armado. G

También podría gustarte