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

二、環境配置
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的核心內容,jsperreport是一個報表制作程序,用它的規則制定一個xml文件,然后編譯生成一個.jsper文件,這個.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是一個開放源碼的Java類庫,是用來生成PDF文件的。如果要在生成的pdf文件顯示中文等亞洲字符,還必須下載itext的亞洲字符包iTextAsian.jar
下載地址:http://itextdocs.lowagie.com/downloads/iTextAsian.jar
jfreechart-1.0.0-rc1.jar jfreechart是一款免費的、功能強大的統計圖生成工具,可以直接生成PNG,JPG等各式的文件。
下載地址:http://www.jfree.org/jfreechart/
jcommon-1.0.0-rc1.jar JCommon是一組有用的classes集合.它已經用在JFreeChart,JFreeReport與其它項目上. 這個類庫包含了以下功能: 文本工具類(text utilities), 用來顯示關于應用程序信息的用戶界面類, 布局定制管理器, 一個日期選擇面板, 序列化工具類, XML解析器支持類.
下載地址:http://www.jfree.org/jcommon/
poi-2.0-final-20040126.jar Apache的Jakata項目的POI子項目,目標是處理ole2對象。目前比較成熟的是HSSF接口,處理MS Excel(97-2002)對象。它不象我們僅僅是用csv生成的沒有格式的可以由Excel轉換的東西,而是真正的Excel對象,你可以控制一些屬性如sheet,cell等等。直接調用poi包的不是ireport,而是jasperreport。
下載地址:http://www.apache.org/dyn/closer.cgi/jakarta/poi/
二、使用介紹
1 啟動:點擊ireport\ireport.bat啟動
2 修改語言環境:option-----選項-----general中language中更改-中文(中國)

3 創建報表 開啟新檔 輸入名字-ok Portrait是縱向,Landscape是橫向。
4 連接數據源 Data-連接/資料來源-new-connections porperties- 輸入名字-選擇jdbc Driver,jdbc url-輸入username和password,-test測試通過表明數據源連接正確-save保存 (注意:必須保證數據庫驅動ojdbc14.jar在lib目錄下)

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

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