IReport 使用記錄教程

本人菜鳥,這篇文章純屬我的記錄,主要功能是經過java和Ireport生成報表,並生成pdf,word,excel格式java

IReport 使用記錄教程--原創服務器

1、建立主報表

1.主報表屬性設置

  • 主報表下面有多個子報表組成(A4:: 842*595)
  • 設置Page width 和Page height爲 595*842,則當前報表會填滿一頁
  • 經過設置 屬性-Margins-Left margin/Right margin 來設置左右變局
  • 拖一個Variables到PageFooter 中,就會在每一頁顯示頁碼

主報表

2.主報表的數據源設置

i.代碼中設置

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

ii.IReport設置

(1) Parameters 參數

直接在左側面板-Paramerters-添加Paramerte,名字是上面的hashMap的key,類型對應。.net

(2) JRDataSource 參數

直接在左側面板-Fields-添加Field,名字是上面的dataSource中的的dataBean的成員,類型對應。 數據源設置excel

到此,主報表設置完成。code

2、 建立子報表

建立子報表很簡單,直接在組件面板中拖到主視圖中,選擇Create a new report.下一步,到數據源時選擇Empty dataSource, 而後下一步下一步...Don't use any conection ...完成。blog

  • 注:
  • subReport 放在主報表的group header
  • Detail 放循環數據
  • titile summary 放一次數據

3、父報表傳參數和數據源個子報表

以下圖,參數對應子報表參數, 數據源對應數據源教程

new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource(Arrays.asList($F{currentMonthIssue}))

輸入圖片說明

4、服務器生成報表下載

以下:提供三種下載格式: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();
}
相關文章
相關標籤/搜索