Экспорт JasperReports в xlsx, а не xls

Я не могу найти, как экспортировать в файл .xlsx в JasperReports 4.1.1. Класс:

JRXlsExporter

не имеет эквивалента Xlsx. И я не могу найти параметр для установки формата вывода из xls в xlsx.

4 ответов


на JRXlsxExporter класс должен использоваться для экспорта в .

пример использования:

        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();

этот ответ должен помочь пользователям с ВЕРСИЯ ОТЧЕТА JASPER >5.6 (последние версии), следовательно, удалите устаревший код.

в более поздней версии >5.6 в JRXlsxExporter.setParameter(..) была deprecated.

вы должны использовать

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();

все, что вам нужно сделать, это поместить формат в путь запроса, например:

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


    List<ActivityDisplay> list = activityManager.listActivities();

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

JRXlsExporter доступен в JasperReports 4.5 и более поздних версиях.