java開(kāi)發(fā)者 網(wǎng)友 溪澗
多謝了!
最近工作中用到報(bào)表,而我在學(xué)習(xí)JasperReport的過(guò)程中遇到了很多問(wèn)題(主要是國(guó)內(nèi)的資料太少了),網(wǎng)上很少找得到,在此我就把我找到的一些資料和大家共享,希望能對(duì)大家有所幫助。
1、JasperReport和iReport的資源,最新版本可以到下面官方網(wǎng)站得到
iReport官方網(wǎng)站:
http://ireport.sourceforge.net
JasperReport官方網(wǎng)站:
http://jasperreports.sourceforge.net
2、安裝
1)、JDK的安裝,并配置JAVA_HOME
比如我的JAVA_HOME路徑如下:
JAVA_HOME D:\Program Files\j2sdk1.4.2_03
2)、由于中文的問(wèn)題,所以還需要下載:itext-1.02b.jar和iTextAsian.jar包
下載地址:http://itext.sourceforge.net/downloads/iTextAsian.jar
并在CLASSPATH中設(shè)置
例如我的CLASSPATH如下:
CLASSPATH
E:\Program Files\Apache Group\Tomcat4.1\webapps\testreport\WEB-INF\lib\itext-1.02b.jar;E:\Program
Files\Apache Group\Tomcat 4.1\webapps\testreport\WEB-INF\lib\iTextAsian.jar;E:\Program Files\Apache
Group\Tomcat 4.1\webapps\testreport\WEB-INF\lib;D:\tools\iReport0.2.3\lib
3)、iReport的安裝iReport只要解壓就OK,如果沒(méi)有安裝Ant,可以直接在iReport下的noAnt目錄下,
運(yùn)行startup.bat就可以了,這樣iReport就可以啟動(dòng)了
4)、JasperReport
Jasperreport不需要任何配置,你只需將下載以后的jar包放到classpath下即可
5)、數(shù)據(jù)庫(kù)的JDBC驅(qū)動(dòng)包
加入到CLASSPATH中
3、詳細(xì)資源
iReport官方提供了一些關(guān)于iReport視頻,對(duì)于初學(xué)者很有幫助:
地址:http://ireport.sourceforge.net/docs.html
JasperReport官方提供的使用指南
地址:http://jasperreports.sourceforge.net/tutorial/index.html
JasperReport提供的一些例子:
地址:http://jasperreports.sourceforge.net/samples/index.html
4、常見(jiàn)問(wèn)題
1)、iReport中提示框輸入中文是不能正常顯示,請(qǐng)將iReport下lib中的這個(gè)包刪除tinylaf.jar
2)、在iReport中運(yùn)行報(bào)表時(shí)如果出現(xiàn)亂碼問(wèn)題,請(qǐng)檢查itext-1.02b.jar和iTextAsian.jar這兩個(gè)包是否加到CLASSPATH
3)、在jsp或servlet高度報(bào)表時(shí)出現(xiàn)亂碼或不顯示,請(qǐng)檢查你在報(bào)表設(shè)計(jì)過(guò)程中所設(shè)置的字體及其編碼
比如:pdfname、pdfencoding
5、下面是兩個(gè)調(diào)試?yán)?
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);
}
}
JSP:
<%@ page contentType="text/html;charset=GBK" %>