本人菜鳥,這篇文章純屬我的記錄,主要功能是經過java和Ireport生成報表,並生成pdf,word,excel格式java
java代碼中賦值到IReport裏面動態生成報表app
//建立報表字段源,必須是List集合 //mainReportData 是一個bean,設定:裏面的每個字段對應子報表的數據源 JRDataSource dataSource= new JRBeanCollectionDataSource(Arrays.asList(mainReportData)); //parameters 添加的參數,(這裏的參數和fields能夠互換,在Ireport中設置就能夠了) Map parameters = new HashMap(); parameters.put("SUBREPORT_DIR", this.getClass().getResource("/").getPath() + "com/gx/jasperReport/monthReport/"); parameters.put("LOGO_PATH", this.getClass().getResource("/").getPath() + "com/gx/jasperReport/monthReport/logo.png"); parameters.put("month", reportMonth.split("-")[1]); JasperPrint jasperPrint = JasperFillManager.fillReport(sourceFileName, parameters, dataSource);
其實也就是能夠傳兩個東西, 一個是參數(hashMap),一個是字段集合(List(DataBean))this
直接在左側面板-Paramerters-添加Paramerte,名字是上面的hashMap的key,類型對應。.net
直接在左側面板-Fields-添加Field,名字是上面的dataSource中的的dataBean的成員,類型對應。 excel
到此,主報表設置完成。code
建立子報表很簡單,直接在組件面板中拖到主視圖中,選擇Create a new report.下一步,到數據源時選擇Empty dataSource, 而後下一步下一步...Don't use any conection ...完成。blog
以下圖,參數對應子報表參數, 數據源對應數據源教程
new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource(Arrays.asList($F{currentMonthIssue}))
以下:提供三種下載格式:pdf, word,xcel(最好的是用pdf ,word會格式問題)圖片
switch (exportType){ case "pdf": JRPdfExporter exporter = new JRPdfExporter(); //jasperreport6.3 //exporter.setExporterInput(new SimpleExporterInput(jasperPrint)); //jasperreport5.0 exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint); response.setHeader("Content-disposition", "attachment;filename=" + reportMonth + "_" + System.currentTimeMillis() + ".pdf"); response.setContentType("application/pdf"); response.setCharacterEncoding("UTF-8"); //jasperreport6.3 //exporter.setExporterOutput(new SimpleOutputStreamExporterOutput(response.getOutputStream())); //jasperreport5.0 exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, response.getOutputStream()); exporter.exportReport(); break; case "xls": JRXlsExporter xlsExporter = new JRXlsExporter(); xlsExporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint); response.setHeader("Content-disposition", "attachment;filename=" + reportMonth + "_" + System.currentTimeMillis() + ".xls"); response.setContentType("application/xls"); response.setCharacterEncoding("UTF-8"); xlsExporter.setParameter(JRExporterParameter.OUTPUT_STREAM, response.getOutputStream()); xlsExporter.exportReport(); break; case "word": JRExporter wordExporter = new JRRtfExporter(); wordExporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint); response.setHeader("Content-disposition", "attachment;filename=" + reportMonth + "_" + System.currentTimeMillis() + ".doc"); response.setContentType("application/doc"); response.setCharacterEncoding("UTF-8"); wordExporter.setParameter(JRExporterParameter.OUTPUT_STREAM, response.getOutputStream()); wordExporter.exportReport(); }