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