JasperReport詳細介紹(三)

來源:互聯網
上載者:User

3 iReport

3.1 簡介

iReport 就是一個可視化的報表製作工具,代替原來人工書寫定義報表的xml,我們可以用iReport做下面的一些工作:

用iReport可以畫出我們需要的報表的模版,例如在某個位置顯示甚麼內容,顯示風格的定義等等

定義需要傳給jasperReport的參數,例如前面一章將提到的內建參數,也可以自訂需要傳遞的參數

iReport的提供的功能可以預覽報表

將報表模版的xml編譯為.jasper檔案,供jasperreport調用產生我們需要的報表

除了可以使用前面一章提到的內建變數,我們也可以定義自己的變數

3.2   報表模版布局

3.2.1 地區位置介紹

般情況下規則如下:

title

這個地區的資料整個報表只顯示一次

   pageHeader

這個地區的資料每一頁的頂部顯示一次
columnHeader

這個地區的資料每一頁的頂部顯示一次,位置在pageHeader的後面

detail

這個地區的資料有多少筆記錄就顯示多少次

columnFooter

這個地區的資料每一頁的底部只顯示一次,位置在pageFooter,lastPageFooter的前面

pageFooter

這個地區的資料每一頁的底部只顯示一次,如果有定義lastPageFooter,則最後一頁不顯示

lastPageFooter

這個地區的資料在報表最後一頁的底部只顯示一次

summary

這個地區的資料在最後一條記錄後面顯示,位置在columnFooter, pageFooter,lastPageFooter的前面

3.2.2 如何設定地區

點擊工具列的 ,會彈出下面的視窗,在Band height處輸入高度後,點Apply按鈕就可以了。

3.3   如何定義Fields,Parameters,Variables

報表的顯示資料基本由這三個部分組成。

Fields指的是定義的資料來源中對象的屬性

Parameters指的是在調用填充報表的對象前,將所需要的參數放到Map對象裡

Variables指的是按一定的邏輯通過調用Fields或者Parameters或者Variables組織一個計算運算式

點擊工具列 ,彈出一個對象屬性的視窗

Fields

點擊新增按鈕增加一個field,field包括3個特性:

name:唯一標識

Class type:表示field是哪個類的對象例如:java.lang.Integer等等,不能為基本變數類型如int,double等

Description:field的描述,在特定應用時會用到,例如自己定義的xml資料來源,可能需要從不同的Node擷取資料,這個時候需要通過description來識別,在後面的具體製作報表的時候可以看到這點。

JasperReport會通過這幾個屬性產生一個JRField的對象。

在報表模版裡書寫的標識為$F{field name}

Variables

我們可以看到裡面已經有一些變數了,這些就是在JasperReport提到的它的內建變數。

點擊新增按鈕,彈出的視窗中包括定義Variable name,Variable class type, Calculation type,Variable expression,Initial value expression等等。

Variable name :變數的名字可以和Fields或者Parameters的名字相同,但是不能和其他的變數名字一樣

Variable class type:表示變數是哪個類的對象,例如java.lang.Integer等等,不能為基本變數類型如int,double等

Calculation type:常用的包括count,sum, average等等

Variable expression:可以是之前的$F{field name},也可以是自己或者其它的變數

Initial value expression:類型一定要和選擇的Variable class type一致

在報表模版裡書寫的標識為$V{variable name}

Parameters

我們可以看到裡面已經有一些參數的定義了,這些就是在JasperReport提到的它的內建參數。

點擊新增按鈕,彈出的視窗中包括定義Parameter name,Parameter class type, Parameter default value,Parameter description等等

Parameter name:參數名稱,其實就是Map的key,所以參數名稱不能重複

Parameter class type:表示參數是那個類的對象,即Map中key對應的物件類型

Parameter default value:表示參數為空白的時候,賦與的一個值,類型必須和選擇的Parameter class type一致

Parameter description:描述列位,保留欄位

在報表模版裡書寫的標識為$P{parameter name}

3.4 報表模版主要元件

所有元件在正確的地區內時,當滑鼠點擊該元件,邊框顏色均為藍色

如果不在正確的地區時,當滑鼠點擊該元件,邊框顏色為紅色

如果多個元件重疊,當滑鼠點擊該元件,邊框顏色為綠色

所有元件基本有共同的幾個屬性,右鍵點擊元件從彈出的菜單中選擇properties,彈出一個屬性視窗:

Common裡麵包括:綁定的地區資訊,絕對位置和大小,前景色彩,背景色等等。

Print when expression表示滿足甚麼條件的時候顯示,運算式必須返回一個Boolean的對象

Font裡麵包括:字型大小,文字位置,文字字型等等,如果是中文或者是亞洲其他語言,當輸出為PDF格式時候,需要設定Font是:

Language
PDF Font Name

Simplified Chinese
STSong-Light

Traditional Chinese
MHei-Medium

MSung-Light

Japanese
HeiseiKakuGo-W5

HeiseiMin-W3

Korean
HYGoThic-Medium

HYSMyeongJo-Medium

Border裡麵包括:邊框的線條顏色,粗細,框內文字距離邊框的距離等等

3.4.1 直線

點擊工具列 ,可以在報表的任意地區畫一條直線

3.4.2 靜態文字

點擊工具列 ,可以在任意地區畫一個文字框, 在它的屬性視窗輸入想要顯示的文字

3.4.3 文字欄位

