jasperReport+ireport制作pdf报表教程

一.简介:
JasperReport是一个开源的java报表制作引擎,ireport是jasperReport的一个GUI工具。我们先使用ireport制作报表的样式,ireport会给我们产生个后缀名为jrxml的文件,然后我们通过java代码向这个模版填充数据,再然后显示出来,它支持输出的文件格式包括PDF,HTML,XHTML,EXCEL等等…一个典型的jrxml文件会包含以下元素:
<Title>: 每个报表一般会有一个名字.
<pageHeader>: 报表的公共要素, 比如页码,创建时间,创建人等信息一般放置在这里.
<columnHeader>: 放列的名称.
<detail>: 放置需要循环输出的数据.
<columnFooter>: 列级别的统计计算值或是列的说明.
<pageFooter>: 放置页级别的统计值或是页的说明.
<lastPageFooter>: 最后一页特殊的格式, 可以放置总结.
<summary>: 只在最后一页才出现.
二.案例:
jasperReport支持多种数据源,下面使用javaBean作为数据源讲解一个简单的例子。
1. java代码

/**
* 部门实体
* @author Hewei
*
*/
public class Department {

private String name; //部门名称
private List<Staff> staffs; //员工集合

public Department(){}

public String getName() {
return name;
}

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

public List<Staff> getStaffs() {
return staffs;
}

public void setStaffs(List<Staff> staffs) {
this.staffs = staffs;
}
}
/**
* 员工实体
* @author Hewei
*
*/
public class Staff {

private String name; //姓名
private String sex;//性别

public Staff(){}

public String getName() {
return name;
}

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

public String getSex() {
return sex;
}

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


现在我们已经有个两个存在依赖关系的实体对象,我们要做的就是在一张pdf报表上显示部门名极其以下的员工的信息。 我们还需要一个静态方法向部门实体填充数据,如下…



/**
* 数据工厂
* @author HEWEI
*
*/
public class Factory {
/**
*
* @return
*/
public static List<Department> returnData(){

Staff staff1 = new Staff();
staff1.setName("关羽");
staff1.setSex("男");
Staff staff2 = new Staff();
staff2.setName("张飞");
staff2.setSex("shit");
Staff staff3 = new Staff();
staff3.setName("刘备");
staff3.setSex("男");

List<Department> departments = new ArrayList<Department>();
Department department = new Department();
department.setName("研发部");
List<Staff> staffs = new ArrayList<Staff>();
staffs.add(staff1);
staffs.add(staff2);
staffs.add(staff3);
departments.add(department);
return departments;
}
}


然后我们用javabean 作为报表数据源,我觉得这样是符合mvc规范的,
然而使用sql 查的话, 很麻烦, 要是遇到了 需要 几十张表数据的报表 ,
写sql 很难实现。
详细在附件中
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值