2013-02-14 37 views
0

我有一個jrxml文件,我想用3個不同的數據源來填充。然後,我想導出到一張XLS或XLXS文件,並在一張紙上連接3個報告。jasperreports如何將多個jrmxl文件導出到單個工作表中

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周不同的選項卡產生的,我想是讓他們建立一個在另一個上面。我怎樣才能以這種方式合併它們?

回答

0

您可能會將3份報告作爲子報告包裝在主報告中,然後運行該報告。爲此,您需要將要訪問的數據源的邏輯添加到子報表的數據源表達式中。

或者您可以在JasperReports外部處理Excel表格。

+0

您可以詳細說明如何爲數據源添加邏輯嗎?任何例子?正如你在我的例子中看到的那樣,它實際上是同一個Java對象集合的不同實例的3次相同的報告。我該怎麼做呢? 您是否說不能使用主/子報表合併報表? – sally 2013-02-17 03:37:30

相關問題