Экспорт JasperReports в xlsx, а не в xls - PullRequest
10 голосов
/ 30 августа 2011

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

JRXlsExporter

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

Ответы [ 4 ]

18 голосов
/ 03 ноября 2011

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

Пример использования экспортера сJasperReports версии 5.5.2

Till JasperReports 5.5.1 этот код можно использовать для создания отчета в формате xlsx :

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

Начиная с 5.5.2 версии библиотеки метод JRAbstractExporter.setParameter (JRExporterParameter, Object) устарел.

Пример использования экспортера с современными версиями JasperReports

В этом примере я использовал JRS 6.4.1 версия:

JasperReport jasperReport;
try (InputStream inputStream = JRLoader.getResourceInputStream(jrxmlFilePath)) {
    jasperReport = JasperCompileManager.compileReport(JRXmlLoader.load(inputStream));
}
Map<String, Object> 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);
}

Вместо использования JRExporter.setParameter мы должны использовать реализацию XlsReportConfiguration интерфейс.В примере выше я использовал SimpleXlsxReportConfiguration реализацию XlsReportConfiguration для определения настроек, специфичных для JRXlsxExporter exporter.


Дополнительная информация

14 голосов
/ 08 декабря 2015

Этот ответ поможет пользователям с ВЕРСИЯ ОТЧЕТА 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();
2 голосов
/ 15 августа 2014

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

@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 );
}
0 голосов
/ 03 января 2014

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

...