開發(fā)一個Jasperreport報表,我們需要下載IReport之類Jasperreport報表開發(fā)工具,其下載地址如下:http://community.jaspersoft.com/project/ireport-designer,關(guān)于如何利用IReport來開發(fā)一個報表,這個已超出BDF2范疇,關(guān)于IReport的使用,網(wǎng)上教程很好,大家可以去搜索一下。
報表設(shè)計完成之后,接下來需要將其編譯成一個jasper文件,這個利用IReport就可以完成,有了jasper文件后,我們就可以將其在線上傳到BDF2中提供的報表維護(hù)當(dāng)中,如下圖所示:
在上傳報表文件時,如果我們選擇非jasper報表文件,系統(tǒng)會拋出一個異常,同時上傳好報表之后,我們還可以選擇當(dāng)前報表采用的數(shù)據(jù)源,目前在BDF2當(dāng)中,允許用戶為報表提供三種類型的數(shù)據(jù)源:第一種就是JDBC,這種方式也是最為常用的一種,選擇這種之后,我們就可以在下面的數(shù)據(jù)源選擇當(dāng)中選擇當(dāng)前報表要采用的數(shù)據(jù)源名稱(來自BDF2所支持的多數(shù)據(jù)源機制);第二種和第三種分別是Map與JavaBean,一旦我們選擇這兩種類型的數(shù)據(jù)源,那么在下面的數(shù)據(jù)來源選擇的列表當(dāng)中,我們只能選擇所有實現(xiàn)了IReportDataProvider接口且配置到Spring當(dāng)中的bean來作為當(dāng)前報表的數(shù)據(jù)源,IReportDataProvider接口代碼如下:
IReportDataProvider接口源碼
package com.bstek.bdf2.jasperreports.service;
import java.util.Collection;
/**
* @author Jacky.gao
* @since 2013-5-12
*/
public interface IReportDataProvider {
Collection<?> getData();
}
可以看到接口非常簡單,只有一個方法,這個方法只要求我們返回一個對象的集合即可,目前這個對象可以同Map或JavaBean。如果我們在配置時采用的數(shù)據(jù)源類型為Map,那要求對應(yīng)的getData方法返回的必須是一個Map的集合,如果選擇的是JavaBean則必須返回一個包含報表中使用的field的JavaBean的集合,比較容易理解。
報表定義完成之后,我們可以點擊工具欄上的“預(yù)覽報表”按鈕,在彈出的窗口當(dāng)中,可以選擇要預(yù)覽的報表類型,可以看到目前支持下面幾種類型的報表:
對于報表的預(yù)覽,你可以選擇jrpxml或html兩種類型格式。HTML格式比較簡單,就是將報表內(nèi)容轉(zhuǎn)換成一個HTML網(wǎng)頁,可以在線顯示;而對于jrpxml,它會將報表內(nèi)容生成一個XML格式,這里需要特別指出的是,我們提供了一個可以解析這個XML的swf,解析好的內(nèi)容可以保證與報表完成一致,并可以實現(xiàn)在網(wǎng)頁當(dāng)中直接顯示。同時在這個SWF當(dāng)中,我們還提供了一個打印功能,可以將當(dāng)前顯示的報表直接輸出到打印機打印,如下圖所示:
利用這個SWF打印的時候,它不會打印圖片,所以如果您的報表當(dāng)中含有圖片,利用這個SWF打印功能是不會被打印出來的,但就因為其不會打印圖片,所以我們可以利用這個功能實現(xiàn)套打,具體大家可以想象一下。
實際上,對于上面的報表的右上角,是有一張圖片的,但因為我們沒有定義圖片,所以顯示的報表右上角是空的,下面這張圖向我們展示了定義這個報表時圖片的定義方式:
可以看到,在設(shè)計報表時,對于用到的圖片,我們采用一個parameter來代替,這個parameter的名字為IMGJERRY,所以在將報表配置到BDF2當(dāng)中時,我們需要將要采用的目標(biāo)圖片作上傳到系統(tǒng)當(dāng)中,并且將其名字命名為IMGJERRY,這樣我們的報表生成時就可以看到圖片啦,如下圖所示:
更多建議: