⭐Generación de reportes en múltiples formatos con jasper report e ireport
1. Generación de reportes en múltiples formatos
con JasperReport e iReport
Juan David Guarnizo Hernandez (juandavid794@gmail.com)
Grupo de Investigación en Teleinformática con software de código abierto GITECX
Facultad de Ciencias Básicas e Ingeniería Ingeniería de Sistemas
Universidad de los Llanos Villavicencio, Colombia
Introducción
Cuando se desarrolla una aplicación esta no solo debe tener la capacidad de recolectar mucha
información, sino que también debe organizarla y presentarla en usuario de una forma en que genere
algún beneficio u ofrezca alguna información a tener en cuenta en el momento de toma de decisiones
gerenciales o comerciales; sea por medio de gráficas o reportes dinámicos.
Básicamente la generación de reportes se resumen en el diseño y mapeo de datos dentro de un layout
definido. Dentro de ese contexto surgen herramientas que facilitan esta labor En el pasado esa área fue
dominada por productos comerciales como "Crystal Report" que con el pasar del tiempo se hacia mas
robusto integrando nuevas funcionalidades, en el día de hoy se cuenta con herramientas open-source
que cumplen con el mismo objetivo, que también ofrecen facilidad y robustez que la herramientas
comerciales, es el caso de JasperReport.
JasperReport
Es un poderoso framework open-source para la generación de reportes que presenta grandes habilidades
en la organización y presentación de contenido en pantalla, impresora o en formatos como PDF, HTML,
XLS, CSV y XML. Esta completamente escrito en Java y puede usarse en infinidad de aplicaciones
web, distribuidas o de escritorio habilitadas para la generación dinámica de contenido. JasperReport
organiza datos recuperados de una base de datos relacional a través de JDBC.
iReport
Aunque JasperReport es una librería que nos facilita el desarrollo, también se cuenta con una
herramienta de diseño que se puede integrar con Netbeans, donde se diseña de forma gráfica los
archivos XML que se define a través de etiquetas que obedece una estructura, vocabulario y
restricciones declarados en una archivo DTD.
Instalación
Cuando se quiere implementar JasperReport en algunas aplicaciones debemos realizar procesos
paralelos al desarrollo de la aplicación. Adelante presentare algunos ejemplo de diseño e
implementación de esta herramienta desarrollado en iReport utilizado como Plug-in de Netbeans. Por
lo tanto también explicaremos esta forma de instalación
l. El primer paso que se debe hacer el momento de instalar cualquier aplicación en la plataforma de
NetBeans es conseguir los archivos ".nbm" En el caso de "iReport" se pueden conseguir en la
dirección http:/jasperforge.org/project/ireport, Es la pagina principal del proyecto y estos
instaladores contienen incluidos las librerías de "JasperReport".
2. eiRepott
2. Una vez en la pagina del proyecto iReport hay múltiples opciones de obtener la herramienta y
múltiples plataformas, solo se ofrece en modalidad de plug-in en la plataforma NetBeans; las
otras opciones son para utilizar de forma independiente en Windows, Mac Os o Linux.
3. Cuando se descarga iReport para trabajar en NetBeans se obtiene un archivo comprimido el cual
al descomprimirse se obtienen los siguientes archivos.
'io
de archivos
iReport-4.O. '.nbm compone
I .nbm nbm
jasperserver•plugin-
4.O.
I .nbm
4. Una vez se obtienen los archivos de instalación en NetBeans entramos a Herramientas —+
Complementos —+ Descargado —+ Agregar Plugin. Seleccionan los archivos de instalación y
se procede a realizar la instalación.
jaspe
3. 5. En este punto NetBeans ya contiene las librerías de "JasperReport" y también tiene
incorporado la herramienta de diseño de reportes iReport, la cual se relaciona directamente
con una Base de Datos configurada en la barra de herramientas y también existe una nueva
opción en la creación de archivos.
Como Funciona?
4. Principalmente debemos comprender que se inicia con un archivo XML donde las etiquetas difieren
entre elementos como textos estáticos, textos dinámicos, imágenes y formas geométricas, también las
etiquetas establecen las variables, campos, parámetros, posiciones y extensiones; dentro del diseño
también se incluye la consulta a realizar en la base de datos, de donde se obtendrá la información que
finalmente se mostrara en el reporte.
Una vez creado nuestro diseño, este debe ser compilado, por lo cual se genera un archivo de extensión
'.jasper", durante este proceso de compilación se verifica que la sintaxis del archivo XML para
comprobar la consistencia del diseño.Una vez el diseño se encuentra compilado entran en juego las
clases que permiten visualizar, imprimir o exportar el reporte, para dar fin al ciclo de vida.
Conceptos de Básicos de Diseño
El diseño se representa en un "template" que va a ser utilizado por el motor de "JasperRepoft" para
generar un reporte de acuerdo con la estructura y completando con la información obtenida de la base
de datos. Cuando diseñamos un reporte debemos tener en cuenta que el "template" esta dividió
Diseño Compilador
JRDataSource
5. principalmente en la siguientes secciones comúnmente llamadas "Band" o Bandas que cuando se
genera el reporte con los datos, cada una de ella se comporta de forma diferente:
Titie
Page Header
Column Header
Detail 1
Column Footer
Page Footer
Last Page Footer
Summary
No Data
Cuando diseñamos debemos tener en cuenta que estos reportes están muy adjuntos a funcionar con una
fuente de datos, cuando esta fuente es una base de datos en Postgres, MySQL entre otras, debemos
especificar la consulta (Query) que se va a realizar
También es muy importante que "JasperReport" maneja tres tipos diferentes de variables para el
manejo de los datos que son:
Parámetros: Se le asigna su valor antes de que el reporte sea llamado, principalmente se utilizan
para filtrar la información de la consulta a la base de datos o para obtener datos que no se
encuentra fácilmente en la fuente de datos.
Variables: Son utilizadas para realizar cálculos dentro del reporte, como ejemplo el conteo de
las paginas.
Campos o Filas: Representan la única manera de mapear las columnas o datos obtenidos de la
consulta realizada al sistema administrador de bases de datos, deben tener como requerimiento
el mismo nombre de cada columna con su tipo de dato compatible.
Para complementar el uso de los tipos de variables que podemos usar en JasperReport, tenemos las
'Expresiones", que hacen referencia a ellos de la siguiente manera:
SP {Nombre} para hacer referencia a algún parámetro previamente declarado
SV {Nombre} para hacer referencia a alguna variable previamente declarado
SF {Nombre} para hacer referencia a algún campo o columna previamente declarado
Obteniendo estos conceptos básicos de diseño, procederemos a crear un ejemplo completo utilizando
los anteriormente citado:
version="1.O" encoding="UTF-8"?>
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports
http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="report name" pageWidth="595"
8. Generación del Reporte desde el código Java
Observamos anteriormente la forma de diseñar un reporte con iReport iniciando desde lo mas simple.
Ahora ya que aprendimos a diseñar y compilar el reporte, veremos como es llamado en reporte desde
una clase Java indicándole los valores de las variables de tipo "Parámetro" y la fuente de donde
obtendrá los datos, también debemos indicar en nuestra clase que tipo de salida obtendrá; es decir, si
se exporta a un archivo, se hará una impresión o se mostrara en el JasperViewer.
import java. sql. Connection; import java. sql.
DriverManager; import java. util. HashMap;import java.
util. Map; import net.sf.jasperreports.
engine.JasperExportManager; import
net.sf.jasperreports. engine.JasperFillManager; import
net.sf.jasperreports. engine.JasperPrint; import
net.sf.jasperreports. engine.JasperPrintManager; import
net.sf.jasperreports. view.JasperViewer;
public class EjemploJSL{
public static void main(String[]
new EjemploJSL();
public EjemploJSL
try{
Map Parametros — new HashMap();
JasperPrint Reporte — Parametros, this.getConnection());
JasperExportManager. exportReportToPdfFile(Reporte, "archivo.pdf");
JasperExportManager.exportReportTOHtmlFile(Reporte, "archivo.html");
JasperPrintManager.printReport(Reporte, true);
JasperViewer. viewReport(Reporte);
catch(Exception