日期:2014-05-16  浏览次数:20788 次

Jasperreport应用小结

1.简介

JasperReport是一个强大、灵活的JAVA开源报表生成工具,能够展示丰富的页面内容,并将之转换成PDF,HTML,或者XML格式,可以用于在各种Java应用程序,包括J2EE,Web应用程序中生成动态内容。

JasperReport生成报表的过程如图所示。

1)File Jasper报表模板文件:xml文件,屏蔽不同目标报表文件的差异,通常使用IReport进行配置,后缀为.jrxml

2)Paramter:参数,图中HashMap部分,用于填充报表模板文件

3)JRDataSource:数据源,用于填充报表模板文件

4)JasperReports Engine:JasperReport库的统称,主要功能如下:

编译File Jasper报表模板文件,通常直接使用IReport进行编译,后缀名为.jasper

加载编译后的.jasper文件

使用Parameter和JRDataSource填充报表

生成对应类型的报表文件

2.一般步骤

1)使用IReport配置JasperReport模板文件,注:IReport必须要和程序中使用的JasperReport版本相匹配

2)将IReport编译生成的.jasper文件放在应用可见的文件夹中

3)导入JasperReport库到应用中

4)编写代码

3.实例

下面我将按上述过程实现一个学生成绩单

1)IReport配置JasperReport模板文件

本人使用的IReport版本为5.1.0,对应的JasperRepor版本为5.1.0以上,过程略,配置结果如下图所示:

JXML文件&JASPER文件

附件iReport_files.zip

注:由于配置Parameter和DataSource时需要指定数据类型,所以已经编写了应用的部分代码,并且将应用的classpath导入到IReport中

2)将IReport编译生成的.jasper文件放在应用可见的文件夹中

3)导入JasperReport库到应用中

本次实例将生成xls和pdf两种格式的报表,所以使用的类库有,这些类均可在JasperReport和IReport下载包中获取

?

?

4)编写代码

--Student.java

package com.siyuan.jptest.entity;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

public class Student implements Serializable{

	private static final long serialVersionUID = -7272480669298422204L;
	
	private long id;
	
	private String name;
	
	private Date birth;
	
	private String sex;
	
	private int gradeNO;
	
	private int classNO;
	
	private List<Subject> subjects = new ArrayList<Subject>();
	
	public Student() {
	}

	public long getId() {
		return id;
	}

	public void setId(long id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public Date getBirth() {
		return birth;
	}

	public void setBirth(Date birth) {
		this.birth = birth;
	}

	public String getSex() {
		return sex;
	}

	public void setSex(String sex) {
		this.sex = sex;
	}

	public int getGradeNO() {
		return gradeNO;
	}

	public void setGradeNO(int gradeNO) {
		this.gradeNO = gradeNO;
	}

	public int getClassNO() {
		return classNO;
	}

	public void setClassNO(int classNO) {
		this.classNO = classNO;
	}
	
	public List<Subject> getSubjects() {
		return subjects;
	}

	public void setSubjects(List<Subject> subjects) {
		this.subjects = subjects;
	}

	@Override
	public String toString() {
		return "Student [id=" + id + ", name=" + name + ", birth=" + birth
				+ ", sex=" + sex + ", gradeNO=" + gradeNO + ", classNO="
				+ classNO + "]";
	}
	
}

?--Subject.java

package com.siyuan.jptest.entity;

import java.io.Serializable;

public class Subject implements Serializable{

	private static final long serialVersionUID = -3255077398595884176L;
	
	private long id;
	
	private String name;
	
	private int mark;
	
	public Subject() {
	}

	public long getId() {
		retu