今天主要介紹如何運用iReport產生的報表template,我們的目標是在Servlet上簡單的運用JDBC連接DB,查詢我們事先建置好的Person Table,表格內紀錄ID、Name、Age、Phone、Email、Birthday這六個欄位,並在前端JSP有DatePicker可以選擇查詢某生日區間的Person資料,並產生PDF或Excel報表。
開發電腦:MAC
開發工具:Eclipse
開發環境:Java 1.7
工具軟體:iReport v5.6.0
Step 1.首先我們先去JasperReport官網下載iReport並安裝到MAC上,我們選擇的版本是v5.6.0
Step 2.安裝完成後,如果有MAC使用者有打不開的情況,我們需要到iReport的config檔裡面去修改jdkhome的設定,把jdkhome的註解打開,並填入自己jdk1.7的路徑
路徑:/Applications/Jaspersoft iReport Designer.app/Contents/Resources/ireport/etc/ireport.conf)
Step1.接著我們便可以開始用iReport製作報表的template
首先我們先將調色盤的Static Text拖曳到報表上,為報表新增標題
Step 2.接著我們要為報表設定dataSource對應的attribute,所以我們在Eclipse中新增一個Dynamic Web Project,並將此專案設定為Java 1.7,如果沒有設為1.7,iReport可能會讀不到編譯出來的class檔,並新增一個Person的VO
package com.example.model;
public class Person {
private int id;
private String name;
private String age;
private String phone;
private String email;
private String birthday;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getBirthday() {
return birthday;
}
public void setBirthday(String birthday) {
this.birthday = birthday;
}
}
Step 3.接著我們回到iReport,點選左上角iReport > Preferences,為報表設定classPath,這樣我們等等設定DataSource就可以讀取到我們剛剛新增的Person VO的calss檔
Step 4.點選報表上方這個新增Fields的按鈕,並在classPath的頁籤裡輸入我們剛剛新增Person VO的class檔路徑,按下Read attributes的按鈕後,便可以看到我們Person VO裡的attributes出現在視窗中,接著選取並新增想要在報表中呈現的attributes,再點選OK儲存。
Step 5.就可以看到我們所選取的attributes出現在iReport左邊的Fields中,接著我們就可以開始為報表新增欄位了。
Step 6.我們可以直接拖曳Fields裡的attributes到報表中的Detail 1裡,iReport便會自動在Column Header中新增我們的欄位名稱,我們可以對其進行排版及修改,或是點選右鍵在Padding And Borders選項中為欄位設定框線,下圖便是我排版後的樣子。
Step 7.我們再為這個報表加入一個查詢起訖日的欄位,這樣我們就可以清楚的知道這個報表內容的查詢區間是什麼時候。
我們在Parameters點選右鍵加入Parameter,並把這個新增的Parameter Name改為searchDate,並拖曳到報表Page Header的區塊中。
Step 8.接著我們對報表上的這個$P{searchDate}點選右鍵 > Edit Expression,為這個parameter加入前綴文字。
Step 9.到目前爲止,我們的報表樣式大概完成了,但因為我們的報表中有中文字,所以還需要在iReport中加入我們想要的字型,不然會發生產出來的報表無法顯示中文字的狀況。因為是Mac的關係,所以我請Windows的朋友傳windows/font底下的kaiu.tff給我,接著我們點選左上角iReport > Preferences,在Fonts頁籤中新增字型。
Step 10.新增完成後,我們選取剛剛新增的kaiu字型,並點選Export as extension按鈕,這裡會匯出該字型的jar檔,之後我們在做Servlet需要把這個jar檔import進來。
Step 11.接著還要記得把所有的欄位字型都設定成我們剛剛新增的kaiu。
Step 12.最後我們就點選Compile Report的圖示,就可以在同一個路徑下產生JasperReportExample.jasper的檔案,這就是我們剛剛運用iReport產生出來的報表template,在下一篇文章使用iReport+JasperReport產生PDF及Excel報表(2)中將介紹如何運用JasperReport的jar檔在Servlet中產生我們想要的報表。