概述
Jasperreport是http://www.sourceforge.net上一個(gè)優(yōu)秀的開源的報(bào)表工具,其強(qiáng)大的功能及免費(fèi)的特性得到了廣大的認(rèn)可和贊譽(yù),現(xiàn)在的最新版本是Jasperreport0.6.1。下載地址是https://sourceforge.net/projects/jasperreports/。
iReport是jasperreport的一個(gè)IDE的開發(fā)工具,使Jasperreport變得更易用,其最新版本是iReport0.4.0支持到Jasperreport0.6.1,和Jasperreport一樣也在不斷的更新中。下載地址是https://sourceforge.net/projects/ireport/。
關(guān)于利用這兩個(gè)工具開發(fā)Web報(bào)表,這里已經(jīng)有幾份很好的材料:
JasperReport與iReport的配置與使用.pdf(該文檔可用于一開始入門熟悉這兩個(gè)工具)
TheJasperReportsUltimateGuide.1.0.pdf (這個(gè)本是一份收費(fèi)的文檔,講述了Jasperreport生成的原理方面的知識(shí),如果你打算能熟練的使用Jasperreport這個(gè)報(bào)表工具,需要好好看這份英文資料的)
http://www.javaresearch.org/forum/thread.jsp?column=316&thread=14374
(這是我在論壇上寫的一個(gè)另一篇入門指南)---(轉(zhuǎn)貼者:無法打開此連接)
第一次運(yùn)行
第一次總是比較痛苦,使用這個(gè)報(bào)表工具也是,下面是我總結(jié)出的一些運(yùn)行中比較容易出現(xiàn)的問題。我的總結(jié)是建立在使用iReport0.4.0 + Jasperreport0.6.1)。至于這兩者的組合,我用到現(xiàn)在還是覺得比較順的。從souceforge 上下載iReport-0.4.0.zip 解壓后,要注意一點(diǎn),把你的JDK的tools.jar拷到你解壓后的iReport的lib目錄下,做中文 的pdf報(bào)表還需要把iTextAsian.jar拷到lib下,如果你用的是Oracle的數(shù)據(jù)庫(kù),那么你還需要把class12.jar也就是 Oracle的Jdbc包拷到lib下,其他數(shù)據(jù)庫(kù)也一樣。
好了準(zhǔn)備工作做好了,運(yùn)行iReport.bat。如果比較看到UI界面,說明
iReport成功運(yùn)行了。
如果dos界面一閃而過,說明沒有成功。按以下步驟可解決該問題:
確定系統(tǒng)安裝有JDK,而且系統(tǒng)環(huán)境設(shè)置,path里有JDK的bin目錄,并有java_home參數(shù),以下是我的幾個(gè)參數(shù)的配置情況可供參考:
1 java_home D:\JBuilder9\jdk1.4
2 path D:\JBuilder9\jdk1.4\bin;D:\Install\ant161\bin
3 classpath D:\iReport042\fonts;E:\Project\EssV6\webapps\WEB-INF\classes
4 ant_home D:\Install\ant161
(關(guān)于上面參數(shù)設(shè)置的說明:
iReport0.4.0要求JDK1.4以上版本,所以要注意Oracle9裝好會(huì)自動(dòng)把java環(huán)境設(shè)為Oracle自帶的JDK1.3.1,會(huì)導(dǎo)致無法運(yùn)行iReport。
ant_home 及path中ant的設(shè)置是為了可以用ant來學(xué)習(xí)Jasperreport的例子,這些例子在Jasperreport解壓后的demo\ samples目錄下,比如在Dos環(huán)境下進(jìn)入demo\samples\jasper目錄下,輸入命令ant view 就可以看到該示例報(bào)表。
classpath 中D:\iReport042\fonts;的設(shè)置是確保iReport里字體設(shè)置的時(shí)候能選擇一些外部字體,比如要讓PDF顯示黑體,那么把 windows下的simhei.ttf拷到D:\iReport042\fonts下,在iReport中如下設(shè)置:pdffontname為外部字 體、truetypefont 為simhei.ttf、 編碼為unicode with horizontal writing,這樣就能使用黑體了
E:\Project\EssV6\webapps\WEB-INF\classes,classpath里的這是設(shè)置,是讓報(bào)表里一些數(shù)據(jù)要經(jīng)過特殊處理,可以用工程里的函數(shù)。
這些設(shè)置完成后,到dos環(huán)境下的iReport目錄下,運(yùn)行iReport.bat,dos環(huán)境下的好處是如果iReport運(yùn)行失敗可以看到失敗原因,然后針對(duì)性的解決。iReport可以運(yùn)行后就是一個(gè)摸索使用,慢慢了解熟悉的過程了,直到你能做出像樣的一些報(bào)表。這個(gè)過程可以參考上面提到的
http://www.javaresearch.org/forum/thread.jsp?column=316&thread=14374
常見問題的解決
具體做報(bào)表的時(shí)候會(huì)碰到許多問題,關(guān)鍵的是我們需要分析出錯(cuò)提示,根據(jù)找到解決辦法,比如你把報(bào)表放到你的工程下,比如運(yùn)行結(jié)果提示 java.io.FileNotFoundException,那么你就需要確定你的報(bào)表編譯后的文件在相應(yīng)的目錄;又比如提示 NoClassDefFoundError,那你就要看看是哪個(gè)包沒有放到你的工程下。
需要非常強(qiáng)調(diào)的是:好好看Jasperreport自帶的例子,看懂那些例子,至少模仿一下,就能做出你想要的報(bào)表了。
我的報(bào)表Faq
1.java.io.FileNotFoundExceptionJasperreport自帶的webapp的例子中,用于定位.jasper報(bào)表模板文件的方法是:
File reportFile = new File(application.getRealPath("/reports/WebappReport.jasper"));
這個(gè)時(shí)候,如果你的web服務(wù)器是tomcat,wabapp中的文件就放在root目錄下
那么這個(gè)報(bào)表的實(shí)際位置是:D:\Tomcat41\webapps\ROOT\reports\WebappReport.jasper
然而當(dāng)你使用子報(bào)表時(shí),情況有所不同,首先在子報(bào)表中沒有 application 這個(gè)對(duì)象
所以你不能使用 new File(application.getRealPath("/reports/WebappReport.jasper"))的方法來定位子報(bào)表。
jasperreport支持三種方式定位文件,具體參看 JasperreportUtimateGuide.pdf
這里說一下,如果你是用String的類型來關(guān)聯(lián)子報(bào)表,并且String的值是 subreport.jasper
那么Jasperreport會(huì)到 D:\Tomcat41\webapps\ROOT\WEB-INF\classes目錄下查找是否有subreport.jasper這個(gè)文件
知道這點(diǎn)就能采取各種辦法了