iReport-1.2.8使用的幫助文檔(第一部分)
iReport
幫助文檔
第一部分
功能介紹:
1.?????
報表結(jié)構(gòu)
? 一個報表的結(jié)構(gòu)大致是幾個部分:
title 、 pageHeader 、 columnHeader 、 detial 、 columnFooter 、 pageFooter 、 summary 、 groupHeader 、 groupfooter 。
· Title :
每個報表一般會有一個名字,比如×××銷售報表, title 就是擱置這個名稱的最好地方了,當然你也可以根據(jù)需要擱置在合適的地方。
· pageHeader :
報表的一些公共要素,比如頁碼、創(chuàng)建時間、創(chuàng)建人等信息放置在這里是比較好的選擇。
· columnHeader :
無可非議的這里是放置列的名稱,記住不是列數(shù)據(jù)。
· Detial :
放置需要循環(huán)的數(shù)據(jù),比如銷售記錄數(shù)據(jù)。
· columnFooter :
放置列級別的統(tǒng)計計算值或是列的說明。
· pageFooter :
放置頁級別的統(tǒng)計值或是頁的說明。
· Summary :
可能需要對幾頁(你的報表可能有幾個頁組成)的統(tǒng)計值。比如 50 個銷售記錄共占用了 3 頁,那么放置這些統(tǒng)計記錄的統(tǒng)計值最好的地方就是 summary 。
· groupHeader :
每個表的內(nèi)容可能需要根據(jù)某個屬性進行劃分顯示內(nèi)容和計算內(nèi)容,比如希望以月份為單位每組分開顯示銷售記錄,那么就可以定義一個組(組的定義參考后文), groupHeader 就是放置組說明或是組標志最好的地方。
· Groupfooter :放置組的統(tǒng)計或是說明
2.?????
iReport
的輸出格式
iReport
的預覽輸出格式可以支持以下幾種:
PDF
、
HTML
、
CSV
、
JAVA2D
、
Excel
、純文字、
JRViewer
,其中最常用的是
PDF
、
JRViewer
。
JRViewer
是直接以
C/S
方式作為報表的輸出格式,在
JFrame
框架下輸出。
Jasperreport
提供默認的
JRViewer
輸出類。
3.?????
報表的動態(tài)對象變量、參數(shù)、字段
報表上主要的元素為靜態(tài)文本
(static text)
、變量
(variable)
、動態(tài)域
(Field)
、參數(shù)
(Parameter)
。靜態(tài)文本就是顯示在報表上不變的文字。變量是指通過系統(tǒng)自帶的計算得到的一些值(如當前頁、總記錄數(shù)等)。動態(tài)域可以是連接數(shù)據(jù)庫時所的的字段,也可以是通過自定義數(shù)據(jù)源
(
可能是包含一組數(shù)據(jù)的實體類
)
。參數(shù)是程序運行時傳到報表內(nèi)部的變量,通常通過
Map
形式傳入,可作為顯示變量或者用于
sql
語句中變化的條件。
這些有關(guān)的內(nèi)容,我們要介紹這些對象的使用和意義:
·字段(
Fields
):是數(shù)據(jù)庫抽取出來的,希望在報表中出現(xiàn)的數(shù)據(jù)庫內(nèi)容。比如一個
ID
的所有值。
$F{ filedsName }
表示字段,是報表中最重要的部分。如果
JDBC
方式的連接,輸入
sql
查詢語句就可得到所有查詢所得到的字段;如果是
Custom Datasource
方式,新建一字段,例如
user_id
。數(shù)據(jù)類中
getFieldValue(JRField field)
,
field
就是報表中的
$F{Field_name}
。程序中根據(jù)
JRField
對象的
name
屬性來確定返回哪個值
·參數(shù)(
Parameters
):這是你的應用需要提供給報表的入口,比如你希望在報表被解釋的時候提供
Where
語句的條件值,那么就可以使用參數(shù)(
Parameters
)。
$P{ parameterName }
代表參數(shù), {} 內(nèi)是參數(shù)的名稱,在報表中設定后,在運行的時候通過從外部傳入的參數(shù)來動態(tài)生成標題等數(shù)據(jù),并且可以作為查詢條件傳入 sql 語句使用 ( 如果是使用 JDBC 直接連接數(shù)據(jù)庫的話 )
·變量(
Variables
):這是報表中一些邏輯運算的表現(xiàn),比如統(tǒng)計值。
$V{ variablesName }
每種對象的定義格式如每個對象的后面說明,比如定義一個變量(
Variables
),那么表達式就寫成
$V{ variablesName }
,報表中出現(xiàn)的就是這個變量的名稱。后文會詳細的介紹使用方法。
$V{PAGE_NUMBER} 代表當前頁數(shù), $V 代表 variable ,對現(xiàn)有的 group , $V{groupname_COUNT} 代表當前組的記錄數(shù)
// 代表返回當前行的第四個字段
if("user_id".equals(field.getName()))return data[index][3] ;
?
4.?????
編譯、靜態(tài)運行、動態(tài)運行
Jasperreport
運行時需要的就是一個
jasper
后綴的文件,編譯過程其實就是把
jrxml
后綴的文件生成
jasper
后綴的文件。(可以參考
Jasperreport
的運行原理)
靜態(tài)運行和動態(tài)運行是相對的,后者帶數(shù)據(jù)源運行,比如帶數(shù)據(jù)庫運行。前者就是靜態(tài)文本運行,和數(shù)據(jù)源無關(guān),如果報表中出現(xiàn)和數(shù)據(jù)源有關(guān)的對象,則以
null
顯示。
5.?????
?
幾種
Datasource
的方法
a)????? JDBC 連接數(shù)據(jù)庫。新建一個連接,選擇類型為 Database JDBC connection ,給這個連接一個名字,填寫 driver ,數(shù)據(jù)庫連接的 url ,數(shù)據(jù)庫用戶名密碼等信息后,測試通過即可建立連接。
b)????? Customer JRDatasource 取得數(shù)據(jù)。首先寫一個包含數(shù)據(jù)的類,它實現(xiàn)了 JRDatasource 接口,實現(xiàn) next() 和 getFieldValue(JRFeild field) 兩個方法。 Next 方法用于取得下一條記錄, getFieldValue 方法則根據(jù) jasper 文件中定義的 field 的名稱來取得對應列的數(shù)據(jù)。另外,為了在 ireport 中能預覽效果,我們還需要構(gòu)造取得該數(shù)據(jù)源類的方法,通常命名為 XXXDatasourceFactory 類,它提供了 getTheDatasource 類取得數(shù)據(jù)源類這個對象。在連接時,填上工廠類和取得數(shù)據(jù)源類的對應方法后即可得到數(shù)據(jù)。
然后在菜單上的 build->set active connection 選擇連接,在 datasource->report query 里輸入 sql 語句或 javabean 方式得到數(shù)據(jù)域。得到的數(shù)據(jù)域按名存放在 Fields 里,可拖拽到頁面報表上。
?