Como llamar a un reporte hecho en iReports desde una aplicacion web

Una vez que hemos creado nuestro reporte en ireports, lo siguiente es mostrarselo al usuario o darle la opcion de guardarlo, en el siguiente codigo mostrare como hacerlo de tres formas:

Mostrarlo en el navegador, Exportarlo a PDF y exportarlo a xls

Para empezar lo que es comun a todos los casos:

java.sql.Connection conn null//conexion a la BD, en este caso es un reporte el cual se rellena desde una BD

String dirInformes "reportes";//nombre de la carpeta donde tienes el informe
String reporteNombre =
"reporte1"; //  nombre del reporte a ejecutar

String reporteJasper /*"reportes\\" +*/ dirInformes +"\\"reporteNombre;
reporteJasper request.getSession().getServletContext().getRealPath(reporteJasper); // construimos la ruta del reporte

Map parameters = new HashMap();// parametros
parameters.put("par1",
"valor1");
parameters.put("par2",
"valor2");
...
parameters.put("parN",
"valorN");

Mostrarlo en el navegador

OutputStream oS null;
oS response.getOutputStream();
// Compilamos el .jrxml y lo cargamos 
final String jasperName JasperCompileManager.compileReportToFile(reporteJasper); 
final 
JasperReport report = (JasperReportJRLoader.loadObject(jasperName);   
// Rellenamos el report pasándole al informe la lista de parámetros y el datasource 
final JasperPrint print = JasperFillManager.fillReport(reportparametersconn);   
// Exportamos el informe a HTML 
final JRHtmlExporter exporter = new JRHtmlExporter(); 
exporter.setParameter(JRExporterParameter.JASPER_PRINT, print); 
exporter.setParameter(JRExporterParameter.OUTPUT_STREAMoS);
exporter.setParameter(JRHtmlExporterParameter.IMAGES_URI,"image?image=");
exporter.exportReport(); 

 

Exportarlo a PDF:

response.setContentType(CONTENT_TYPE);
JasperReport jasperReport null;
jasperReport JasperManager.loadReport(new FileInputStream(reporteJasper));
JasperPrint jasperPrint null;
jasperPrint JasperManager.fillReport(jasperReportparametersconn);
OutputStream oS null;
oS response.getOutputStream();
JasperManager.printReportToPdfStream(jasperPrintoS); 

 

Exportarlo a xls:

int bit;
File f;
InputStream in;
ServletOutputStream out;
JasperReport jasperReport null;
jasperReport JasperManager.loadReport(new FileInputStream(reporteJasper));
JasperPrint jasperPrint=JasperFillManager.fillReport (jasperReportparametersconn);
String xlsFileName "reporte.xls";
//Creacion del XLS
JRXlsExporter exporter = new JRXlsExporter ();
exporter.setParameter (JRExporterParameter.JASPER_PRINTjasperPrint);
exporter.setParameter (JRExporterParameter.OUTPUT_FILE_NAMExlsFileName);
exporter.setParameter (JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEETBoolean.TRUE);
exporter.exportReport ();
// En este punto ya esta Creado el XLS
// Ahora leemos el fichero y forzamos al navegador a que nos descargue el fichero.
= new File xlsFileName);
response.setContentType ("application/vnd.ms-excel"); //Tipo de fichero.
response.setHeader ("Content-Disposition""attachment;filename=\"" xlsFileName "\""); //Configurar cabecera http
in = new FileInputStream (f);
out response.getOutputStream ();
bit 256;
while ((
bit)>= 0)
{
  
bit in.read ();
  
out.write (bit);
}
out.flush ();
out.close ();
in.close (); 

 

Espero les sea de ayuda y cualquier duda no duden en preguntar

Saludos