BIRT是一個優秀的報表插件,本文將涉及它的安裝到簡單使用的整個過程。
一,安裝
1:到http://download.eclipse.org/birt/downloads下載相應版本(我的Eclipse是3.2,所以BIRT的版本是2.1M5)的Framework和runtime兩個包。把Framework包解壓,然后和其它plugin一樣放到Eclipse的plugins和features目錄下;把runtime解壓到任意目錄下,如C:"birtruntime。這里說明一點:BIRT的runtime在有些時候并不需要,比如但plugin導出為rcp發布后,在其它的機器上就不需要安裝runtime來運行報表了。
2:BIRT要依賴GEF和EMF,所以你的Eclipse平臺要正確安裝GEF和EMF。
3:如果想用pdf格式顯示報表結果,我們還要做以下兩件事情:到http://prdownloads.sourceforge.net/itext/itext-1.3.jar下載itext,然后拷貝到plugins/org.eclipse.birt.report.engine.emitter.pdf_version/lib目錄下;到http://dev.conio.net/repos/prototype/dist/prototype.js下載prototype.js,然后拷貝到/org.eclipse.birt.report.viewer_version/birt/ajax/lib目錄下。
二,創建報表
0:配置BIRT環境,因為例子將要使用jdbc做為數據源,birt本身并布提供這樣數據庫的驅動,所以要把所使用的數據庫驅動文件放到相應的目錄。
下載derby.jar,derbyclient.jar,derbynet.jar,derbytools.jar四個jar,然后把他們拷貝到以下兩個目錄:
"plugins"org.eclipse.birt.report.data.oda.jdbc_2.1.0.M20060303-0920"drivers
"birt-runtime-2_1_0"ReportEngine"plugins"org.eclipse.birt.report.data.oda.jdbc"drivers
1:創建一個報表工程
2:創建一個report文件,最后一步選空模板。
3:創建數據源。BIRT支持多種數據源,這里選擇比較復雜的JDBC數據庫數據源,數據庫使用Derby做為例子。假定你的derby數據庫已經配置正確并已運行,然后在Data Explore navigator視圖下創建新的數據源,配置如下圖,如果數據庫訪問有用戶名和密碼也正確填寫:4:創建數據集。選擇創建數據集后會有一個如下的窗口彈出,第一個是數據集的屬性操作切換頁,第二個窗口列出所有的數據表,第三個是編輯框,可以在里面手寫或者在第二個框里拖動我們需要的數據庫的某一列。
5:設計報表。這一步開始按照自己的需求來設計報表,birt提供了豐富的報表格式,如:柱狀圖、餅狀圖、chart、表等,這里我們用表做為例子,假設數據庫有一個consignee的表,表有ID,name和location三列,我們設計一個報表,用戶可以在報表上選擇一個location,然后報表給出在這個location的所有用戶。
5.1:按照需求,用戶可以在報表上選擇一個地點來統計結果,所以這里用到BIRT的parameter(參數)的技術,雙擊Data set數據源,選擇parameters,創建一個新的參數,如圖:然后切換到Query界面,添加一句sql語句where location = ?,如下:
5.2 創建一個叫做Parameter的新數據集,此數據集只提供動態參數的數據來源(這個作用稍后會更清晰的看見)
SQL語句為:
from APP.CONSIGNEE
5.4設計報表的表格。
5.4.1 拖動一個默認屬性的table到界面上,然后點右鍵,選擇“Edit Data Binding”,如下圖設置:5.4.2 把Data Set數據集里的三列分別拖到table的第一到第三列,效果如圖:
5.5 預覽。到這里,簡單的應用都有了,點擊一下preview看一下效果,首先點擊“show Report Parameter”,出現這個:
這個combobox里面的內容就來自數據集Parameter,是動態的。選擇一個參數運行就能看見結果了。
三,使用設計好的報表
如果想在另外一個項目中使用設計好的報表文件,有兩種方式,一個是用web的方式查看結果,另一個是用pdf的方式,這里介紹web方式,例子是一個單獨運行起來的birt報表。
在想顯示報表的地方使用如下語句:
String path = filePath + "filename.rptdesign";
WebViewer.display(path, WebViewer.HTML, true);
注意最后一句的最后一個參數,如果想在報表中使用參數就為true否則為false。
四,總結birt的功能很強大,還有柱狀圖等很圖形可供使用,原理都很相似,可以在使用種慢慢摸索。