Generación de Informes
i í d l
Ingeniería de la Programación g
Práctica 9
• JasperReport: librería Java para el desarrollo de informes
• iReport: Herramienta para el diseño visual de informes JasperReport
Aplicación Java
Di ñ I f (Eclipse)
Diseño Informe (iReport)
Informe jasper JasperReport.jar
2
Informe.jasper p p j
Conexión Java-JasperReport
Contenido
iReport
é
¿Qué es iReport?
Primeros pasos
Configuración
Configuración
Crear Conexión JDBC
Uso del Asistente
Aspectos Avanzados en el Diseño de Informes
Informes parametrizados S bi f
Subinformes
JasperReport
¿Q é e J pe Repo t?
¿Qué es JasperReport?
Configuración de eclipse
Visualizando informes desde java
Visualizando informes desde java
iReport
¿Qué es iReport?
4
iReport -¿Qué es iReport?
•
Utilidad Opensource para crear informes
• Implementado 100% en Java
• Genera informes JasperReports
• Editor WYSIWYG (What You See Is What You Get)
• Soporta todas las bases de datos accesibles por JDBC Sun Java 2 SDK 1 4 o superior
•. Sun Java 2 SDK 1.4 o superior
iReport -¿Qué es iReport?
Proyecto IReport:
http://sourceforge.net/projects/ireportp // g /p j / p
Descarga Binarios:
http://sourceforge.net/project/showfiles.php?group_id=64348
T t i l (E i lé )
Tutoriales (En inglés):
http://sourceforge.net/docman/?group_id=64348
Foros de Ayuda (En inglés. Es necesario registrarse)
http://sourceforge net/forum/forum php?forum id=217623
http://sourceforge.net/forum/forum.php?forum_id=217623
http://sourceforge.net/forum/forum.php?forum_id=217622
6
iReport
Primeros Pasos
iReport - Primeros pasos
Configuración
Menu Options >Opciones
Menu Options->Opciones
8
iReport - Primeros pasos
Configuración
3 4 2
1
1. Propiedades del entorno 1. Propiedades del entorno
• Indicamos el Look & feel, idioma, opciones por defecto, etc
2 Directorios del compilador 2. Directorios del compilador
• Directorio donde se encuentra el compilador de informes, donde se almacenan los informes generados etc
donde se almacenan los informes generados, etc.
3. Opciones de Backup
9
4. Programas externos
iReport - Primeros pasos
Configuración
Directorio de Compilación
Directorio de Compilación
Indica donde se Indica donde se
guardan los ficheros
*.jasper
(importante saberlo porque luego se
cargan desde Java)
10
iReport - Primeros pasos
Conexión con Hibernate
Data > Conexiones / Fuentes de datos
Data -> Conexiones / Fuentes de datos
iReport – Primeros pasos
Crear la conexión a la fuente de datos
1º Creamos la conexión
1 Creamos la conexión
Conexión JDBC
Segundo: Nombre de g la Conexión y URL
Primero:
Conexión BD JDBC
Tercero: probar la conexión
12
Conexión BD JDBC
iReport - Primeros pasos
Crear la Conexión a la fuente de datos
1º Creamos la Conexión
1º Creamos la Conexión
Conexión Hibernate
2º: Nombre de la conexión
1º: Tipo:
Conexión Hibernate Conexión Hibernate
iReport - Primeros pasos
Crear Conexión Hibernate
2º Modificamos el Classpath p
Incluimos:
-la librería hsqldb.jar
Di t i 'd t ' d d t l bd d h lbd -Directorio 'data' donde se encuentra la bd de hsqlbd Si es una conexión Hibernate añadir además los paths:
Directorio de archivos fuentes (src) de nuestro proyecto
14
Directorio de archivos binarios (bin) Directorio donde están los mappings
Directorio donde está el archivo hibernate.cfg.xml
iReport - Primeros pasos
Crear Conexión Hibernate
3º Reemplazamos la librería de conexión
HSQLDB i IR t
a HSQLDB que viene en IReport IREPORT\lib\hsqldb 1 7 1 jar IREPORT\lib\hsqldb-1.7.1.jar Por la que viene con HSQLDB:
Por la que viene con HSQLDB:
HSQLDB\lib\hsqldb.jar HSQLDB\lib\hsqldb.jar
Manteniendo el nombre existente (hsqldb- ( q
1.7.1.jar)
iReport - Primeros pasos
Primer informe: Uso del Asistente
iReport proporcina un asistente que nos facilita la
iReport proporcina un asistente que nos facilita la creación de informes sencillos
Fichero-> Mago de Informes
Fichero > Mago de Informes
5 pasos:
5 pasos:
1º Seleccionar conexión y definir consulta SQL
2º Seleccionar camposp
3º Indicar si se agrupa por algún campo
4º Definir apariencia (Layout)
5º Finalizar asistente
Nota: Antes recuerde arrancar el HSQLDB
16
Nota: Antes, recuerde arrancar el HSQLDB
iReport - Primeros pasos
Primer informe: Uso del Asistente
1º Seleccionar conexión y definir consulta SQL
1º:Nombre de la Conexión la Conexión
2º C l 2º:Consulta
SQL
iReport - Primeros pasos
Primer informe: Uso del Asistente
2º Seleccionar campos
3º Indicar si se agrupa por algún campo 3 Indicar si se agrupa por algún campo
Atributos de Atributos que
18
Atributos de
la consulta aparecen en el informe
iReport - Primeros pasos
Primer informe: Uso del Asistente
4º Definir apariencia (Layout) Columna: para cada registro un campo bajo de otro
T b l d i
5º Finalizar asistente
Tabular: para cada registro un campo al lado del otro
5 Finalizar asistente
Plantilla para los aspectos estéticos
iReport - Primeros pasos
Primer informe: Uso del Asistente
Al finalizar obtenemos el diseño del informe
Al finalizar obtenemos el diseño del informe
20
iReport - Primeros pasos
Primer informe: Uso del Asistente
Para visualizar el informe:
Para visualizar el informe:
Construir -> Ejecutar informe (usando conexión activa)
Guardará además el diseño en un documento xml
Guardará además el diseño en un documento xml
iReport - Primeros pasos
Primer report: con Conexión Hibernate
1º Seleccionar la fuente de datos y definir una consulta HQL
1º: Conexión Hibernate
2º: consulta HQL
22
iReport - Primeros pasos
Primer report: con Conexión Hibernate
P d i bi l ti bá i
Puede ser necesario cambiar los tipos básicos por
clases (p.e. int Æ java.lang.Integer)
iReport
Aspectos Avanzados en el Diseño de Informes
24
iReport - Aspectos Avanzados en el Diseño de Informes
Crear un informe nuevo:
Fichero -> nuevo documento
Nombre del informe
Fichero -> nuevo documento
•Tamaño del papel
•OrientaciónOrientación
•Márgenes, columnas, etc.
Modificar Propiedades: Editar -> Propiedades del Informe
iReport - Aspectos Avanzados en el Diseño de Informes
Definer la consulta a la BD: Datos -> Consulta de informe
de informe
Escriba una consulta SQL y pulse 'Leer Campos' para ejecutarl
Consulta
26
SQL
iReport - Aspectos Avanzados en el Diseño de Informes
También puede construir la consulta en el Diseñador de Consultas
.
iReport - Aspectos Avanzados en el Diseño de Informes
Consultas en conexiones Hibernate:
4º S l i l 4º Seleccionamos los atributos a incluir en el
informe, pudiendo d 1º Creamos Consulta
HQL
navegar a través de aquellos que sean objetos HQL
2º La ejecutamos
3º Borramos atributos
28
iReport - Aspectos Avanzados en el Diseño de Informes
Archivos
Abiertos Ventana de
propiedades
Estructura del Documento Librería de
(Elementos definidos) Elementos
iReport - Aspectos Avanzados en el Diseño de Informes
Cada informe se divide en 7 secciones:
30
iReport - Aspectos Avanzados en el Diseño de Informes
Cada informe se divide en 7 secciones (bandas):
1. Título: Define el título del informe. Se imprime una única vez al inicio del informe. Puede imprimirse en una página p p g separada.
2 Cabecera de Página: Define una cabecera para las
2. Cabecera de Página: Define una cabecera para las
páginas del informe. Se imprime una vez por página. Todas las páginas del informe presentan la misma cabecera de
á
página.
3 Cabecera de Columna: Define la cabecera de cada una
3. Cabecera de Columna: Define la cabecera de cada una de las columnas de la sección detalle. Generalmente, se usa para indicar el nombre de los atributos listados en la sección
‘detalle’detalle .
iReport - Aspectos Avanzados en el Diseño de Informes
Cada informe se divide en 7 secciones (bandas):
4. Detalle: en esta sección se define el diseño con el que se muestra cada registro de la base de datos. Se imprime
i
tantas veces como registros se recuperen.
5 Pie de Columna: Esta sección aparece al final de cada
5. Pie de Columna: Esta sección aparece al final de cada columna definida en la sección detalle.
6. Pie de Página: Esta sección aparece al final de cada página del informe.
7. Resumen: Esta sección aparece al final del informe.
Generalmente se usa para presentar información resumida o ibl d t t dí ti
32
posibles datos estadísticos.
iReport - Aspectos Avanzados en el Diseño de Informes
Elementos de un Informe:
Elementos Gráficos:
Elementos Gráficos:
Línea: dibuja una línea en el informe
Cuadrado: dibuja un cuadrado en el informe
Cuadrado: dibuja un cuadrado en el informe
Elipse: dibuja una elipse en el informe
Elementos de Texto:
Texto estático: muestra un texto estático en el informe
Campo de texto: muestra el texto obtenido a partir de una expresión java
expresión java
Sub-Informes: incluye un informe ya existente
Elementos Especiales:
Elementos Especiales:
Código de barras: genera un código de barras
Gráficas: permite crear una gráfica de datos
Gráficas: permite crear una gráfica de datos
iReport - Aspectos Avanzados en el Diseño de Informes
Elementos de un Informe:
Elipse
Campo d T t
Código de Barras Elipse de Texto Barras
Gráfica Línea
Cuadrado Texto Estático
Imagen Marco
SubInforme Estático
34
iReport - Aspectos Avanzados en el Diseño de Informes
Campos de Texto:
muestra el texto obtenido a partir de una expresión javap j
String
Resultado de Operaciones Matemáticas Resultado de Operaciones Matemáticas
Valor devuelto por funciones Java
Parámetros o Variables
Parámetros o Variables
Campos de la conexión de datos
Nos permite visualizar la información íd d l b d d
extraída de la base de datos.
iReport - Aspectos Avanzados en el Diseño de Informes
Propiedades del
Campo de Texto Expresión Java p
Campo de BD:
$F{NombreCampo}
$F{NombreCampo}
Seleccionar de la Lista
TextField->Expression
36
iReport - Aspectos Avanzados en el Diseño de Informes
Campos de Texto
Se pueden añadir campos de texto asociados a campos p p p de la BD, Parámetros y Variables arrastrando a la zona de diseño los elementos de la Librería
iReport - Aspectos Avanzados en el Diseño de Informes
Ejemplo:
Título Título Cabecera de Página de Página Detalle
Pie de Página Página
38
iReport - Aspectos Avanzados en el Diseño de Informes
Ejemplo:
C b d
Titulo Cabecera de
Página
Detalle
Pie
iReport - Aspectos Avanzados en el Diseño de Informes
Ejemplo:
Lí
Campos de TextoTexto Estático Líneas
Asociados a la BDCampos de Texto Campos de Texto Asociados a
40
p
Asociados a Variables p
Funciones Java
iReport - Aspectos Avanzados en el Diseño de Informes
Ejemplo:
Líneas Texto Estático
Campos de Texto Asociados a la BD
Campos de Texto
Campos de Texto
Asociados a Variables Asociados a
Funciones Java
iReport - Aspectos Avanzados en el Diseño de Informes
Parámetros:
Son valores enviados al informe desde un programa externo
Definición:
Menú Contextual Estructura del
Documento:
add-> Parameter
42
iReport - Aspectos Avanzados en el Diseño de Informes
Parámetros:
Se suelen utilizar para parametrizar la consulta SQL asociada a la fuente de datos
asociada a la fuente de datos
$P {NombreParámetro}
iReport - Aspectos Avanzados en el Diseño de Informes
Variables:
Son objetos usados para almacenar el resultado de calculos como subtotales, sumas, etc.
Definición:
Menú Contextual Estructura del Documento :
add-> Variable
Nombre de la Variable
Tipo de la Variable
44
iReport - Aspectos Avanzados en el Diseño de Informes
Variables: Existen Variables Predefinidas
PAGE NUMBER: número de páginas del informe PAGE_NUMBER: número de páginas del informe COLUMN_NUMBER: número de columnas
REPORT_COUNT: número de registros por la consulta asociada al origen de datos
PAGE_COUNT: número de registros mostrados en la página actual COLUMNS COUNT: número de registros mostrados en la columna COLUMNS_COUNT: número de registros mostrados en la columna actual
Acceso al Valor de una Variable: Acceso al Valor de una Variable:
Campo de Texto -> $V {NombreVariable}
iReport - Aspectos Avanzados en el Diseño de Informes
Ejemplo:
f P li l h from Pelicula p where
p.genero.nombregenero=${GENERO}
46
iReport - Aspectos Avanzados en el Diseño de Informes
Subinformes
Se utilizan para crear diseños Maestro Detalle a
Se utilizan para crear diseños Maestro-Detalle a partir de relaciones 1 a muchos
Ejemplo:
Ejemplo:
Director (Maestro)
Lista de Peliculas (Detalle)
( )
iReport - Aspectos Avanzados en el Diseño de Informes
Subinformes
Se crean dos informes por separado
Se crean dos informes por separado
Uno para el detalle
Otro para el maestro
Otro para el maestro
La consulta del informe detalle se define La consulta del informe detalle se define parametrizada
from Pelicula p where p.genero.nombregenero =
$P{GENERO}
Se incluye el detalle como subinforme del maestro y se le pasa el parámetro correspondiente
48
y se le pasa el parámetro correspondiente
iReport - Aspectos Avanzados en el Diseño de Informes
Subinformes
Para incluir un informe como subinforme se crea un
Para incluir un informe como subinforme se crea un
componente subinforme dentro de la sección detalle del maestro
Seleccionamos “usar un informe existente”
Seleccionamos el fichero correspondiente al informe detallep
Pulsamos en Siguiente
iReport - Aspectos Avanzados en el Diseño de Informes
Subinformes
Indicamos que se utilice para el subinforme la misma
Indicamos que se utilice para el subinforme la misma conexión que se utiliza en el informe maestro
Pulsamos en Siguiente
50
iReport - Aspectos Avanzados en el Diseño de Informes
Subinformes
Indicamos la expresión definida en el maestro que se va a
Indicamos la expresión definida en el maestro que se va a utilizar para dar valor al parámetro definido en el
subinforme
P l T i
Pulsamos en Terminar
Expresión en el Maestro
P á
Parámetro
subinforme
iReport - Aspectos Avanzados en el Diseño de Informes
Subinformes
Una última modificación manual necesaria para que se
Una última modificación manual necesaria para que se visualicen los subinformes
new HashMap($P{REPORT PARAMETERS MAP}) _ _
boton derecho->
P i d d Propiedades
52
iReport - Aspectos Avanzados en el Diseño de Informes
Subinformes en relaciones muchos-a- muchos
muchos
La consulta en el subinforme debe cambiarse.
Por ejemplo, para listar todas las películaspor director j p , p p p (desde la relación Pelicula-Director):
Consulta en el informe Maestro:
from Director d from Director d
Lista de campos de Director: iddirector, nombre
Consulta en el subinforme:
from Pelicula p where $P{NOMBRE} IN p directores nombre from Pelicula p where $P{NOMBRE} IN p.directores.nombre
Lista de campos de Pelicula: titulo, fecha
Aquí directores es el conjunto definido en la clase Pelicula que guarda Aquí, directores es el conjunto definido en la clase Pelicula que guarda
las instancias de directores de una película.
JasperReport
¿Qué es JasperReport?
54
JasperReport - ¿Qué es JasperReport?
Librería Java para la creación de informes
OpenSource
Generación de informes en archivos PDF, HTML, XLS, CSV y XML.
Se pueden utilizar diversos orígenes de datos:
JDBC TableModels JavaBeans XML Hibernate JDBC, TableModels, JavaBeans XML, Hibernate, and CSV.
Puede ser incluida en cualquier proyecto Java
(incluyendo J2EE y Aplicaciones Web)
JasperReport - ¿Qué es JasperReport?
Documentación y Libreria (Registrado):
http://jasperforge org/sf/projects/jasperreports
http://jasperforge.org/sf/projects/jasperreports
API:
http://jasperreports.sourceforge.net/api/
56
JasperReport
Configuración de Eclipse
JasperReport - Configuración de Eclipse
Incluir la librería JasperReport en el proyecto Eclipse
jasperreports-1.2.2.jar
Project ->Properties ->Java Build Path-> Libraries
58
JasperReport - Configuración de Eclipse
Incluir además las siguientes librerías:
Jakarta Commons Digester Component (versión 1.1 o posterior)
posterior)
http://jakarta.apache.org/commons/digester/
commons-digester.jar
Jakarta Commons BeanUtils Component (versión 1.1 o posterior)
http://jakarta.apache.org/commons/beanutils/
b il j commons-beanutils.jar
Jakarta Commons Collections Component (versión 1.0 o posterior)
posterior)
http://jakarta.apache.org/commons/collections/
commons-collections.jar
Jakarta Commons Logging Component (versión 1.0 o posterior) http://jakarta.apache.org/commons/logging/
commons-logging.jar commons logging.jar
JasperReport
Visualizando informes desde Hibernate
60
JasperReport - Visualizando informes desde Hibernate
La comunicación entre IReport y JasperReport se lleva a cabo a través de un conjunto de parámetros definidos en un objeto HashMap
HashMap
Cuatro Pasos
1. Creación de Objetos
Session sesion=
UtilidadHibernate getSessionFactory() openSession();
ó á
UtilidadHibernate.getSessionFactory().openSession();
HashMap parametros = new HashMap();
2. Definición de Parámetros
// Obligatorio: Pasamos la fuente de datos (sesión Hibernate) parametros put(JRHibernateQueryExecuterFactory PARAMETER
parametros.put(JRHibernateQueryExecuterFactory.PARAMETER_
HIBERNATE_SESSION,sesion);
// Opcionales: parámetros del informe
// p p
parameterMap.put("genero","Comedia");
JasperReport - Visualizando informes desde Hibernate
3. Paso de Parametros al informe
String fileName= "reports/ReportParametros jasper";
String fileName= "reports/ReportParametros.jasper";
JasperPrint informe=
JasperFillManager.fillReport(fileName,
parameterMap);
4. Visualización del Informe
parameterMap);
JasperViewer.viewReport(informe, false);
62
JasperReport - Visualizando informes desde java
Ejemplo Completo (ejecuta el informe de la página 46)
..
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.query.JRHibernateQueryExecuterFactory;
import net.sf.jasperreports.view.JasperViewer;
import net.sf.jasperreports.engine.JRException;
..
JasperPrint informe = null;
Session sesion= UtilidadHibernate.getSessionFactory().openSession();
HashMap parametros = new HashMap();
parametros.put(JRHibernateQueryExecuterFactory.
PARAMETER_HIBERNATE_SESSION,sesion);
parametros.put("genero","Comedia");
try {
String fileName= "reports/ReportParametros.jasper";
informe= JasperFillManager.fillReport(fileName, parametros);
}
catch (JRException e){e.printStackTrace();}
JasperReport - Visualizando informes desde java
Para obtener más información consultar el API de las siguientes clases:
JRHibernateQueryExecuterFactory:
http://jasperreports sourceforge net/api/net/sf/jasperreports/engine/qu http://jasperreports.sourceforge.net/api/net/sf/jasperreports/engine/qu ery/JRHibernateQueryExecuterFactory.html
JasperReport:
http://jasperreports sourceforge net/api/net/sf/jasperreports/engine/Jas http://jasperreports.sourceforge.net/api/net/sf/jasperreports/engine/Jas perReport.html
JasperFillManager:
http://jasperreports sourceforge net/api/net/sf/jasperreports/engine/Jas http://jasperreports.sourceforge.net/api/net/sf/jasperreports/engine/Jas perFillManager.html
JasperPrint:
http://jasperreports sourceforge net/api/net/sf/jasperreports/engine/Jas http://jasperreports.sourceforge.net/api/net/sf/jasperreports/engine/Jas perPrint.html
JasperViewer:
http://jasperreports sourceforge net/api/net/sf/jasperreports/view/JRVie
64
http://jasperreports.sourceforge.net/api/net/sf/jasperreports/view/JRVie wer.html