`
lbyzx123
  • 浏览: 477889 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

JasperReport的使用

    博客分类:
  • J2EE
阅读更多

最近工作中用到报表,而我在学习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 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,如果没有安装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);

}

jsp写法如下:

<%@ page contentType="text/html;charset=GBK" %>
<%@ page import="dori.jasper.engine.*" %>
<%@ page import="java.util.*" %>
<%@ page import="java.io.*" %>
<%@ page import="java.sql.*" %>
<%@ page import="com.zx.report.util.CarUse"%>
<%@ page import="dori.jasper.engine.data.*" %>

<%
Connection conn = null;
Statement st = null;
ResultSet rs = null;
byte[] bytes = null;
List carUseList=new ArrayList();

try{

Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
conn =DriverManager.getConnection("jdbc:microsoft:sqlserver://10.10.10.207:1433;DatabaseName=report;user=sa;password=111111");

//以输入流方式
   InputStream reportFile = getClass().getClassLoader().getResourceAsStream("carUserBd.jasper");

//以reportFile方式
//File reportFile =new File(request.getRealPath("/report/carUserBd.jasper"));

Map parameters = new HashMap();

String sqlCarUser="SELECT car.carNo, dept.Name , people.peopleName,carUse.useDescription ," +
" carUse.beginTime , carUse.planEndTime , carUse.comment , carUse.driver," +
" carUse.peopleNumber ,OneWay= case carUse.isOneWay  when 0 then '双程'  else '单程'  end, " +
"isFirst= case carUse.priority when 0  then '低' when  1  then  '中'  else  '高'  end, carUse.start , " +
"carUse.destination , people.peopleName as ratifier FROM DEPT_CARUSELOG carUse , DEPT_CARINFO car , " +
"ADMIN_ORGANIZATION dept , PUBLIC_PEOPLEINFO people WHERE carUse.id=290 and " +
"caruse.carId=car.carId and carUse.departId=dept.id and carUse.peopleId=people.peopleId";

st = conn.createStatement();
rs = st.executeQuery(sqlCarUser);

while(rs.next()){
CarUse carUse=new CarUse();
carUse.setCarNo(rs.getString(1));
carUse.setName(rs.getString(2));
carUse.setPeopleName(rs.getString(3));
carUse.setUseDescription(rs.getString(4));
carUse.setBeginTime(rs.getDate(5));
carUse.setPlanEndTime(rs.getDate(6));
carUse.setComment(rs.getString(7));
carUse.setDriver(rs.getString(8));
carUse.setPeopleNumber(rs.getString(9));
carUse.setOneWay(rs.getString(10));
carUse.setIsFirst(rs.getString(11));
carUse.setStart(rs.getString(12));
carUse.setDestination(rs.getString(13));
carUse.setRatifier(rs.getString(14));

carUseList.add(carUse);

}

JRBeanCollectionDataSource ds = new JRBeanCollectionDataSource(carUseList);

bytes =
JasperRunManager.runReportToPdf(
reportFile,
parameters,
ds);
String fileName = "test.pdf";
response.setContentType("application/pdf");
response.addHeader(
"Content-Disposition",
"attachment;filename=\"" + fileName);

response.setContentLength(bytes.length);
ServletOutputStream ouputStream = response.getOutputStream();

System.out.println("5");
ouputStream.write(bytes, 0, bytes.length);
ouputStream.flush();
ouputStream.close();

} catch (SQLException sqle) {

System.out.println("SQLException:" + sqle.getMessage());

} catch (JRException e) {
e.printStackTrace();
}catch(ClassNotFoundException cnfe){

}

%>
jasperreport可以用Collection做为数据源,这种方式比用Connection方式更为灵活方便。

分享到:
评论

相关推荐

    JasperReport使用

    【JasperReport使用】这篇教程主要讲解如何使用JasperReport设计和生成报表,特别是通过iReport这个可视化工具来创建报表模板。JasperReport是一个开源的Java报表库,它允许开发者生成复杂的报表,包括数据的计算、...

    JasperReport使用手冊

    ### JasperReport 使用手册 #### 第一部分:使用 iReport 制作报表的详细过程(Windows 环境下) ##### 1.1 前言 本文档旨在详细介绍使用 iReport 制作报表的过程,尤其针对那些希望快速上手并完成报表开发任务的...

    Ireport and JasperReport使用说明.doc

    ### Ireport 和 JasperReport 使用说明 #### Ireport 使用前准备 **1.1 下载 JDK** JDK(Java Development Kit)是开发 Java 应用的基础工具包,对于使用 Ireport 来说至关重要。建议下载 1.4.2 以上的版本。安装...

    使用JasperReport+iReport进行WEB开发

    JasperReport和iReport的结合使用,为开发者提供了一种高效、灵活的方式来设计和生成复杂的报表。本文将深入探讨如何利用这两个工具进行WEB开发。 JasperReport是一款开源的Java报表库,它支持多种数据源,如数据库...

    JasperReport报表设计总结

    下面是一个简单的示例,展示了如何使用JDBCConnection类来获取数据库连接并传递给JasperReport使用。 ```java public class JDBCConnection { private String jdbcDriver; private String jdbcUrl; private ...

    JasperReport使用手册 - JasperReport - 软件开发 - 深度开源.html

    是一款报表打印组件,是开放源代码组织 中的一个 报表打印工程, JasperReport sf.net 由于 本身并未提供很好的可视化报表设计工具, JasperReport 在之后推出了 iReport ,作为 报表模版编辑软件,具有以下突出的...

    jasperreport完整的jar包

    通常,为了在项目中使用 JasperReport,我们需要下载一系列的 JAR 文件,这些文件包括 JasperReport 自身的核心组件以及它的依赖库,例如 iText(用于 PDF 输出)、JFreeChart(用于图表绘制)等。 描述 ...

    jasperreport的操作步骤

    在使用JasperReport前,需确保项目中包含以下必要的库: - groovy-all-1.7.5.jar:Groovy脚本引擎。 - commons-beanutils-1.8.3.jar:提供对Java Bean的操作支持。 - commons-digester-1.7.jar:用于解析配置文件。...

    jasperreport需要的jar包

    **JasperReport 使用的关键步骤** 1. **设计报表**: 使用iReport或Jaspersoft Studio创建报表模板,定义报表布局、样式、字段等。 2. **编译报表**: 将JasperDesign文件编译成JasperReport文件,这一步是运行报表...

    jasperreport项目演练

    1. ** PDF导出**:JasperReport使用Apache PDFBox库生成高质量的PDF文档,保持了原始报表的样式和布局。 2. ** Excel导出**:通过使用JExcelAPI,报表可以导出为可编辑的Excel工作簿,便于数据分析和修改。 3. ** ...

    Struts2与Jasperreport报表结合

    通过XML映射文件,iBatis可以动态地执行SQL,将查询结果转换为Java对象,供JasperReport使用。 JasperReport3.1.4是报表设计和生成的核心组件。它支持丰富的报表元素,如文本框、图像、表格等,以及复杂的样式和...

    jasperreport资料

    - **表达式语言**:JasperReport使用JasperReports Expression Language(JEXL)处理计算和逻辑,例如动态计算值、控制报表流程等。 - **.jasper编译**:JRXML设计文件需通过JasperCompileManager编译成.jasper二...

    jasperreport 生成pdf,html,xml,csv,xls报表,myeclipse源码

    1. **报表设计**:jasperreport使用JRXML格式的XML文件来定义报表布局和样式。这些设计文件可以包含文本、图像、表格、图表等多种元素,并支持复杂的排版和样式设置。 2. **数据绑定**:jasperreport支持多种数据源...

    jasperReport+ireport制作pdf报表教程

    1. **模板设计**:jasperReport使用JRXML文件作为模板,这种XML格式的文件可以包含所有报表设计的细节,如样式、布局和数据绑定。 2. **数据源支持**:jasperReport支持多种数据源,包括JDBC连接、XML数据、CSV文件...

    jasperReport学习文档资料.rar

    "jasperreport使用.doc"是一个综合性的JasperReport使用指南,可能包含了报表的生成、预览、导出,以及如何在Java项目中集成JasperReports等核心内容。 "用iReport制作交叉表(CrossTabs).doc"专门针对交叉表的制作...

    JasperReport+iReport报表工具

    JasperReport使用XML格式的报表定义文件(.jrxml),开发者可以通过定义这些文件来创建静态或动态的报表。当这些报表需要展现时,JasperReport引擎会将.jrxml文件编译成.jasper文件,然后通过报表查看器进行展示。...

    自己搜集的jasperreport和ireport的一些资源

    "JasperReport使用手冊.pdf"提供了JasperReport库的详细使用方法,包括如何定义数据源,创建动态报表,使用子报表,导出报表到不同格式(如PDF、HTML、Excel等),以及如何进行报表参数化等。 ".crtfxqtable.sql"看...

    JasperReport报表成型框架

    - **模板语言**: JasperReport使用JRXML格式的XML文件作为报表模板,定义了报表的布局、样式和数据绑定。 - **组件**: 报表可以包含各种元素,如文本框、表格、图像、图表、子报表等。 - **样式和格式**: 使用CSS...

Global site tag (gtag.js) - Google Analytics