Lanzando informes jasperreports “pdf / xls” desde un servlet
Amiguetes, por aquí seguimos probando y reprobando informes jasperreports. Hoy dejaré un par de apuntes de código que muestran como generar el informe final en pdf o xls teniendo ya el informe diseñado en un fichero .jasper, yo lo he hecho con el ireport, ¿alguien se atreve a hacerlo a mano?, por cierto, y ahora que nadie nos ve, habéis oído hablar de jarvis?, intentaré seguirlo de cerca, parece un plugín para generar informes jasperreport gráficamente en netbeans, pero todavía esta en betas. No me enrollo mas vamos al meollo:
A un informe jasper podremos pasarle tantos parametros como necesitemos para ello debemos crear un Hastable para luego pasarlo como parámetro en la generación del informe:
Para exportar a formato pdf:
-
ServletOutputStream out;
-
// Creamos un objecto jasper con el fichero previamente compilado
-
JasperReport jasperReport = (JasperReport)JRLoader.loadObject ("/javi/InformeDemo.jasper");
-
-
// Generamos el informe pasandole como parametros el objecto creado anteriormente jasperReport, parameters que es el hashmap
-
// creado anteriormente con todos los parametros que necesitemos enviarle al informe y conn una conexión activa con vuestro
-
// servidor de BD
-
byte[] fichero = JasperRunManager.runReportToPdf (jasperReport, parameters, conn);
-
-
// Y enviamos el pdf a la salida del navegador como podríamos hacer con cualquier otro pdf
-
response.setContentType ("application/pdf");
-
response.setHeader ("Content-disposition", "inline; filename=informeDemo.pdf");
-
response.setHeader ("Cache-Control", "max-age=30");
-
response.setHeader ("Pragma", "No-cache");
-
response.setDateHeader ("Expires", 0);
-
response.setContentLength (fichero.length);
-
out = response.getOutputStream ();
-
-
out.write (fichero, 0, fichero.length);
-
out.flush ();
-
out.close ();
Y esta vez probaremos también a generarlo como un xls para excell:
-
int bit;
-
File f;
-
InputStream in;
-
ServletOutputStream out;
-
-
JasperPrint jasperPrint=JasperFillManager.fillReport ("/javi/InformeDemo.jasper", parameters, conn);
-
String xlsFileName = "informeDemo.xls";
-
-
//Creacion del XLS
-
JRXlsExporter exporter = new JRXlsExporter ();
-
exporter.setParameter (JRExporterParameter.JASPER_PRINT, jasperPrint);
-
exporter.setParameter (JRExporterParameter.OUTPUT_FILE_NAME, xlsFileName);
-
exporter.exportReport ();
-
-
// En este punto ya esta Creado el XLS
-
// Ahora leemos el fichero y forzamos al navegador a que nos descargue el fichero.
-
-
response.setContentType ("application/vnd.ms-excel"); //Tipo de fichero.
-
response.setHeader ("Content-Disposition", "attachment;filename=\"" + xlsFileName + "\""); //Configurar cabecera http
-
-
out = response.getOutputStream ();
-
-
bit = 256;
-
while ((bit)>= 0)
-
{
-
bit = in.read ();
-
out.write (bit);
-
}
-
-
out.flush ();
-
out.close ();
-
in.close ();
Y esto ha sido todo por hoy, todavía me queda mucha estadística que machacar, para la próxima mas!















