jueves, 24 de febrero de 2011

Creación de Reportes Gráficos en PDF iReport+JSP

Para completar la creación de reportes en pdf en jsp con iReport, desarrollaremos gráficos estadísticos con los datos que tenemos en nuestra BD.

A modo de ejemplo tengo en una BD la suma de ingresos de algunas personas y lo agrupamos por año. Lo presentamos de la siguiente forma en SQL Developer. Son Agrupaciones desde el 2006 al 2009.



Ya en el iReport creamos nuestra sentencia que nos retornará la suma de los ingresos por año, la misma del SQL Developer.


En la paleta de herramientas del lado derecho, encontraremos el icono de Gráficos, lo arrastramos al área de resumen de nuestro PDF y le damos botón derecho sobre el dibujo para determinar los datos que este contendrá.


Encontraremos la siguiente ventana y debemos seguir los pasos que se señalan en la fotografía.


Procedemos a determinar la serie, categoría y valor de estos en el gráfico. Estos valores son los mismos que retornan nuestra sentencia SQL que definimos en un principio.


A continuación presentamos el gráfico, tiene cambiado el skin, esto puede ser seteado en el menú que se presenta al lado inferior derecho.


Para el proyecto JSP se requerirán las siguientes librerías.


Las librerías pueden ser descargadas del siguiente link.

El llamado del JSP se realiza de la siguiente forma, hay q decir que esto funciona pasando un parámetro desde nuestra pagina JSP (no tiene ningún brillo lanzar un informe sin indicar algún parámetro o filtro a nuestro sistema de base de datos.)

String plu1 = request.getParameter("plu"); 
numero = Integer.valueOf(plu1);
Connection conn=null;
try
{
Class.forName("oracle.jdbc.driver.OracleDriver");
conn= DriverManager.getConnection("jdbc:oracle:thin:@sith.unap.cl:1521:sith","usuario","clave");
out.print("si se conecto");
}
catch (Exception ex)
{
ex.printStackTrace();
}
File reportFile = new File(application.getRealPath("report9.jasper"));

Map parameters = new HashMap();

parameters.put("PLU1",numero);

//parameters.put("ParametroEntero",1);
//parameters.put("ParametroString","valor");
byte[] bytes = JasperRunManager.runReportToPdf(reportFile.getPath (),parameters,conn);
response.setContentType("application/pdf");
response.setContentLength(bytes.length);
ServletOutputStream ouputStream = response.getOutputStream();
ouputStream.write(bytes, 0, bytes.length);
ouputStream.flush();
ouputStream.close();


Con esta guía sumada a la anterior, procurando en pasar parámetros al PDF tiene listo lo de reportes.

Exito gente de SIA

5 comentarios:

Anónimo dijo...

excelente!!!

Anónimo dijo...

Excelente ejemplo, sólo con unos pequeños cambios lo pude usar con un datasource. Gracias...

Unknown dijo...

excelente.... un par de modificaciones y listo, quedo andando joya...

kerberos dijo...
Este comentario ha sido eliminado por el autor.
kerberos dijo...

Disculpa, me llamo mucho la atención tu ejemplo, resulta que quisiera unir varios reportes en un pdf despues de compilarlos .jrxml ...

jasperDesign = JRXmlLoader.load("C:/algo/"+nombre_reporte+".jrxml");
jasperReport = JasperCompileManager.compileReport(jasperDesign);
jasperPrint = JasperFillManager.fillReport(jasperReport,parameters,conn);
response.setContentType("application/pdf");

hasta ahorita llevo algo como eso, gracias de antemano!