1.讀取mainReport
JasperReport jasperReport = JasperCompileManager.compileReport("C:\\Temp\\report2.jrxml");
2.先將sub.jasper讀進來、存放至主要的HashMap mapParameter = new HashMap();
InputStream stream1 = getRequest().getSession().getServletContext().getResourceAsStream("xxxxxxxx_subreport_Net.jasper");
JasperReport netReport = (JasperReport) JRLoader.loadObject(stream1);
//map key 對應subReport Name
mapParameter.put("NET_REPORT", netReport);
3.subReport 資料型態 JRMapCollectionDataSource(ArrayList<HashMap>)<
在此命 為NetProduct>後續irport會用
放置mapParameter.put("Report_Net_list", NetProduct());
4.JasperPrint jasperPrint = JasperFillManager.fillReport( jasperReport, a,new JREmptyDataSource());
new JREmptyDataSource也是實作implements JRDataSource 、
如果沒有JRDataSource、null值必需塞new JREmptyDataSource不能放置null或空值
5.iReport設置
(1)新增(NET_REPORT)parameter:net.sf.jasperreports.engine.JasperReport
用意在於java先讀取jaxml或jasper檔在傳給ireport
(2)新增(Report_Net_list)Parameter:net.sf.jasperreports.engine.data.JRMapCollectionDataSource

(2)Expression class :net.sf.jasperreports.engine.JasperReport
Data Source Expression:放置之前java設置的Report_Net_list( JRMapCollectionDataSource)
附上test Code &JAR檔



沒有留言:
張貼留言