Generar informe Excel con Jasper Report

De ChuWiki


Para generar un informe en excel con Jasper Reports debemos seguir los siguientes pasos

  1. Partimos del fichero jrxml generado con Jasper Studio.
  2. Obtener JasperPrint del informe
  3. Instanciamos la clase JRXlsxExporter
  4. Configuramos su entrada y salida con SimpleExporterInput y SimpleOutputStreamExporterOutput
  5. Generamos el excel

Fichero jrxml[editar]

El fichero jrxml generado con Jasper Studio no tiene por qué ser específico para Excel. Nos vale que tenga cualquier entrada de datos. Sin embargo, si nuestro objetivo es exportarlo a Excel, normalmente va a ser porque queremos tablas. Así que idealmente nuestro jrxml debería tener tablas. No es obligatorio, Jasper Reports se arregla para generar el informe en excel.

Partimos del fichero jrxml generado en el tutorial del Jasper Studio. Lo tienes disponible en github ReportExample.jrxml. Este jrxml hace una consulta a una base de datos y saca una tabla con los resultados. Pone un título al principio del informe, un encabezado y un pie en cada página.

Código para exportar Jasper Report a Excel[editar]

El código para exportar el informe Jasper a excel puede ser como el siguiente

JasperReport report = JasperCompileManager.compileReport("ReportExample.jrxml");

// Conexión con la BD
Connection conn = DriverManager.getConnection(...);
// Posibles parámetros para pasar al informe. Ninguno en nuestro ejemplo
HashMap<String, Object> parameters = new HashMap<>();

// Obtención de la vista JasperPrint del informe 
JasperPrint print = JasperFillManager.fillReport(report, parameters, conn);

// Exportar el informe a formato Excel
JRXlsxExporter exporter = new JRXlsxExporter();
exporter.setExporterInput(new SimpleExporterInput(print));
exporter.setExporterOutput(new SimpleOutputStreamExporterOutput("Informe.xlsx"));
exporter.exportReport();

Explicamos el código

Obtener JasperPrint del informe Jasperreports[editar]

JasperPrint es la clase de Jasperreports que representa un informe ya relleno con los datos, listo para ser visualizado o exportado a algún tipo de fichero, como puede ser excel, pdf, html, etc. Obtener JasperPrint es el procedimiento normal a la hora de generar un informe con Jasperreports, independientemente del formato de salida.

  • Compilar el fichero jrxml con JasperCompilerManager,
  • crear la conexión a la base de datos o a la fuente de datos que necesite el informe,
  • crear un HashMap con las propiedades que requiera el informe
  • Generar JasperPrint con JasperFillManager.

Instanciar la clase JRXlsxExporter[editar]

Una vez tenemos JasperPrint, lo exportamos al formato que queramos. En este caso queremos un excel, así que usamos la clase JRXlsxExporter . A esta clase tenemos que pasarle como entrada la instancia de JasperPrint y de salida el fichero excel donde queremos el informe.

  • exporter.setExporterInput(new SimpleExporterInput(print)) pasa la entrada, JasperPrint.
  • exporter.setExporterOutput(new SimpleOutputStreamExporterOutput("Informe.xlsx")) pasa la salida, es decir, el fichero Informe.xlsx que queremos generar

Finalemente, exporter.exportReport() genera el fichero excel con el resultado.

Informe resultado[editar]

Las siguientes imagenes muestra el informe pdf que se generaba originalmente y el informe en excel. Verás que son muy parecidos