JasperReports导出到xlsx,而不是xls
问题内容:
我在JasperReports 4.1.1中找不到如何在.xlsx中导出文件。班上:
JRXlsExporter
没有Xlsx等效项。而且我找不到参数来设置从xls到xlsx的输出格式。
问题答案:
该
JRXlsxExporter
类应该用于在出口 XLSX 格式。
在JasperReports 5.5.2之前的版本中使用导出器的示例
直到 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 出口。