2008年7月18日 星期五

使用 Eclipse BIRT 寫報表 (3)

推文
使用 Eclipse BIRT 寫報表 (3)
這篇是接續上兩篇,使用 Eclipse BIRT 寫報表(1)(2),本篇主要是介紹如何
動態用 Servlet 塞值及如何部署到應用程式。

1. 首先請先到下列網址下載 birt-runtime-2_3_0.zip 檔案 (約 109M)
http://www.eclipse.org/downloads/download.php?file=/birt/downloads/drops/R-
R1-2_3_0-200806191030/birt-runtime-2_3_0.zip&url=http://eclipse.stu.edu.tw/b
irt/downloads/drops/R-R1-2_3_0-200806191030/birt-runtime-2_3_0.zip&mirror
_id=448

或是你自行到
http://download.eclipse.org/birt/downloads/
選 Deployment Runtime 項目下載
注意 Pre-requisites: Java 1.5 JDK/JRE 以上

2.


3. 我會舉兩個例子,
A:一個是我修改成可動態塞值的,檔案包括有:
birt_test.html (即對照到簡圖的 HTML 部分,主要是一個 TextFiled跟按鈕)
birt_test.rpttemplate (即報表範本,會由 Servlet 來呼叫)
BIRT_TEST.java (這支程式即對照到簡圖的 Servlet)
B:一個是 Eclipse BIRT example 上所提供的
Dynamic.html
DynamicReport.java
DynamicTableExample.rpttemplate
BirtEngine.class
注意上面紅色顯示的檔很重要底下步驟會再提到

4. 先看第一個範例
birt_test.html 檔,內容重點如下:

action=http://localhost:8080/HelloServlet/BIRT_TEST
按按鈕即執行 Servlet BIRT_TEST

<input name="key" type="text">

<input name="ReportName" value="birt_test.rpttemplate" type="hidden">

前端參數字串及報表範本名稱 birt_test.rpttemplate 會由 BIRT_TEST 程式
取得

5. 請將下載的 birt-runtime-2_3_0.zip 檔案,解壓縮,在目錄
birt-runtime-2_3_0\ReportEngine\lib 下的所有 jar 檔,請加到你的
Eclipse IDE 環境,選 Menu 的 ProjectProperties 如下圖,

選左邊的 Java Build Path,按 Add External JARs,將所有 jar 加入,
JDBC Driver 的 jar也要加進來,按 OK

6. Servlet 程式 BIRT_TEST 相關說明請自行看原始碼
請切換到 J2EE 開發介面,如下圖


7. 我之前在 Eclipse3.4+Tomcat6.0.16 寫 java Servlet 有建一個叫 HelloServlet
的 project,我們現在就用這 project,然後建一個 Servlet,檔名為
BIRT_TEST.java,如何建請參考 Eclipse3.4+Tomcat6.0.16 寫 java Servlet

8. 然後將我附的原始檔 BIRT_TEST.java,copy 進來。

9. 在轉回 Report Design 開發介面,我們要寫一個 template,名稱為
birt_test.rpttemplate
選 Menu 的 FileNewTemplate
拉元件 Grid ,1 欄 3 列,如下圖


10. 第一列插入 Label 元件,輸入顯示文字,拉 Table 元件到第二列,輸入
4 欄 1 明細,Data Set 選 None如下圖

11. 如下圖,Table 元件的 ElementID 為 15,因為我們透過 Servlet 塞值時會
用到,同樣也可查到 Grid 的第三列 Cell 的 ElementID 為 13

12. 好了檔案備便,接下來我們先來部署由檔案 birt-runtime-2_3_0.zip 解壓縮
目錄 birt-runtime-2_3_0 下的 WebViewerExample目錄,複製到
Tomcat Server 的目錄,我的是 C:\Tomcat602\webapps\WebViewerExample,
然後將 WebViewerExample目錄更名成為,C:\Tomcat602\webapps\birt-viewer
啟動 Tomcat,打開瀏覽器輸入網址 http://localhost:8080/birt-viewer/

如上圖,按 View Example,看到如下畫面表示已成功安裝。

13. 切換到 J2EE 的開發介面,將 HelloServlet Project 匯出到 Tomcat 如下圖


14. 將 Tomcat Server 的 birt-viewer 底下的目錄,documents、logs、report、
scriptlib、webcontent、WEB-INF、及檔案複製到我們剛剛建立的 Web
Application HelloServlet 目錄底下。
注意請將你的 JDBC Driver jar 檔複製到
C:\Tomcat602\webapps\HelloServlet\WEB-INF\platform\plugins\org.eclipse.birt
.report.data.oda.jdbc_2.3.0.v20080610\drivers
目錄底下。