點擊工具列 ,可以在任意地區畫一個文字框,在屬性框輸入要顯示的Field, Variable,Parameter

Textfield Expression Class:必須和定義的類型一致,目前只支援下面的類型:

java.lang.Boolean

java.lang.Byte

java.util.Date

java.sql.Timestamp

java.lang.Double

java.lang.Float

java.lang.Integer

java.lang.Long

java.lang.Short

java.math.BigDecimal

java.lang.String

Evaluation time:賦值時間一般選擇now

Stretch with overflow:當文字超出邊框時是否自動延長

Banlk when null:當內容為空白指標的時候是否顯示空格

Pattern:顯示的式樣,如果為Number類型或者日期類型時可以建立特定的顯示式樣

Textfield expression:運算式可以為$F{field},$V{variable},$P{parameter}

3.4.4 圖象

點擊工具列 ,可以在任意地區插入圖象,在屬性視窗輸入圖象的來源

Image Expression:圖象來源的運算式,一般情況下選擇Image Expression Class為java.lang.String時,運算式為圖象的絕對路徑,可以通過$F{field},$P{parameter}來傳遞,也可以通過Find按鈕找到本地需要顯示的圖象路徑。

Image Expression Class:圖象來源的物件類型,根據不同的類型,Image Expression就要傳遞該類型的對象

3.4.5 子報表

點擊工具列的 ,可以在detail,summary地區插入子報表,下面是子報表的屬性:

視窗1

Paramters Map Expression:這個是傳遞給子報表的參數表,類型一定是java.util.Map,子報表的參數還可以通過別的方式傳遞,在下面視窗2中有描述。

Connetion / Datasouce Expression:這個是子報表的資料來源,一般情況下是用JRDataSource,這裡寫的$P{MY_DATA_SOURCE},表示子報表資料來源是通過父報表參數傳遞的,因此要在參數表那裡定義。

視窗2

Subreport Expression Class:子報表的類型,通常選擇如圖中所示的類型,這個參數也是通過父報表的參數來傳遞,因此要在參數中定義它。

SubReport parameters:子報表的參數,這個地方的參數和視窗1的Paramters Map功能一樣,提供參數給子報表,區別是這個地方可以將父報表的一些具體的資料通過map傳遞給子報表。

3.4.6 圖形報表

點擊工具列的 ,可以在任何地區插入它,具體的圖形報表製作將在後面的章節詳細描述。

3.5 編譯報表

當我們畫好報表模版後,儲存到硬碟上的只是xml 檔案,因此需要編譯為.jasper的檔案,

點擊工具列的 ,如果我們畫好的報表沒有問題,將產生一個.jasper的檔案,如果有錯誤,將在iReport的下方資訊視窗顯示出錯的資訊,為我們糾正錯誤提供協助。

4JFreeChart

4.1       簡介

主要用來開發各種各樣的圖形報表,這些圖形報表包括:餅圖、柱狀圖(普通柱狀圖以及堆棧柱狀圖)、線圖、地區圖、分布圖、混合圖、甘特圖以及一些儀錶盤等等。在這些不同式樣的圖形報表上可以滿足目前商業系統的要求。JFreeChart是一種基於JAVA 2D的圖形報表開發技術。JFreeChart可用於Servlet、JSP、Applet、Java Appication環境中,通過JDBC可動態顯示任何資料庫資料,結合Itext可以輸出至PDF文檔。

4.2 幾個重要的Class和Interface介紹

Class org.jfree.chart.ChartFactory

這個類負責產生各種圖形的org.jfree.chart.JFreeChart的對象,JasperReport通過調用org.jfree.chart.ChartFactory的方法擷取到相應圖形的org.jfree.chart.JfreeChar的對象。

Class org.jfree.chart.JFreeChart

這個類實現了Java 2D APIs,它的目的是在Java 2D graphics device上繪出想要的映像

Interface org.jfree.data.category.CategoryDataset

用於圖形產生所要的資料集對象,實現這個介面的Dataset主要用於3D資料,例如Bar,Group Bar,Line,StackedBar 等等

Interface org.jfree.data.category.PieDataset

用於圖形產生所要的資料集對象,實現這個介面的Dataset主要用於2D資料,例如Pie

Interface org.jfree.chart.plot.DrawingSupplier

java.awt.Paint及java.awt.Stroke 對象的提供者,可以通過實現它自己定義Chart的顏色

Abstract Class org.jfree.chart.plot.Plot

這個抽象類別以及所有子類做為org.jfree.chart.JFreeChart的代理,在Java 2D graphics device繪出座標以及資料區域的映像

Abstract Class org.jfree.chart.renderer.AbstractRenderer

這個抽象類別以及所有子類主要用在3D資料時在Java 2D graphics device繪出每個地區的顏色,每個地區輪廓的顏色,每個地區上的數值

4.3 JasperReport如何調用JFreeChart產生圖形報表

JasperReport在用資料填充報表時,根據圖形報表的類型,產生對應的JFreeChart的Dataset對象,再調用org.jfree.chart.ChartFactory產生出對應的org.jfree.chart.JFreeChart對象。擷取到該對象後,JasperReport在exporter裡建立一個java.awt.image.BufferedImage對象,

BufferedImage返回一個java.awt.Graphics2D對象,再將它傳入給之前JFreeChart對象,最後調用JFreeChart對象的draw方法將圖形輸出到BufferedImage對象,供給Exporter使用。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.