一、概述 JasperReport是JasperSoft公司的一款開源的報(bào)表解決方案。其強(qiáng)大的功能及免費(fèi)的特性得到了廣大的認(rèn)可和贊譽(yù),通過(guò)JasperReport,用戶就可以方便的定制、設(shè)計(jì)、生成項(xiàng)目所需要的各種報(bào)表。現(xiàn)在的最新版本是Jasperreport1.3.4。
下載地址是https://sourceforge.net/projects/jasperreports/。
iReport是jasperreport的一個(gè)IDE的開發(fā)工具,使Jasperreport變得更易用,其最新版本是iReport2.0支持Jasperreport1.3.4
下載地址是https://sourceforge.net/projects/ireport/。

二、環(huán)境配置
1. 正確安裝配置jdk

2 .配置ant 。將ant放到c:\下(我用的ant路徑是C:\Borland\JBuilder2005\thirdparty\apache-ant-1.6.5)

3 .將ireport放到C:\iReport-2.0.0
4 .將jasperreports-1[1].3.4.jar放置到C:\iReport-2.0.0\lib 中,jasperreports是iReport的核心內(nèi)容,jsperreport是一個(gè)報(bào)表制作程序,用它的規(guī)則制定一個(gè)xml文件,然后編譯生成一個(gè).jsper文件,這個(gè).jsper文件是我們真正使用的。
5. 將itext-1.3.1.jar、ojdbc14.jar、iTextAsian.jar、jcommon-1.0.0-rc1.jar JCommon、 jfreechart-1.0.0-rc1.jar jfreechart、poi-2.0-final-20040126.jar放置到C:\iReport-2.0.0\lib 下 。itext-1.3.1.jar iText是一個(gè)開放源碼的Java類庫(kù),是用來(lái)生成PDF文件的。如果要在生成的pdf文件顯示中文等亞洲字符,還必須下載itext的亞洲字符包iTextAsian.jar
下載地址:http://itextdocs.lowagie.com/downloads/iTextAsian.jar
jfreechart-1.0.0-rc1.jar jfreechart是一款免費(fèi)的、功能強(qiáng)大的統(tǒng)計(jì)圖生成工具,可以直接生成PNG,JPG等各式的文件。
下載地址:http://www.jfree.org/jfreechart/
jcommon-1.0.0-rc1.jar JCommon是一組有用的classes集合.它已經(jīng)用在JFreeChart,JFreeReport與其它項(xiàng)目上. 這個(gè)類庫(kù)包含了以下功能: 文本工具類(text utilities), 用來(lái)顯示關(guān)于應(yīng)用程序信息的用戶界面類, 布局定制管理器, 一個(gè)日期選擇面板, 序列化工具類, XML解析器支持類.
下載地址:http://www.jfree.org/jcommon/
poi-2.0-final-20040126.jar Apache的Jakata項(xiàng)目的POI子項(xiàng)目,目標(biāo)是處理ole2對(duì)象。目前比較成熟的是HSSF接口,處理MS Excel(97-2002)對(duì)象。它不象我們僅僅是用csv生成的沒(méi)有格式的可以由Excel轉(zhuǎn)換的東西,而是真正的Excel對(duì)象,你可以控制一些屬性如sheet,cell等等。直接調(diào)用poi包的不是ireport,而是jasperreport。
下載地址:http://www.apache.org/dyn/closer.cgi/jakarta/poi/
二、使用介紹
1 啟動(dòng):點(diǎn)擊ireport\ireport.bat啟動(dòng)
2 修改語(yǔ)言環(huán)境:option-----選項(xiàng)-----general中l(wèi)anguage中更改-中文(中國(guó))

3 創(chuàng)建報(bào)表 開啟新檔 輸入名字-ok Portrait是縱向,Landscape是橫向。
4 連接數(shù)據(jù)源 Data-連接/資料來(lái)源-new-connections porperties- 輸入名字-選擇jdbc Driver,jdbc url-輸入username和password,-test測(cè)試通過(guò)表明數(shù)據(jù)源連接正確-save保存 (注意:必須保證數(shù)據(jù)庫(kù)驅(qū)動(dòng)ojdbc14.jar在lib目錄下)

