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