很多報表工具都自帶大量的函數,在正常情況下足夠滿足用戶的報表制作需求,但是在一些特殊領域,可能需要一些特殊的函數,在這種情況下,報表工具FineReport提供了自定義函數機制,可以由用戶根據業務需要自己來定義一些函數,滿足用戶的自定義需求。但這些函數必須FineReport函數定義規則。以下以兩個實際案例來仔細詳解。
應用一:生成UPC條形碼
FineReport中自帶有EAN型編碼,但卻沒有UPC條形碼,但是可以通過自定義函數引用第三方包來生成UPC編碼的條形碼并顯示出來。如輸入數值12345678912,將會得到以下UPC條形碼:
具體步驟怎么實現?
1、 編寫自定義函數
在eclipse中導入第三方包(barcode4j-light.jar,可在帆軟論壇上下載),barcode4j是一款開源的條形碼生成庫,能夠生成很多種編碼的條形碼,包括UPC碼。自定義函數中可以直接調用該包中現成的方法來生成UPC條形碼。
新建一個類Upc,完整代碼如下:
2、 編譯自定義函數
編譯Upc.java生成Upc.class文件,拷貝至報表環境目/WebReport/WEB-INF/classes/com/fr/function下;
將第三方包barcode4j-light.jar放在報表環境目錄/WebReport/WEB-INF/lib文件夾下。
3、 注冊自定義函數
啟動設計器,點擊服務器|函數管理器,新增函數取名為Upc,選擇Upc.class類,如下圖:
4、 Upc()函數的使用
重啟服務器,在報表中使用公式==Upc(num1, num2),num1為需要生成條形碼的數值,num2為生成的圖片的高度。
如在單元格中輸入公式:=Upc(12345678912,100),預覽便可以看到條形碼了。
應用二:Unicode編碼轉化為中文
數據庫中保存的是如下形式的編碼:%u5357%u4EAC-%u57CE%u5317,希望最好展示出來的是對應的中文“南京-城北”。
具體步驟如下:
將編譯后的Ubm.class放到FineReport的安裝目錄WEB-INF下面的classes目錄下,因為Ubm.java屬于包com.fr.function,所以Ubm.class需要放到classes\com\fr\function目錄下。
生成該函數的類后需要在設計器中進行注冊,才可以使用該函數。打開服務器|函數管理器選擇剛剛定義好了Ubm類,如下圖
4、 使用自定義函數
注冊號自定義函數后,制作報表時便可直接使用了,使用方法與內置的函數是相同的。輸入公式=Ubm("%u5357%u4EAC-%u57CE%u5317")運行如下:
展示值為“南京-城北”。
posted on 2016-09-13 14:15 喝水居然長肉 閱讀(188) 評論(0) 編輯 收藏
Powered by: BlogJava Copyright © 喝水居然長肉