5 基本域說(shuō)明
title域用來(lái)放報(bào)表的總標(biāo)題
pageHeaher域顧名思義頁(yè)頭
columnHeader域是用來(lái)放static text的,也就是不循環(huán)的部分。
detail域是用來(lái)放text field的,也就是循環(huán)部分。
pageFooter域是用來(lái)放本頁(yè)的統(tǒng)計(jì)參數(shù)的。
summary域是用來(lái)放整個(gè)表的統(tǒng)計(jì)參數(shù)的。
可以直接調(diào)整每個(gè)域的長(zhǎng)度,也可以通過(guò)Band properties來(lái)調(diào)整 (在我的項(xiàng)目中,只設(shè)置的title和detail,在title中顯示報(bào)表的總標(biāo)題和所有parameters字段,在detail中顯示需要循環(huán)的列表字段)
6 在報(bào)表中添加字段static text edit-insert element -static text 鼠標(biāo)拖拉添加在頁(yè)面中雙擊或者右鍵properties在static text Tab 中輸入字段名字,為了以PDF格式輸出中文,需要在“PDF Font Name”選項(xiàng)中選擇“STSong-Light”,在中文字體定義中勾選“Default”、“PDF Embedded”,“PDF Encoding”選擇“UniGB-UCS2-H (Chinese Simplified)”。 border 中可以設(shè)置表格邊線樣式,表格邊線樣式最好設(shè)為thin,這樣就不至天太粗,而且pdf和excel兩種格式兼容。
7 在報(bào)表中添加字段text field edit-insert element -text field 鼠標(biāo)拖拉添加在頁(yè)面中雙擊或者右鍵properties在text field 中輸入字段名字, 樣式如同$F{text_field_name},
f表示為field變量,是數(shù)據(jù)庫(kù)中抽取出來(lái)的,你想在報(bào)表中顯示的數(shù)據(jù)庫(kù)內(nèi)容,
p為parameter參數(shù),是應(yīng)用需要提供給報(bào)表的入口,比如想在報(bào)表被解釋的時(shí)候提供where語(yǔ)句的條件值, 就可以用$P(parameterName)比如: select * from bugs where proname=$P{projectName} order by proname,modulename
v為變量(顯示字體顏色為綠色,表示格式正確) border 中可以設(shè)置表格邊線樣式
8 調(diào)整報(bào)表布局鼠標(biāo)拖動(dòng)各個(gè)字段,拼接想要的報(bào)表布局,如果鼠標(biāo)點(diǎn)擊字段, 顯示為紅色,說(shuō)明該字段跨越了兩個(gè)域顯示為綠色,說(shuō)明兩個(gè)字段疊加顯示為藍(lán)色,說(shuō)明該字段位置正確
9 報(bào)表添加SQL查詢語(yǔ)句 資料來(lái)源->報(bào)表查詢(datasource-report query) 在Report SQL query里填寫SQl語(yǔ)句。如果語(yǔ)句正確,在下面的field里就會(huì)顯示正常的表字段。 (可以從顯示的所有字段中選取想用做field的字段,點(diǎn)擊ok后,自動(dòng)添加為field動(dòng)態(tài)字段)

10 為報(bào)表添加動(dòng)態(tài)字段預(yù)覽->報(bào)表字段(view-Fields) 新建一個(gè)字段,字段名字必須和報(bào)表中Fields中添加名字一直,同時(shí)必須是sql結(jié)果集中存在的. (把fields里的字段直接拖到報(bào)表上也行)
11 為SQL語(yǔ)句添加參數(shù) 預(yù)覽->報(bào)表參數(shù)(view-parameters) 在parameters里新增一個(gè)參數(shù) paratemeter name 是參數(shù)名,在SQL語(yǔ)句里寫成"$P{參數(shù)名}" paratemeter class type里選擇參數(shù)類型。 注意:如果是int型的數(shù)據(jù),最好在報(bào)表字段里將該字段的Class type改成java.lang.String型的。
12 添加報(bào)表變量 預(yù)覽->報(bào)表變量 $V{變量名}
13 處理字體 選中字段->右鍵->properties->font(雙擊也可以) Report font 選擇全局的字體(僅限于該報(bào)表) Font name 選擇在ireport里面顯示的字體 Pdf font name 選擇在pdf里面顯示的字體 Rotation 選擇內(nèi)容是否旋轉(zhuǎn)(很有用的選項(xiàng)) PDF Encoding 中文要用UniGB-UCS2-H,外部字體要選Identity-H
14 設(shè)定該報(bào)表的全局字體 預(yù)覽->報(bào)表字型(view-font)
15 編譯jrxml 建立->編譯 (build-compile) 編譯后生成一個(gè)后綴名為jasper的binary文件,可以直接給程序調(diào)用。
??? 界面設(shè)計(jì),在軟件行業(yè)重要、也是絕對(duì)離不開的東西,界面設(shè)計(jì)方面一直就是軟件設(shè)計(jì)中最薄弱的環(huán)節(jié),如果從軟件設(shè)計(jì)的層面去看界面設(shè)計(jì),N多的設(shè)計(jì)師都會(huì)看到其中犯的N多設(shè)計(jì)錯(cuò)誤的基本常識(shí),可以去想想為什么每次系統(tǒng)改界面總會(huì)是件那么痛苦的事,很多時(shí)候都是因?yàn)樵陧?xiàng)目/產(chǎn)品中缺乏專業(yè)的界面設(shè)計(jì)師而造成的。
?? 何謂界面設(shè)計(jì)師,這里不是說(shuō)美工,而是指根據(jù)項(xiàng)目的業(yè)務(wù)需求分析形成的總的界面設(shè)計(jì)方案,需要具備能夠根據(jù)需求形成界面,這個(gè)界面需要具備足夠的元素,同時(shí),界面設(shè)計(jì)師還有一個(gè)比較重要的工作是能完成界面和業(yè)務(wù)邏輯的交互的設(shè)計(jì),界面設(shè)計(jì)師除了需要具備這些能力之外,還有一個(gè)非常重要的,那就是對(duì)界面元素的共性的抽象能力,如果我們的軟件具備了這樣的設(shè)計(jì),那么界面的修改也許不會(huì)成為一件什么痛苦的事,界面設(shè)計(jì)師需要具備的抽象能力的知識(shí)和軟件設(shè)計(jì)師的抽象能力的知識(shí)體系是不同的,所以界面設(shè)計(jì)師這樣的角色是在日益重視界面和交互的時(shí)代中特別需要的。
?? 界面設(shè)計(jì)師,現(xiàn)在好象還真不多,不過(guò)現(xiàn)在的軟件公司也沒(méi)多少會(huì)專門設(shè)置這樣的職位,希望能隨著軟件業(yè)的不斷發(fā)展,能對(duì)這方面越來(lái)越重視!