最近工作中用到報表,而我在學習JasperReport的過程中遇到了很多問題(主要是國內的資料太少了),網上很少找得到,在此我就把我找到的一些資料和大家共享,希望能對大家有所幫助。
1、JasperReport和iReport的資源,最新版本可以到下面官方網站得到
iReport官方網站:
http://ireport.sourceforge.net
JasperReport官方網站:
http://jasperreports.sourceforge.net
2、安裝
1)、JDK的安裝,并配置JAVA_HOME
比如我的JAVA_HOME路徑如下:
JAVA_HOME D:\Program Files\j2sdk1.4.2_03
2)、由于中文的問題,所以還需要下載:itext-1.02b.jar和iTextAsian.jar包
下載地址:http://itext.sourceforge.net/downloads/iTextAsian.jar
并在CLASSPATH中設置
例如我的CLASSPATH如下:
CLASSPATH
E:\Program Files\Apache GroupTomcat4.1\webapps \estreport\WEB-INF\lib\itext-1.02b.jar;E:\Program
Files\Apache GroupTomcat 4.1\webapps\ estreport\WEB-INF\lib\iTextAsian.jar;E:\Program Files\Apache
GroupTomcat 4.1\webapps \estreport\WEB-INF\lib;D: \ools\iReport0.2.3\lib
3)、iReport的安裝iReport只要解壓就OK,如果沒有安裝Ant,可以直接在iReport下的noAnt目錄下,
運行startup.bat就可以了,這樣iReport就可以啟動了
4)、JasperReport
Jasperreport不需要任何配置,你只需將下載以后的jar包放到classpath下即可
5)、數據庫的JDBC驅動包
加入到CLASSPATH中
3、詳細資源
iReport官方提供了一些關于iReport視頻,對于初學者很有幫助:
地址:http://ireport.sourceforge.net/docs.html
JasperReport官方提供的使用指南
地址:http://jasperreports.sourceforge.net/tutorial/index.html
JasperReport提供的一些例子:
地址:http://jasperreports.sourceforge.net/samples/index.html
4、常見問題
1)、iReport中提示框輸入中文是不能正常顯示,請將iReport下lib中的這個包刪除tinylaf.jar
2)、在iReport中運行報表時如果出現亂碼問題,請檢查itext-1.02b.jar和iTextAsian.jar這兩個包是否加到CLASSPATH
3)、在jsp或servlet高度報表時出現亂碼或不顯示,請檢查你在報表設計過程中所設置的字體及其編碼
比如:pdfname、pdfencoding
5、下面是兩個調試例子
Servlet:
import javax.servlet.*;
import javax.servlet.http.*;
import dori.jasper.engine.*;
import java.io.*;
import java.util.*;
import java.sql.*;
/**
* @author Administrator
*
* To change the template for this generated type comment go to
* Window>Preferences>Java>Code Generation>Code and Comments
*/
public class TestReport extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
Connection conn = null;
try {
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
conn =
DriverManager.getConnection(
"jdbc:microsoft:sqlserver://192.168.0.10:1433;DatabaseName=am;user=sa;password=sa");
ServletContext servletContext =this.getServletContext();
File reportFile = new File(servletContext.getRealPath("test/iteminfo.jasper"));
Map parameters = new HashMap();
Integer i=new Integer(8);
parameters.put("pjId", i);
byte[] bytes =
JasperRunManager.runReportToPdf(
reportFile.getPath(),
parameters,
conn);
response.setContentType("application/pdf");
response.setContentLength(bytes.length);
ServletOutputStream ouputStream = response.getOutputStream();
ouputStream.write(bytes, 0, bytes.length);
ouputStream.flush();
ouputStream.close();
} catch (JRException jre) {
System.out.println("JRException:" + jre.getMessage());
} catch (Exception e) {
System.out.println("Exception:" + e.getMessage());
}
}
public void doPost(
HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
?
1 首先看看
http://plateau.sicool.com/main.html
上的三篇ireport和Jasperreport整合開發報表向導(一)(二)(三)
看完理解并自己運行一下,OK,你入門了
2 去找一份TheJasperReportsUltimateGuide.1.0.pdf
看完之后你就能了解JasperReport生成的基本過程及原理,里面也回答了很多
剛接觸這個報表工具會產生的疑問
3 論壇上的經驗
Java研究的論壇上有很多關于JasperReport及iReport的經驗及問題解答,所以
大家在提問的時候不妨多翻翻論壇上的帖子,很多你要問的問題都能找到答案,
還有很多寶貴的經驗
當然說起論壇最正宗還是
https://sourceforge.net/projects/ireport/
https://sourceforge.net/projects/jasperreports/
大家可以到sourceforge.net去看看,論壇上提供搜索,也能翻到很多東西,順便
練練你的英語
4 學習JasperReport的Samples
解壓jasperreports-0.5.0-project.zip 后目錄jasperreportsdemosamples
下的例子,看看這些例子是你關于這個報表工具提升能力的最好最快的方式,
我會在下面貼上各個例子的簡要說明。
要運行sample下的例子,首先你要安裝ant,并設置好環境變量
如ANT_HOME??? 值為?? D:Installant161
然后到dos方式下,到某一個sample的目錄,比如到
jasperreportsdemosamplesalterdesign目錄下
運行 ant 則會編譯報表文件
運行 ant view 則會展現報表
5 比上面更好的資料是什么?
就是JasperReport的源代碼,看懂源代碼,JasperReport
就是在你腦子里的了,你想干什么都行了,優化代碼,覆寫,繼承他的類,實現個性
化的功能,甚至你可以參考他的思想,升華一下,做一個你自己的報表
?
1. alterdesign
該例子演示了報表編譯后,在報表展現的時候如何動態的控制其中的元素
比如讓某一個矩形變色或其他
2. antcompile
?
演示如何讓 ant 來編譯
3. chart
?
演示了如何在報表中添加圖像,JasperReport是用Scriptlet的方式
往報表中添加圖像,而Scriptlet是調用也是開源的jfreechart的Api來
生成圖形,去jfreechart看一下,該工具能的圖形生成能力也很強
4. datasource
?
演示了如何在報表中使用各種數據源,能夠使用beanarray
beancollection,也可以用自定義的數據源,只要繼承了JRDataSource的
兩個接口,這個能給用戶提供非常大的靈活性,報表的數據不用局限于一
條Sql語句,也可以使用存儲過程,對生成報表中的數據也可以排序,二
次檢索,等等
5. fonts
?
各種字體的演示
6. horizontal
?
演示了水平分欄的報表,演示報表中分了三欄,其中還用到了
textFieldExpression,就像if語句的效果來選擇輸出的內容
7. hyperlink
?
演示了各種樣式的鏈接
8. images
演示了如何在報表中加入圖像以及圖像的顯示方式
9. jasper
?
演示了分組分欄的報表,演示中用了2次group
10. jcharts
演示了調用另一個開源的API jcharts來往報表中加入分析圖形,原理同
上chart,如果jfreechart都還不能滿足你分析圖形的要求,那到jcharts
里找找看吧,說不定有
11. landscape
?
演示橫向的報表
12. nopagebreak
?
演示比如在IE中不分頁的方式打印出報表的內容,通過這個演示也可以
了解報表輸出如何配置參數
13. noreport
演示了如何直接通過java程序生成JasperPrint對象來輸出
14. noxmldesign
演示了如何直接通過java程序生成JasperDesign對象來動態的生成報
表,根據這個例子,用戶可以作出自定義選列的報表,當然比較麻煩,
而且肯定自己要補充他的API庫
(JasperReport真是強大啊,呵呵)
15. pdfencrypt
?
演示了pdf的輸出方式,可以給pdf文件加密碼,其實就是pdf輸出方式的
參數配置,具體有那些參數可配置,去看看API吧
16. printservice
演示了如何直接打印報表
17. query
演示了如何讓查詢的sql動態起來,比如你可以通過一個Jsp頁面傳
報表的sql的where條件,order條件,甚至整個sql語句
18. rotation
演示了文字縱向顯示的報表
19. scriptlet
?
演示了如何繼承JRDefaultScriptlet,并加入自己的處理語句,這個功能
可是很強大的哦,看看這些接口
beforeReportInit() afterReportInit() beforePageInit()
afterPageInit() beforeColumnInit() afterColumnInit()
beforeGroupInit(String groupName)
afterGroupInit(String groupName)
看看這些名字就知道你能完成那些功能,比如顯示一列數據后,馬上跟
上該列數據的分析圖形,當然你也可以加上自己的方法并在報表中調用
20. shapes
演示了JasperReport中自帶的圖形,及能配置的參數
當然你也能繼承或者覆寫JasperReport中的Api生成你要的圖形,
21. stretch
演示了如何處理報表中數據拉伸以及帶來周圍的線及框的拉伸,
你能了解到雖然黑框式表格不是JasperReport中缺省的展現方式,
但在JasperReport中不難實現
22. subreport
演示了子報表,還告訴你一個報表中可以有n個子報表,子報表中還可以
嵌套子報表
23. tableofcontents
演示了如何生成一個有目錄的,復雜的報表
24. unicode
演示了各種 字符編碼
25. webapp
演示了如何把報表放到一個JavaWeb項目中,可以用Jsp Servlet
applet,筆者做了一個有參數頁面,可以選擇html pdf applet
輸出方式的報表,有興趣的 我可以在后面放上代碼
posted on 2006-01-21 11:22
千山鳥飛絕 閱讀(4740)
評論(0) 編輯 收藏 所屬分類:
Jasperreport