0

我有一个 jrxml 文件,我想用 3 个不同的数据源填充它。然后我想导出到一个 XLS 或 XLXS 文件,其中 3 个报告在一张纸上连接在一起。

String input = "C:\\location\\report1.jrxml";
JasperReport jreport = JasperCompileManager.compileReport(input);         

JasperPrint jprint1 = JasperFillManager.fillReport(jreport, new HashMap<String, Object>(), new JRBeanCollectionDataSource(getReportData(1)));
JasperPrint jprint2 = JasperFillManager.fillReport(jreport, new HashMap<String, Object>(), new JRBeanCollectionDataSource(getReportData(2)));
JasperPrint jprint3 = JasperFillManager.fillReport(jreport, new HashMap<String, Object>(), new JRBeanCollectionDataSource(getReportData(3)));

List<JasperPrint> jprintlist = new ArrayList<JasperPrint>();

jprintlist.add(jprint1);
jprintlist.add(jprint2);
jprintlist.add(jprint3);

JRXlsxExporter exporter = new JRXlsxExporter();
exporter.setParameter(JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET, Boolean.FALSE);
exporter.setParameter(JRXlsExporterParameter.JASPER_PRINT_LIST, jprintlist);

String xlsFile = "C:\\location\\test.xlsx";

exporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME, xlsFile); 
exporter.exportReport();

这些报告都按照我的预期生成,但是在 excel 中它们是在 3 个不同的选项卡上生成的,我想要的是让它们建立在另一个之上。我怎样才能以这种方式合并它们?

4

1 回答 1

0

您可以将 3 个报告作为子报告包装在主报告中,然后运行该报告。为此,您需要将要访问的数据源的逻辑添加到子报表的数据源表达式中。

或者,您可以在 JasperReports 之外发布处理 excel 表。

于 2013-02-16T12:09:43.980 回答