15. 再將範例的檔案
將 birt_test.html 複製到 C:\Tomcat602\webapps\HelloServlet 目錄底下
將 birt_test.rpttemplate 複製到 C:\Tomcat602\webapps\HelloServlet\report
將 BIRT_TEST.class 複製到
C:\Tomcat602\webapps\HelloServlet\WEB-INF\classes\test 目錄下
(當然這些 class 檔應該不用複製,因為我們匯成 Web Application 已經有了)

16. 這步驟很重要少掉這步驟你的 Servlet 無法 Run,Eclipse BIRT 所提供的檔
案 BirtEngine.class,BirtConfig.properties,請將 BirtConfig.properties 內容
改為:
logDirectory=C:/Tomcat602/logs
logLevel=FINEST
然後將這兩個檔案包成 jar 檔 ,BirtEngine.jar 放入
C:\Tomcat602\webapps\HelloServlet\WEB-INF\lib 目錄下

17. 在更改 C:\Tomcat602\webapps\HelloServlet\WEB-INF\web.xml檔
加入


<servlet>
<description></description>
<display-name>BIRT_TEST</display-name>
<servlet-name>BIRT_TEST</servlet-name>
<servlet-class>test.BIRT_TEST</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>BIRT_TEST</servlet-name>
<url-pattern>/BIRT_TEST</url-pattern>
</servlet-mapping>



18. 啟動 Tomcat,瀏覽器輸入網址
http://localhost:8080/HelloServlet/birt_test.html 如下圖,輸入行政部,案查詢鈕,我的資料表內容請參考上一篇步驟 3

執行後得到下列結果,產出 PDF 檔

再從上一頁輸入查詢”王”,得到如下結果


19. 我們 Run,Eclipse BIRT 所提供的第二個範例,設定步驟與上一樣(省略),
輸入網址
http://localhost:8080/HelloServlet/dynamic.html 如下圖,選四個欄位,會動
態 create 四個欄位的 Table 元件

執行後如下圖產出報表

Eclipse BIRT 介紹完畢~~~

20. 重點補充:我們在上篇開發好的 salary.rtpdesign如何部署到 Web Application
很簡單只要複製到 C:\Tomcat602\webapps\HelloServlet,例如我複製到
C:\Tomcat602\webapps\HelloServlet\birttest目錄下,網址就輸入
http://localhost:8080/HelloServlet/frameset?__report=/birttest/salary.rptdesign
or
http://localhost:8080/HelloServlet/run?__report=/birttest/salary.rptdesign
那麼如果你報表有參數的話,只要在網址最後加上 &參數名稱=參數值即可
跟一般的 form action get 一樣

21. 基本上我認為 Eclipse BIRT 對開發人員在產表的速率還算蠻快的,相信經
由這三篇的介紹,你要寫出更複雜的報表應該都不難,但在現有已開發的系
統似乎還很少見到 Eclipse BIRT 的蹤影,也有可能開發人員對他不熟悉,
乍看之下好像蠻複雜的,但經有這幾篇的介紹,你會發覺它其實還蠻容易的,
如果你是開發人員,或許可以考慮使用它來做你報表的產出系統。

相關檔案下載

2008年7月16日 星期三

使用 Eclipse BIRT 寫報表 (2)

推文
使用 Eclipse BIRT 寫報表 (2)
這篇是接續上篇,使用 Eclipse BIRT 寫報表 (1),本篇主要是介紹統計圖表,
有些步驟會省略,有需要請參考上篇

1. 依上篇步驟 7.,建立一個空白報表檔名為 salary.rtpdesign

2. 依上篇步驟 9~12,建立 Data Source

3. 我資料庫有一個名稱為”測試”的資料表資料如下


4. 依上篇步驟 13~15,建立 Data Sets,名稱為 “公司薪資資料”

請注意 SQL語法為
select 部門,SUM(“薪資”) as 部門薪資 from 測試 GROUP BY 部門
按 Finish ,之後選 Preview Results,如下圖


我們要做各部門的薪資統計資料表
5. 如下圖,將在左邊的 Palette 的 Report Items 底下的 Grid 元件拉到編輯區
去,輸入 2 欄 2 列,按 OK



6. 再將左邊的 Chart 元件拉到編輯區的第二列第一個 cell,如下圖

Select Chart Type 我們選擇 Bar 長條圖,Output Format 選擇 JPG,如下圖

按 Next

7. 如下圖,Use Data From 選”公司薪資資料”,部門薪資及部門欄位拖拉到相
關位置如下,按 Next



8. Color by 選 Categories

在點左上角的 Series 底下的 Value (Y) Series,勾選 Show Series Labels,如下圖

在 Title 輸入顯示的文字,如下圖

按 Finish

9. 再到 Palette拉元件 Table 到編輯區的第二列第二個 cell,
輸入 3 欄 1 明細,Data Sets 選”公司薪資資料”,按 OK 如下圖

