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