JasperReports导出到xlsx,而不是xls

问题描述:

我无法找到如何在JasperReports 4.1.1中的.xlsx中导出文件。 类:
JasperReports导出到xlsx,而不是xls

JRXlsExporter 

还没有一个XLSX等同。我无法找到一个参数来设置从xls到xlsx的输出格式。

+3

你见过这样的:http://jasperreports.sourceforge.net/api/net/sf/jasperreports/engine/export/ooxml/JRXlsxExporter.html –

+0

@Alex你应该把它放在答案中。 –

+0

@jschoen好的,谢谢 –

JRXlsxExporter类应该用于输出为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(); 
+0

我们是否需要将版本更新到更高版本?我正在使用'jasperreports-3.7.6' – NaaN

+1

@tailorBird版本3.7.0包含这个类。 * JR *的最后一个版本是5.5.1 –

+0

谢谢@Alex K.其实我已经问了一个问题[before](http://*.com/questions/22497343/jrxlsexporter-invalid-row-number-65536-outside - 允许范围)。我在这里找到了答案。会试试这个。 – NaaN

JRXlsExporter在JasperReports的4.5和更高版本是可用的。

所有你需要做的就是把格式的请求路径,像这样:

@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); 
} 

这个答案是帮助用户与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();