10. 在點選左上角 Data Explorer,將 Data Sets 公司薪資資料的部門及部門薪資
拉到如下圖位置


11. 在左邊編輯區的 Table 元件的,第三列第二欄按右鍵插入 Text 輸入
“總和”,如下圖

12. 第三列第三欄按右鍵插入 Data


13. 會彈出如下框框,請輸入如下,按 Expression 右邊的小按鈕


14. 請輸入 Total.sum(row[“部門薪資”]),或是你也可以選底下 Category 提供的
function,按 OK


15. 選擇第二列第一個欄位按右鍵插入 Image

會彈出入下框框,如下圖,按小按鈕

彈出如下圖,請輸入
if (row["部門薪資"]>80000) "../report/images/Up.gif";
else "../report/images/Down.gif";
按 OK ,Insert

這其實只是判斷部門薪資金額大於 80000 的話就給他一個向上的箭頭,否則就
給一個向下的箭頭,請注意你要秀的圖檔請放在目錄 ,
eclipse\plugins\org.eclipse.birt.report.viewer_2.3.0.v20080606\birt\report\images
底下

16. 在將 Grid 的第一第二欄位 Merge Cells,如下圖

然後輸入你要顯示的文字

17. 按 Preview

18. 執行後如下


19. 選 Menu 的 Run-->View Report-->In Web Viewer

20. 下一篇將介紹如何動態用 Servlet 塞值及如何部署到應用程式,
未完待續~~~

2008年7月14日 星期一

使用 Eclipse BIRT 寫報表 (1)

推文

1. 下載目前的最新release版, Eclipse 3.4

到網頁http://www.eclipse.org/downloads/

選擇 Eclipse IDE for Java EE Developers (163 MB) 項目下載

eclipse-jee-ganymede-win32.zip 檔案


2. 下載 BIRT SDKbirt-report-framework-sdk-2_3_0.zip檔案,

到底下網址

http://www.eclipse.org/downloads/download.php?file=/birt/downloads/

drops/R-R1-2_3_0-200806191030/birt-report-framework-sdk-2_3_0.zip


3. 解壓縮檔案eclipse-jee-ganymede-win32.zip 檔案,會有個 eclipse 目錄,

解壓縮檔案birt-report-framework-sdk-2_3_0.zip 檔案,覆蓋 eclipse 目錄。


4. 執行 eclipse 目錄下的 eclipse.exe 檔,在右上角選擇開發介面,

BIRT RCP Designer


5. meun FileàNewàProject

如下畫面,選項目 Business Intelligence and Reporting Tools 底下的

Report Project

Next


6. Project Name 輸入 BIRT_Test,按 Yes,如下圖


7. FileàNewàReport,如下圖,選擇你剛建立的 BIRT_Test ,輸入

File Name report_test.rptdesign,如下圖

Next


8. Blank Report,按 Finish


9. 選擇左上角 Data Explorer 底下的 Data Sources,建立資料庫來源,按右鍵

New Data Source,如下圖


10. JDBC Data Source,根據你的喜好輸入Data Source Name,我輸入

MyDataSource,按 Next,如下圖


11. Manage Drivers,如下圖彈出一個 Manage JDBC Drivers 視窗,

Add 鈕,輸入JDBC Driver jar (依照你的資料庫而有所不同)

我的資料庫是 postgreSQL,這部份是屬 JDBC 的連結設定,如你不知如何 設定請參考

JavaWorld網站,輸入各家JDBC driver”搜尋


12. 如下圖,按 Finish


13. 選左上角 Data SetsNew Data Set,如下圖,建立你報表要顯示的資料


14. 如下圖,輸入 Data Set Name: 測試

Data Set Type: SQL Select Query

Data Source: MyDataSource

Next


15. 如下圖,我有一個叫測試的資料表,右邊下SQL 語法

Finsih


16. display name 可以更改成你要顯示的名稱,你可以點 Preview Results看資料


17. 選擇左上角 palette Report Items 底下的 Table 元件,拉到你的編輯區

輸入3個欄位,1個明細,Data Set 選剛建立的 測試

如下圖


18. 會有一個如下Table


19. 請點左上角的 Data Explorer,請將測試底下的欄位拉到左邊編輯區的

Detail row cell,他的 Header row 會自動生成你剛在步驟 16 建立的

display name,如下圖

你可針對每個cell 設定,字型、顏色、邊框等等


20. Menu RunàView ReportàIn Web Viewer(剛開始Run會有點久)


21. 如下圖,當然你還可以選擇匯出,ExcelPDFPostScriptWordPowerPoint 等檔案

要顯示成自己喜歡的各種格式的報表,還得做更進一步的細節設計。


22. 設計好了自己的報表如何部署呢?以及如何做統計圖表,動態由servlet塞值 ?等等將在之後

的幾篇介紹,未完待續~~~