Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Manual Users - Jasper Reports
Manual Users - Jasper Reports
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.
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 diseo, la impresin, el llenado, la compilacin, etc. Las primeras cuatro permiten manejar el motor de generacin del reporte, y las ltimas dos (las pertenecientes al paquete view), la visualizacin de los reportes. A continuacin, describiremos 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 lisusers.code
to el diseo, el motor realiza la carga de datos a travs de una conexin JDBC a una base de datos relacional, respetando los campos y las consultas predefinidas.
Cumplidos estos pasos, entran en juego las clases que
permiten exportar, imprimir o visualizar el reporte, para darle fin a su ciclo de vida.
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.
Diseando
El diseo representa un template que va a ser utilizado por el motor para armar el reporte de acuerdo con
su estructura, y completado con la informacin obtenida desde la base de datos.
El documento de diseo est representado por un archivo XML que mantiene la estructura de un archivo
DTD definido por el motor de JasperReports, que se obtiene 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">
title
pageHeader
columnHeader
detail
columnFooter
pageFooter
sumary
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.
63
{ 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 (ireport.sourceforge.net). En la [Figura 1] podremos ver el
ambiente de desarrollo.
Compilacin
Una vez que el diseo est listo, es necesario compilarlo 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 objeto serializable del tipo net.sf.jasperreports.engine.
JasperReport, que luego se guarda en disco. Este archivo (objeto serializado) es utilizado cuando la aplicacin completa el reporte con informacin.
Para previsualizar un diseo, puede utilizarse la clase 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, vamos a darle vida completndolo con el contenido obtenido 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 carga de datos del reporte. La clase net.sf.jasperreports.
engine.JasperManager expone los mtodos fillReportXXX(), a travs de los cuales nos permitirn rea-
Algunas herramientas
interesantes
Jasper Assistant: www.jasperassistant.com
JasperPal: jasperpal.sourceforge.net
Visualizacin
Luego de cumplir los pasos anteriores, son varios los caminos que podemos
tomar. Por ejemplo, podemos optar por mostrar un reporte por pantalla, imprimirlo 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 reporte, 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 cdigo, 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");
64
users.code
> Itext: se utiliza, habitualmente, para generar reportes de formatos planos, en general, sin campos complejos, aunque cuenta con herramientas para mejorarlos. Soporta la posibilidad de ser exportado a PDF. www.lowagie.com/iText
JasperReports no es la
> 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
manejo de reportes en
> POI: principalmente utilizado para formatos XLS, tanto para lectura como para escritura. 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 diseador, ms motor generador de reportes.
users.code