第一篇 jasperreport简介和helloworld
(1) 简介
JasperReport是一个强大、灵活的开源报表生成工具,能够展示丰富的页面内容,并将之转换成PDF,HTML,或者XML格式。该库完全由Java写成,可以用于在各种Java应用程序,包括J2EE,Web应用程序中生成动态内容。
iReport 也是开源软件,其主要作用是用来以可视化的方式设计生成JasperReport 所使用的报表格式文件,因为JasperReport 本身并未提供很好的可视化报表设计方式,ireport可视化的设计界面,支持拖拉试操作,方便、快捷的制作出各种复杂的报表。
Jaspersoft Studio是一个专为JasperReports报表引擎而开发的报表设计器,是iReport设计器的一个完整重构,基于Eclipse平台实现。它 能够让你创建包含图表、图片、子报表、交叉表等非常复杂的布局。可以通过JDBC、TableModels、JavaBeans、XML、Hibernate、CSV或自定义数据源来读取数据。可以将报表输出成PDF、RTF、XML、XLS、CSV、HTML、XHTML、text、 DOCX或OpenOffice。
(2) 准备环境:
Jdk1.6.39 + eclipse-jee-helios-SR2-win32.zip + jasperreports-4.8.0-project.zip
jasperreports可视化设计工具:
iReport-4.8.0-windows-installer.exe
jaspersoftstudio-2.0.1-windows-installer-x86_64.exe
(3) jasperreports的目录结构
build: 存放jasperreports项目编译生成的class文件,但它们未被打包成jar.
demo: 存放的实例.
dist: 自身的jar包.
lib: 编译和运行依赖的jar包.
doc: 一些xml文档和一个pdf的英文guide.
src: 源码
(4) 第一个示例程序:
(1) 项目结构预览
(2) 新建java项目
在eclispe里面新建java project: Jasperreports_HelloWorld
(3) 导入需要的jar包
这里必须的包有:所有以commons开头的包和jasperreports-4.8.0.jar, 这些jar包都可以在 lib和dist目录下找到 (jasperreports-fonts-4.8.0.jar是这个例子中编译的时候提示JVM无法识别字体时加进来的,可能跟使用的报表文件有关,不知道是不是必须的) 。
(4) 编写报表模板文件
jasperreports的报表模板文件扩展名为 .jrxml, 这里我从它本身自带的示例中copy了一个过来,在 demo\samples\alterdesign\reports目录中的AlterDesignReport.jrxml, 就是上面HelloWorld中看到的那个文件,可以在上面右键用xml editor打开看看。
(5) 报表的编译、数据填充和运行
jasperreports的核心是报表文件的设计,就是.jrxml文件,设计完成之后,需要对报表进行编译,就像java的源代码.java需要编译成.class文件一样,.jrxml报表模板文件经过编译之后,生成.jasper文件,HelloWorld中的AlterDesignReport.jrxml经过编译之后,生成AlterDesignReport.jasper文件,当然,文件名可以重新起。报表的编译用到JasperCompileManager类。
经过编译之后的报表需要填充数据源、参数等,报表的数据源可以来自xml文件,数据库等,报表负责按照定义的模板样式显示数据源和参数等。报表的填充需要用到JasperFillManager类, 报表填充之后生成.jrprint文件。.jrprint是可以显示并且与格式无关的报表,即它既可以生成pdf格式报表,也可以生成excel格式报表,还可以直接使用Jasperreports的报表浏览工具来浏览。
Jasperreports用户报表浏览的工具类为JRViewer, 它继承自Java里的Jpanel, 因此很方便使用,接下来看看HelloWorld.java的源代码, 运行看看, 第一个示例是不是成功了呢!
package com.jasperreports.main;
import javax.swing.JFrame;
import net.sf.jasperreports.engine.JREmptyDataSource;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JasperCompileManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.swing.JRViewer;
public class HelloWorld {
public static void main(String[] args) throws JRException {
// 编译jasper报表模板
JasperCompileManager.compileReportToFile("D:/workspaces/eclipse/JasperReport_HelloWorld/src/AlterDesignReport.jrxml", "AlterDesignReport.jasper");
// 填充jasper报表
JasperFillManager.fillReportToFile("AlterDesignReport.jasper", null, new JREmptyDataSource());
// 显示jasper报表
JRViewer jrviewer = new JRViewer("AlterDesignReport.jrprint", false);
JFrame jf = new JFrame("报表预览");
jf.add(jrviewer);
jf.pack();
jf.setVisible(true);
}
}