Você está na página 1de 12

Reportes en java con JasperReports y iReports

Con motivo de estreno de este nuevo blog y adems con un objetivo de facilitar mucho la
programacin en cuanto a generar reportes, aqu va un tutorial que les ser de gran ayuda.

En lo que nos centraremos en este tutorial es en la creacin de un reporte en formato PDF,
previamente diseando una plantilla mediante iReport. Se usar una lista enlazada
(LinkedList) como origen de los datos a mostrar y se trabajar en el entorno NetBeans.

Primero necesitaremos de lo siguiente:
- JasperReports
- iReport (diseador grfico de plantillas para JasperReports)
NOTA: Es recomendable usar la misma versin de JasperReports que la de iReports caso
contrario pueden dar errores el ejecutar el programa.

Configuracin de NetBeans

Configuraremos NetBeans para que nos permita usar todas las libreras de JasperReports en
nuestros proyectos.

Primero descomprimimos el archivo que descargamos de JasperReports, pues usaremos
varias de sus libreras localizadas en las carpetas dist y lib.

Iremos al men Herramientas Bibliotecas.


Creamos una nueva Biblioteca de nombre JasperReports (aunque puedes elegir el nombre
que desees).


En la parte derecha damos presionamos en Agregar archivo JAR/Carpeta para agregar
los siguientes archivos (ubicados en las carpetas lib y dist de JasperReports como
mencionamos anteriormente):
- jasperreports-3.7.5.jar
- jasperreports-javaflow-3.7.5.jar
- commons-beanutils-1.8.0.jar
- commons-collections-2.1.1.jar
- commons-digester-1.7.jar
- commons-javaflow-10060411.jar
- iText-2.1.7.jar
- png-encoder-1.5.jar
- poi-3.6.jar
- commons-logging-1.0.4.jar
- groovy-all-1.5.5.jar

Con esto bastar solo agregar la biblioteca JasperReports (o el nombre que le hayamos
puesto) al proyecto en el cual deseemos generar reportes.

Creacin de un nuevo proyecto de prueba

Lo que se realizar es un ejemplo de una clase Empleado que dispone de una cdula, un
nombre y el sueldo.

Primero vamos al men Archivo Nuevo Proyecto Java Aplicacin Java.


Al proyecto le pondremos de nombre ReporteEmpleados.

Ahora creamos una nueva clase a la cual llamaremos Empleado.


Le aadimos todos los Setters y Getters correspondientes adems del constructor, quedando
al final como sigue:

Tenemos lo bsico, ahora disearemos el reporte con iReport

Diseo de la plantilla con iReport

Una vez abierto iReport, para crear una nueva plantilla nos dirigimos al men Archivo
New. En la nueva ventana elegimos Blank A4 y presionamos en Open this template.



Damos un nombre a nuestro reporte, dejaremos de momento el que trae por defecto
report1.

Dispondremos de 8 secciones en nuestro reporte:
- Title: Para colocar el ttulo del reporte, ir en la primera pgina.
- Page Header: Una cabecera que ir en cada pgina
- Column Header: Las etiquetas de las cabeceras de cada columna.
- Detail 1: Los datos en s del reporte.
- Column Footer: Para colocar informacin al final de los datos.
- Page Footer: Seccin inferior de la pgina.
- Summary
- Background: Un fondo

Ahora nos dispondremos a aadir informacin, en la parte derecha encontraremos la paleta
de elementos que podremos agregar (si no aparece ir al men Ventana Paleta).

Para el ttulo seleccionamos Static Text y lo arrastramos a la seccin Title. Una vez que
el elemento est en la pgina, si le damos doble clic podremos cambiar su texto, adems de
la fuente, el tamao, entre otros.



Ahora aadimos las columnas de los datos que vamos a mostrar, o sea aadimos ms
Static Text para indicar la cdula, el nombre y el sueldo.



