Saltar al contenido

Exportación de JasperReports a xlsx, no a xls

Te damos el arreglo a este contratiempo, o por lo menos eso pensamos. Si continuas con dudas coméntalo y sin tardanza

Solución:

El JRXlsxExportador La clase debe usarse para exportar en XLSX formato.

Ejemplo de uso del exportador con JasperReports versión anterior 5.5.2

Hasta Informes Jasper 5.5.1 este código se puede utilizar para generar un informe en xlsx formato:

JRMapArrayDataSource dataSource = new JRMapArrayDataSource(data);

JasperReport jasperReport = JasperCompileManager.compileReport(reportJRXMLSource);
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, params, dataSource);

JRXlsxExporter exporter = new JRXlsxExporter();
exporter.setParameter(JRXlsExporterParameter.JASPER_PRINT, jasperPrint);
exporter.setParameter(JRXlsExporterParameter.OUTPUT_FILE_NAME, outputFileName);

exporter.exportReport();

Ya que 5.5.2 versión de la biblioteca JRAbstractExporter.setParameter(JRExporterParameter, Objeto) el método está en desuso.

Muestra del uso del exportador con versiones modernas de JasperReports

En este ejemplo usé JRS 6.4.1 versión:

JasperReport jasperReport;
try (InputStream inputStream = JRLoader.getResourceInputStream(jrxmlFilePath)) 
    jasperReport = JasperCompileManager.compileReport(JRXmlLoader.load(inputStream));

Map params = new HashMap<>();

JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, params, new JREmptyDataSource());

SimpleXlsxReportConfiguration configuration = new SimpleXlsxReportConfiguration();
configuration.setOnePagePerSheet(true);
configuration.setIgnoreGraphics(false);

File outputFile = new File("output.xlsx");
try (ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
     OutputStream fileOutputStream = new FileOutputStream(outputFile)) 
    Exporter exporter = new JRXlsxExporter();
    exporter.setExporterInput(new SimpleExporterInput(jasperPrint));
    exporter.setExporterOutput(new SimpleOutputStreamExporterOutput(byteArrayOutputStream));
    exporter.setConfiguration(configuration);
    exporter.exportReport();
    byteArrayOutputStream.writeTo(fileOutputStream);

En lugar de usar JRExporter.setParameter método que tenemos que usar implementación de XlsReportConfiguration interfaz. En el ejemplo anterior usé SimpleXlsxReportConfiguration implementación de XlsReportConfiguration para definir ajustes específicos para JRXlsxExportador exportador.


Más información

  • Características avanzadas de Excel

  • Ejemplo de exportación por lotes

Esta respuesta es para ayudar a los usuarios con VERSIÓN DEL INFORME JASPER >5.6 (últimas versiones), por lo tanto, elimine el código obsoleto.

En la versión posterior> 5.6 el JRXlsxExporter.setParameter(..) ha sido deprecated.

Deberías usar

JRMapArrayDataSource dataSource = new JRMapArrayDataSource(data);

JasperReport jasperReport = JasperCompileManager.compileReport(reportJRXMLSource);
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, params, dataSource);

JRXlsxExporter exporter = new JRXlsxExporter();
exporter.setExporterInput(new SimpleExporterInput(jasperPrint));
File outputFile = new File("excelTest.xlsx");
exporter.setExporterOutput(new SimpleOutputStreamExporterOutput(outputFile));
SimpleXlsxReportConfiguration configuration = new SimpleXlsxReportConfiguration(); 
configuration.setDetectCellType(true);//Set configuration as you like it!!
configuration.setCollapseRowSpan(false);
exporter.setConfiguration(configuration);
exporter.exportReport();

Todo lo que necesita hacer es poner el formato en la ruta de la solicitud, así:

@RequestMapping( value = "/ActivityReport.xlsx", method = RequestMethod.GET )
public ModelAndView generateActivityReportXLS( HttpServletRequest request, HttpServletResponse response ) 


    List list = activityManager.listActivities();

    Map parameterMap = new HashMap<>();
    parameterMap.put( "datasource", new JRBeanCollectionDataSource( list ) );
    return new ModelAndView( "activitiesXLSView", parameterMap );

Valoraciones y comentarios

Si te apasiona la informática, tienes la opción de dejar un ensayo acerca de qué le añadirías a esta sección.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *