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 = (JasperReport) JRLoader.loadObject(jasperName);
// Rellenamos el report pasándole al informe la lista de parámetros y el datasource
final JasperPrint print = JasperFillManager.fillReport(report, parameters, conn);
// Exportamos el informe a HTML
final JRHtmlExporter exporter = new JRHtmlExporter();
exporter.setParameter(JRExporterParameter.JASPER_PRINT, print);
exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, oS);
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(jasperReport, parameters, conn);
OutputStream oS = null;
oS = response.getOutputStream();
JasperManager.printReportToPdfStream(jasperPrint, oS);
Exportarlo a xls:
int bit;
File f;
InputStream in;
ServletOutputStream out;
JasperReport jasperReport = null;
jasperReport = JasperManager.loadReport(new FileInputStream(reporteJasper));
JasperPrint jasperPrint=JasperFillManager.fillReport (jasperReport, parameters, conn);
String xlsFileName = "reporte.xls";
//Creacion del XLS
JRXlsExporter exporter = new JRXlsExporter ();
exporter.setParameter (JRExporterParameter.JASPER_PRINT, jasperPrint);
exporter.setParameter (JRExporterParameter.OUTPUT_FILE_NAME, xlsFileName);
exporter.setParameter (JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET, Boolean.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.
f = 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
Comentarios Recientes
2 years 5 weeks ago
2 years 5 weeks ago
2 years 13 weeks ago
2 years 13 weeks ago
2 years 14 weeks ago
2 years 14 weeks ago
2 years 15 weeks ago
2 years 15 weeks ago
2 years 15 weeks ago
2 years 15 weeks ago