Ahora estamos listos para aadir campos donde irn los datos, mucha atencin a lo
siguiente
Anteriormente aadimos texto esttico (que no cambia) pero los datos de cada empleado
como sabemos cambia, no sern los mismos, entonces necesitaremos de un campo
dinmico.

Los campos dinmicos tenemos varios como son:
- Fields: Sirven para mostrar informacin provenientes de un DataSource (que puede ser
una base de datos o una lista ligada).
- Variables: Muestran informacin del reporte o clculos. Las variables disponibles las
puedes encontrar aqu.
- Parmetros: Son datos que por lo general son pasados desde el programa. Algunos de los
parmetros solo se pueden leer y no modificar, aqu la lista completa.

Nosotros usaremos Fields, entonces en la parte izquierda de iReport damos clic derecho
sobre Fields y elegimos Agregar Field.


Cada Field tiene un tipo de dato que por defecto es String, pero en nuestro caso donde el
sueldo es de tipo Integer, entonces elegimos java.lang.Integer como Field Class en las
propiedades del Field.


Ahora arrastramos cada field hacia Detail 1. Seguramente en la seccin Column
Header de la hoja se te crearon ms etiquetas, las puedes eliminar tranquilamente. Adems
debes achicar la altura de Detail 1 puesto que ese espacio es el que usar una sola fila y
por el que viene por defecto es bastante grande. Una vez realizado estos cambios el
resultado podra quedar como sigue:



Y aunque no lo creas, ya tenemos lista nuestra plantilla, sencillita por cierto, pero a la final
la creamos nosotros mismos. Ahora solo damos clic en Preview:



Esto compilar la plantilla para generar el archivo report1.jasper el cual es el que haremos
referencia en el cdigo. Dicho archivo lo debemos colocar en la raz de nuestro proyecto.

Nos aparece los datos como null debido a que no existe una fuente de informacin (un
DataSource), pero no te preocupes que en nuestro programa lo vamos a indicar.

Completando el ejemplo de la clase Empleado

Habamos dejado solo definida la clase Empleado con sus atributos y mtodos respectivos,
ahora estamos listos para crear el reporte.

Primero damos clic derecho a la carpeta Bibliotecas de nuestro proyecto, elegimos
Agregar Biblioteca.

De la lista de bibliotecas, seleccionamos el que habamos creado, o sea JasperReports.


En el main de nuestro proyecto aadiremos el siguiente cdigo

LinkedList<Empleado> listaEmpleados = new
LinkedList<Empleado>();
listaEmpleados.add(new Empleado("1234567890", "Juan Prez",
450));
listaEmpleados.add(new Empleado("0987654321", "Marcelo C",
500));
listaEmpleados.add(new Empleado("1234509876", "Don Bill",
5000));
try
{
JasperReport reporte = (JasperReport)
JRLoader.loadObject("report1.jasper");
JasperPrint jasperPrint =
JasperFillManager.fillReport(reporte, null, new
JRBeanCollectionDataSource(listaEmpleados));
JRExporter exporter = new JRPdfExporter();
exporter.setParameter(JRExporterParameter.JASPER_PRINT,
jasperPrint);
exporter.setParameter(JRExporterParameter.OUTPUT_FILE,
new java.io.File("reporteEnPdf.pdf"));
exporter.exportReport();
}
catch(JRException e)
{
e.printStackTrace();
}

Seguramente al pegar el cdigo faltarn algunos imports, esto se soluciona dando clic
derecho sobre el cdigo que da error y eligiendo Reparar importaciones.

Ahora si ejecutamos el programa (presionando F6 en NetBeans) y voil! tenemos
nuestro reporte en PDF, excelente no?.

Para cualquier duda o sugerencia, la puedes dejar en los comentarios.
Publicado por Tukero
Enviar por correo electrnico Escribe un blog Compartir con Twitter









