45fan.com - 路饭网

搜索: 您的位置主页 > 网络频道 > 阅读资讯:JasperReport学习知识大全

JasperReport学习知识大全

2016-08-25 13:22:18 来源:www.45fan.com 【

JasperReport学习知识大全

JasperReport学习(转)

关键词: JasperReport

http://www.54bk.com/user1/8030/index.html

最近使用了JasperReports和iReport制作了几个报表,这片文章是我的一些总结。

JasperReports是一个开源的java报表制作引擎

http://jasperreports.sourceforge.net

iReport是JasperReports的一个GUI工具,用来生成JasperReports的jrxml文件。

http://ireport.sourceforge.net

首先使用iReport制作报表的模板(我自己起的名词):

运行iReport,新建一个report。

在Title band中输入报表的名称,好象使用pageheader band也可以,目前我还没有弄明白2者具体的差别。

在column header band中放置一些static text,做为报表的列标题。

在detal band中放入一些textfield,显示报表的详细数据。

在summary band中放入类似于"合计"之类的textfield,这个band是显示在最后一行数据的下放。

在LastPageFooter band中放入想在最后一页显示的信息,比如说"审阅人签名"之类的。

这样报表的框架就基本上搭好了,然后compile一下检查是否有错误,如果没有错误那么就可以在程序中使用这个报表模板了。

JasperReports介绍:

使用JasperReports生成报表是非常简单的,仅仅使用net.sf.jasperreports.engine包中的几个类即可完成报表的生成、预览、打英导出等各个功能。

1. net.sf.jasperreports.engine.JasperCompileManager类。

使用这个类的几个静态方法即可完成对报表的编译工作(具体参见api文档)

编译完成后可以JasperCompileManager有两种处理方式:

1> 返回一个JasperReport对象

2> 在.jrxml文件所在的目录生成一个.jasper文件

这两种方式是由程序员自己选择的。不过我比较倾向使用.jasper文件,毕竟报表的结构不是每天都在改动,所以每次重新编译报表并不是很划算。

2. net.sf.jasperreports.engine.JasperFillManager类

这个类的作用是用数据填充报表。它可以使用JasperReport对象也可以使用。jasper文件做为报表模板。

它同样有2中处理方式:

1> 返回一个JsaperPrint对象。

2> 在.jasper文件所在目录生成一个.jrprint文件

这个类使用net.sf.jasperreports.engine.JRDataSource接口的实现做为数据源。任何实现了JRDataSource的类均可做为数据源使用

在net.sf.jasperreports.engine.data包中定义了一些数据源,可根据自己的需要选择。这里我使用的是JRTableModelDataSource做为

数据源(因为我的报表还要显示在Table中)。

3. net.sf.jasperreports.engine.JasperPrintManager和net.sf.jasperreports.engine.JasperExportManager

者两个类的作用是打英导出报表

他们使用 JasperPrint 和 .jrprint文件做为输入。

可以根据自己的需要使用里面的方法。

例:

import net.sf.jasperreports.engine.*;

import net.sf.jasperreports.view.*;

public class CompileReport {

public static void main(String args[]) {

try {

//编译report.jrxml并在report.jrxml所在的目录中生成report.jasper文件

JasperCompileManager.compileReportToFile("report.jrxml");

//填充数据,这里使用的是JREmptyDataSource

JasperFillManager.fillReportToFile("report.jasper", null, new JREmptyDataSource(50));

//预览报表,false代表不是使用xml文件。

JasperViewer view = new JasperViewer("reports.jrprint", false);

view.pack();

view.setVisible(true);

}

catch (Exception e) {

e.printStackTrace()

}

}

}

http://www.heci.net 贺词网!]

JasperReports学习笔记

版本:jasperreports-0.6.7

学习资料来源:http://jasperreports.sourceforge.net

一、 需求(requirements)

JasperReports要用到的工具和类

1. JDK(java开发环境)

JDK 1.2.2 or higher

2. XML

JAXP 1.1 XML Parser(XML解析器)

Jakarta Commons Digester Component (version 1.1 or later)

http://jakarta.apache.org/commons/digester/

Jakarta Commons BeanUtils Component (version 1.1 or later)

http://jakarta.apache.org/commons/beanutils/

Jakarta Commons Collections Component (version 1.0 or later)

http://jakarta.apache.org/commons/collections/

Jakarta Commons Logging Component (version 1.0 or later)

http://jakarta.apache.org/commons/logging/

3. JDBC(连接数据库用)

JDBC 2.0 Driver

4. PDF(转换为PDF文件用到)

iText - Free Java-PDF library by Bruno Lowagie and Paulo Soares

(version 1.01 or later)

http://www.lowagie.com/iText/

5. XLS(转换为excel文件用)

Jakarta POI (version 2.0 or later)

http://jakarta.apache.org/poi/

二、快速了解(quick how to)

