使用JasperReport和iReport製作java報表- -(轉)

來源:互聯網
上載者:User
最近使用了JasperReports和iReport製作了幾個報表,這片文章是我的一些總結。

JasperReports是一個開源的java報表製作引擎
http://jasperreports.sourceforge.net

iReport是JasperReports的一個GUI工具,用來產生JasperReports的jrxml檔案。
http://ireport.sourceforge.net



首先使用iReport製作報表的模板(我自己起的名詞):

    運行iReport,建立一個report。
    在Title band中輸入報表的名稱,好象使用pageheader band也可以,目前我還沒有弄明白2者具體的差別。
    在column header band中放置一些static text,做為報表的欄位標題。
    在detal band中放入一些textfield,顯示報表的詳細資料。
    在summary band中放入類似於"合計"之類的textfield,這個band是顯示在最後一行資料的下放。
    在LastPageFooter band中放入想在最後一頁顯示的資訊,比如說"審閱人簽名"之類的。

這樣報表的架構就基本上搭好了,然後compile一下檢查是否有錯誤,如果沒有錯誤那麼就可以在程式中使用這個報表範本了。

JasperReports介紹:
   
    使用JasperReports產生報表是非常簡單的,僅僅使用net.sf.jasperreports.engine包中的幾個類即可完成報表的產生、預覽、列印、匯出等各個功能。

1.  net.sf.jasperreports.engine.JasperCompileManager類。
    使用這個類的幾個靜態方法即可完成對報表的編譯工作(具體參見api文檔)
    編譯完成後可以JasperCompileManager有兩種處理方式:
       1> 返回一個JasperReport對象
       2> 在.jrxml檔案所在的目錄產生一個.jasper檔案
    這兩種方式是由程式員自己選擇的。不過我比較傾向使用.jasper檔案,畢竟報表的結構不是每天都在改動,所以每次重新編譯報表並不是很划算。

2.  net.sf.jasperreports.engine.JasperFillManager類
    這個類的作用是用資料填充報表。它可以使用JasperReport對象也可以使用。jasper檔案做為報表範本。
    它同樣有2中處理方式:
          1> 返回一個JsaperPrint對象。
          2> 在.jasper檔案所在目錄產生一個.jrprint檔案
    這個類使用net.sf.jasperreports.engine.JRDataSource介面的實現做為資料來源。任何實現了JRDataSource的類均可做為資料來源使用
    在net.sf.jasperreports.engine.data包中定義了一些資料來源,可根據自己的需要選擇。這裡我使用的是 JRTableModelDataSource做為
    資料來源(因為我的報表還要顯示在Table中)。

3. net.sf.jasperreports.engine.JasperPrintManager和net.sf.jasperreports.engine.JasperExportManager
   者兩個類的作用是列印、匯出報表
   他們使用 JasperPrint 和 .jrprint檔案做為輸入。
   可以根據自己的需要使用裡面的方法。

例:
       import net.sf.jasperreports.engine.*;
       import net.sf.jasperreports.view.*;
       public class CompileReport {
          public static void main(String args[]) {
             try {
                //編譯report.jrxml並在report.jrxml所在的目錄中產生report.jasper檔案
                JasperCompileManager.compileReportToFile("report.jrxml");
                //填充資料,這裡使用的是JREmptyDataSource
                JasperFillManager.fillReportToFile("report.jasper", null, new JREmptyDataSource(50));
                //預覽報表,false代表不是使用xml檔案。
                JasperViewer view = new JasperViewer("reports.jrprint", false);
                view.pack();
                view.setVisible(true);
             }
             catch (Exception e) {
                e.printStackTrace()
             }
          }
       }
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.