Etiquetas: JasperReports, Java
Grfico Pie y de Barras con JFreeChart
Primero necesitaremos las siguientes libreras:
jfreechart-1.0.13.jar
jcommon-1.0.16.jar

Si tienes JasperReports, esas libreras ya se incluyen en la carpeta lib (en el directorio
donde tengas descomprimido JasperReports).

El siguiente ejemplo consta de la grfica pie que indicar la cantidad de taxis disponibles y
no disponibles (ocupados), y adems de un grfico de barras que indica el progreso de los
taxis (que cantidad de carreras han hecho) segn pasan los das.

1. Creamos un nuevo proyecto, para el ejemplo, basta un Java Application. El proyecto
tendr de nombre PieChart.

2. Aadimos las dos libreras mencionadas al inicio, dando clic derecho a Bibliotecas y
eligiendo Agregar archivo JAR/Carpeta del men desplegable.


3. En el cdigo ya de nuestro programa, aadimos la siguiente funcin:
//crea un frame donde se encuentra el grfico
static ChartFrame mostrarGrafico(JFreeChart grafico, String
titulo)
{
ChartFrame frame=new ChartFrame(titulo,grafico);
frame.pack();
frame.setVisible(true);
return frame;
}

Deberemos reparar las importaciones de ser necesario (Clic derecho Reparar
importanciones).

4. Aadir el siguiente cdigo al main para crear la grfica tipo pie:
//Datos del grfico
DefaultPieDataset datos = new DefaultPieDataset();
datos.setValue("Ocupados",450);
datos.setValue("Disponibles",200);
//se pueden seguir aadiendo ms datos y la grfica los
acomodar en porcentajes
JFreeChart graficoPie = ChartFactory.createPieChart3D(
"Total de Taxis", //ttulo del grfico
datos, //datos
true, //mostrar leyendas
true, //mostrar tooltips
false); //Locale, sin gran
importancia
mostrarGrafico(graficoPie,"Grfico Pie");

Reparar importaciones de ser necesario.
Si deseas un grfico sin diseo 3D puedes usar en vez de createPieChart3D, usas
createPieChart.

5. Aadir el siguiente cdigo al main para crear una grfica tipo barras:
//datos del grfico
DefaultCategoryDataset dataset = new
DefaultCategoryDataset();
String taxi1 = "Taxi 1";
String taxi2 = "Taxi 2";
String dia1 = "Da 1";
String dia2 = "Da 2";
String dia3 = "Da 3";
String dia4 = "Da 4";
dataset.addValue(18, taxi1,dia1);
dataset.addValue(15, taxi1,dia2);
dataset.addValue(16, taxi1,dia3);
dataset.addValue(12, taxi1,dia4);
dataset.addValue(16, taxi2,dia1);
dataset.addValue(19, taxi2,dia2);
dataset.addValue(10, taxi2,dia3);
dataset.addValue(11, taxi2,dia4);
JFreeChart graficoBarras = ChartFactory.createBarChart(
"Uso de los Taxis", //Ttulo de la grfica
"Das de labor", //leyenda Eje horizontal
"Nmero de carreras", //leyenda Eje vertical
dataset, //datos
PlotOrientation.VERTICAL, //orientacin
true, //incluir leyendas
true, //mostrar tooltips
true);
graficoBarras.setBackgroundPaint(Color.LIGHT_GRAY);
CategoryPlot plot =(CategoryPlot) graficoBarras.getPlot();
plot.setBackgroundPaint(Color.CYAN); //fondo del grafico
plot.setDomainGridlinesVisible(true);//lineas de rangos,
visibles
plot.setRangeGridlinePaint(Color.BLACK);//color de las lineas
de rangos
mostrarGrafico(graficoBarras,"Grfico de barras");

Reparar importaciones de ser necesario.

Si deseas un grfico con diseo 3D (sencillo) puedes usar en vez de createBarChart, usas
createBarChart3D.

6. Correr el programa (F6).

Você também pode gostar