1. Main classes(主要的类)

用JasperReports 时,用到的主要类

net.sf.jasperreports.engine.JasperCompileManager

net.sf.jasperreports.engine.JasperFillManager

net.sf.jasperreports.engine.JasperPrintManager

net.sf.jasperreports.engine.JasperExportManager

这些类提供了很多静态方法,用来编译、填充、打印和导出报表。详细信息请参考JasperReports的javadoc文档。

net.sf.jasperreports.view.JasperViewer

此类用来预览生成的报表(generated reports.)。

net.sf.jasperreports.view.JasperDesignViewer

此类用来预览报表设计(view the report design)。

2. 编译报表设计Compiling a report design

xml文件定义报表设计(report design)。编译报表设计(report design)产生报表(generate reports)。网页http://jasperreports.sourceforge.net/quick.how.to.html中介绍用net.sf.jasperreports.engine.JasperCompileManager类的静态方法compileReportXXX()来编译报表设计(report design)。但是JasperCompileManager不赞成使用此方法编译报表设计(report design),推荐使用JasperCompileManager的方法compileReportXXX()来代替。

编译报表设计(report design)时,jasperreports engine首先检查模板,确定是否一致,然后转换所有的报表表达式(report expressions),最后产生.jasper文件。 要想使编译工作尽可能灵活,你可以实现接口net.sf.jasperreports.engine.design.JRCompiler。

3.预览报表设计 Viewing a report design

使用net.sf.jasperreports.view.JasperDesignViewer的程序来预览。他的main()方法接受报表设计文件名(xml)或者编译后的.jasper文件。

4. 填充报表 Filling a report

编译报表设计(xml文件)得到报表文件(.jasper),再调用net.sf.jasperreports.engine.JasperFillManager类的方法fillReportXXX(),可以得到报表(JasperPrint)。

5. 预览报表 Viewing a report

Generated reports can be viewed using the net.sf.jasperreports.view.JasperViewer application.

In its main() method, it receives the name of the file which contains the report to view.

我没有测试成功。

6. Printing a report

Generated reports can be printed using the printReport(), printPage() or printPages() static methods exposed by the net.sf.jasperreports.engine.JasperPrintManager class.

7. Exporting to PDF, HTML, XLS, CSV or XML format

填充报表文件(.jasper文件)得到报表(JasperPrint)后,可以使用net.sf.jasperreports.engine.JasperExportManager类的方法exportReportXXX()导出为各种格式的文件PDF,HTML,XML。

After having filled a report, we can also export it in PDF, HTML or XML format using the exportReportXXX() methods of the net.sf.jasperreports.engine.JasperExportManager class.

三、JasperReports的工作流程:

根据上图的流程,JasperReports做报表有一下步骤:

1、 报表设计,可以用ireport可视化工具来实现,生成xml文件。完成后,可以直接到步骤3,直接编译xml文件。

2、 如果已经存在报表设计文件(xml文件),可以用net.sf.jasperreports.engine.xml.JRXmlLoader.load()方法载入报表设计,该方法返回JasperDesign对象,通过JasperDesign对象,可以修改报表设计,比如:添加、删除字段,添加、删除变量,添加、删除分组,等等。

3、 完成报表设计后,接下来就可以编译报设计,编译报表设计可以用类net.sf.jasperreports.engine.JasperCompileManager的compileReport()方法来实现,该方法可以编译xml文件或JasperDesign对象,产生JasperReport对象,JasperReport对象可序列化,能够保存为文件(通常是.jasper文件)。类net.sf.jasperreports.engine.JasperCompileManager还可以把报表转化为报表设计文件(xml文件)。得到JasperReport对象(可从.jasper文件实例化一个JasperReport对象)后,给报表填充数据产生JasperPrint对象。JasperPrint对象可序列化,保存为文件。有了JasperPrint对象后,可以打英浏览、转换为其他格式的文件,如:PDF,HTML,XML,XLS,CSV等等,这些操作就是我们想得到的最终结果。尽管JasperPrintManager类可以导出为PDF,XML文件,但是不赞成使用JasperPrintManager类来导出,建议用JasperExportManager类来导出PDF,HTML,XML文件;要导出XLS和CSV文件,用专业的导出类net.sf.jasperreports.engine.export.JRXlsExporter类和net.sf.jasperreports.engine.export.JRCsvExporter类

导出为XLS的代码段:

JRXlsExporter exporter = new JRXlsExporter();//创建实例

//设计参数

exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);

exporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME, strDestFile);

exporter.setParameter(JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET, Boolean.FALSE);

exporter.exportReport();//导出

导出为CSV文件和XLS类似。

本文地址:http://www.45fan.com/a/question/67453.html
Tags: 学习 HTTP JasperReport
编辑:路饭网
关于我们 | 联系我们 | 友情链接 | 网站地图 | Sitemap | App | 返回顶部