转载网址 :http://www.sunchis.com/html/java/javareport/2010/0313/67.html
一、准备
下载iReport3.7.1、JasperReport3.7.1、Struts2.1.8及其他需要的包,需导入包如下图:
JasperReport3.7.1下载:http://sourceforge.net/projects/jasperreports/files/jasperreports
iReport3.7.1下载:http://sourceforge.net/projects/ireport/files/iReport
Struts2.1.8下载:http://struts.apache.org/download.cgi
二、整合Struts2+JasperReport3
1. 新建以下三个pojo类:
Address
- package com.xy.report.pojo;
-
-
public class Address {
-
private String city;
-
private String zipcode;
-
public String getCity() {
-
return city;
- }
-
public void setCity(String city) {
-
this.city = city;
- }
-
public String getZipcode() {
-
return zipcode;
- }
-
public void setZipcode(String zipcode) {
-
this.zipcode = zipcode;
- }
- }
Company
- package com.xy.report.pojo;
-
-
import java.util.HashSet;
-
import java.util.Set;
-
-
public class Company implements Comparable<Company>{
-
private String name;
-
private Address address;
-
private Set<Staff> staffs = new HashSet<Staff>();
-
-
@Override
-
public int compareTo(Company o) {
-
return o.getName().compareTo(this.getName());
- }
-
-
public String getName() {
-
return name;
- }
-
public void setName(String name) {
-
this.name = name;
- }
-
public Address getAddress() {
-
return address;
- }
-
public void setAddress(Address address) {
-
this.address = address;
- }
-
public Set<Staff> getStaffs() {
-
return staffs;
- }
-
public void setStaffs(Set<Staff> staffs) {
-
this.staffs = staffs;
- }
-
- }
Company中compareTo方法用于在报表中排序。
Staff
- package com.xy.report.pojo;
-
-
public class Staff {
-
private String name;
-
private Company company;
-
-
public String getName() {
-
return name;
- }
-
-
public void setName(String name) {
-
this.name = name;
- }
-
-
public Company getCompany() {
-
return company;
- }
-
-
public void setCompany(Company company) {
-
this.company = company;
- }
-
-
- }
以上Address是Company的组件,Company与Staff是一对多关系。
2. 新建Action
- package com.xy.report.action;
-
-
import java.util.ArrayList;
-
import java.util.HashMap;
-
import java.util.List;
-
import java.util.Map;
-
-
import com.opensymphony.xwork2.ActionSupport;
-
import com.xy.report.pojo.Address;
-
import com.xy.report.pojo.Company;
-
import com.xy.report.pojo.Staff;
-
-
public class DemoAction extends ActionSupport{
-
-
private static final long serialVersionUID = -5460323122712890562L;
-
-
private List<Staff> list;
-
private Map<String,Object> map;
-
-
@Override
-
public String execute(){
- list = getData();
- map = getParameter();
-
-
return SUCCESS;
- }
-
-
private List<Staff> getData(){
-
Address address = new Address();
-
address.setCity("上海");
-
address.setZipcode("201400");
-
-
Company company1 = new Company();
-
company1.setName("飞利浦");
- company1.setAddress(address);
-
Company company2 = new Company();
-
company2.setName("谷歌");
- company2.setAddress(address);
-
-
Staff staff1 = new Staff();
-
staff1.setName("张三");
- staff1.setCompany(company1);
-
Staff staff2 = new Staff();
-
staff2.setName("李四");
- staff2.setCompany(company2);
-
Staff staff3 = new Staff();
-
staff3.setName("王五");
- staff3.setCompany(company1);
-
-
List<Staff> list = new ArrayList<Staff>();
- list.add(staff1);
- list.add(staff2);
- list.add(staff3);
-
-
return list;
- }
-
-
private Map<String,Object> getParameter(){
-
Map<String,Object> map = new HashMap<String,Object>();
-
map.put("date", "2010-03-12");
-
return map;
- }
-
-
-
public List<Staff> getList() {
-
return list;
- }
-
public void setList(List<Staff> list) {
-
this.list = list;
- }
-
public Map<String, Object> getMap() {
-
return map;
- }
-
public void setMap(Map<String, Object> map) {
-
this.map = map;
- }
- }
以上list为提供给报表的数据源,map为提供给报表的参数,如日期范围等。struts.xml配置如下:
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE struts PUBLIC "
- -//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
-
"http://struts.apache.org/dtds/struts-2.0.dtd" >
-
<struts>
-
<include file="struts-default.xml"></include>
-
-
-
<package name="default" namespace="/reports" extends="struts-default,jasperreports-default">
-
<action name="demoReport" class="com.xy.report.action.DemoAction">
-
<result name="success" type="jasper">
-
<param name="location">/reports/demoReport.jasper</param>
-
<param name="dataSource">list</param>
-
<param name="format">PDF</param>
-
<param name="reportParameters">map</param>
-
</result>
-
</action>
-
</package>
-
</struts>
说明一下上面的几个参数
- location - 提供利用iReport制作编译好的报表文件。
- dataSource - 数据源
- format - 报表输出格式
- reportParameters - 报表参数
-
三、利用iReport开发报表
1. 新建数据源
打开iReport,点击下图像插头一样的Report Datasources,弹出对象框中New,选择"JavaBeans set datasource"后Next,输入Name为"demo"后Save,如下两图:
2. 增加类路径
点击“工具”“选项”,选择classpath标签页,点击Add Folder,将项目类路径加入,如下图路径为:C:\Users\linli\Documents\workspace\JSReportDemo \build\classes
3. 新建报表
点击 create a new report
"Open this Template"后,输入报表名这里是demoReport后下一步,继续完成。
4. 读取bean属性
点击Preview字样右边的按钮设置数据源,在弹出框中选择"JavaBean Datasource"标签页,在Class name中输入类名,点击"Read attributes"会列出类中所有属性。选中所需的属性,这里是company和name,点击对话框中间的"Add selected field(s)"增加到报表字段中。
报表将会按公司分组,所以需先按公司排序,当然这一步也可对struts2提供的数据源list进行处理,这里使用了报表的Sort功能,所以 Company类必须实现Comparable接口。点击"Sort options...",增加排序字段。
5. 增加分组
加击左侧Report Inspector中的demoReport,选择"Add Report Group",在弹出框中输入分组名,选择分组字段,如下图。下一步至完成。
6. 设计报表
将左侧Report Inspector中Fields下刚加入的字段托到报表设计器中,取公司名写成$F{company}.getName(),公司地址为$F{company}.getAddress().getCity(),员工姓名为$F{name}。公司名和公司地址放在Group Header里,员工姓名放在Detail 1里。
增加一个Parameters下的REPORT_PARAMETERS_MAP,他相当于一个map,取从struts2中设置的date值的方法为$P{REPORT_PARAMETERS_MAP}.get("date")。
组件面板中托"Page X of Y"显示页码。
这里有一些Title、Summary之类的,可能不需要,直接托到高度为0了想要就托不出来了。这时在左侧Report Inspector中选中想要的项目,在右侧"属性"中输入Bank height的值就行了。
设计完的报表如下图:
7. 编译报表
点击工具栏上Preview右边榔头一样的东西,将报表编译成.jasper文件。
8. 运行报表
将编译好的demoReport.jasper文件复制到项目WebContent\reports目录下,启动容器,浏览器下查看报表如下:
项目结构如下:
分享到:
相关推荐
Struts2.0+JasperReport+IReport+Oracle 报表开发 整个项目打包上传,用MyEclipse导入即可调试使用 含报表文件、数据库表结构及测试数据,项目中解决了PDF中文不显示问题
Struts2.0+JasperReport+IReport+Oracle 报表开发 整个项目打包上传,用MyEclipse导入即可调试使用 含报表文件、数据库表结构及测试数据,项目中解决了PDF中文不显示问题
Struts2.0+JasperReport+IReport+Oracle 报表开发整个项目打包上传,用MyEclipse导入即可调试使用含报表文件、数据库表结构及测试数据,项目中解决了PDF中文
本文主要针对使用Struts2框架结合JasperReport5.0与iReport5.0进行报表开发时可能遇到的问题进行总结。 1. **报表预览问题**: - 数据源为空:确保在iReport中设置正确的数据源,可以是JavaBean、数据库连接或其他...
使用ireport和struts2进行报表设计的简单示例,生成普通报表和饼图、柱状图。java工程的lib里包含丰富的jar包,且很多都是从各个网站下载的最新版本,文件夹内还包含一些ireport和jasperreport文档,适合刚入门学习...
Struts2、iReport与JasperReport是Java开发中用于构建高效、动态Web应用程序和报表生成的工具。在这个项目中,这些技术结合在一起,提供了一种强大的报表导出解决方案。以下是对这些关键技术及其在项目中的应用的...
Struts2.1和JasperReport的整合是Java Web开发中的一个重要话题,它涉及到Web应用程序的MVC(模型-视图-控制器)架构和数据报告的生成。Struts2.1是一个强大的MVC框架,而JasperReport则是一个用于创建复杂报表的...
看看代码你就知道报表开发有多简单。由于jar包太多,所以没有附带,你可以安装ireport3.0.0后,ireport安装目录下的lib文件下的jar包就是本实例的jar包,但是struts的包需要你自己加入。
在本文中,我们将深入探讨如何整合Struts2框架与JasperReport3来创建动态报表,并利用iReport工具进行报表设计。Struts2是一个流行的Java Web应用程序框架,它提供了MVC(模型-视图-控制器)架构,而JasperReport则...
**jasperReport与iReport简介** jasperReport是一款开源的Java报表工具,它允许开发者创建复杂的打印报告和交互式PDF、HTML、XLS...通过熟练掌握jasperReport和iReport,可以极大地提高开发效率,提升应用的用户体验。
在与JasperReport结合时,通常会创建一个Struts2 Action,这个Action负责接收前端请求,调用业务服务获取报表数据,然后将数据传递给JasperReport生成报表。 接下来是Spring2.5的使用。Spring作为一个全面的企业级...
在本主题中,我们将深入探讨如何使用JasperReport、iReport以及Struts2框架来构建一个强大的报表解决方案。 JasperReport是一个开源的Java报表库,它提供了丰富的报告设计功能,支持多种数据源,如数据库、CSV文件...
Struts2和iReport是两种在Java开发中广泛使用的开源技术。Struts2是一个基于MVC(Model-View-Controller)设计模式的Web应用框架,它极大地简化了Java Web应用程序的开发工作。而iReport则是一款强大的报表设计工具...
在这个场景下,`Maven`、`Struts2`、`JasperReport` 和 `iReport` 是四个关键的技术组件,它们共同作用于创建一个强大的、数据驱动的Web应用程序。下面将详细介绍这些技术及其整合过程。 首先,`Maven` 是一个项目...
在Web开发领域,IReport与Struts2的结合使用是一种常见的技术栈,尤其适用于构建数据可视化和报告生成的系统。IReport是一款强大的报表设计工具,它允许开发者通过拖拽方式创建复杂的报表,而Struts2则是一个流行的...
总的来说,Struts2与JasperReport的整合使得开发人员能够轻松地创建和展示动态的、格式化的报表,这对于业务分析、数据呈现和决策支持等场景非常有用。通过掌握这种整合方法,开发者可以提高工作效率,提升应用程序...
### 最新JasperReport 3.7 iReport的Java Web报表整合Struts2完整教程 #### 一、iReport操作 ##### 1. JasperReport与iReport简介 **1.1 JasperReport简介** JasperReport是一款强大的报表打印组件,它是开放源...
Struts和iReport是两种广泛应用于Java Web开发的技术。Struts是一种基于MVC(Model-View-...总的来说,Struts和iReport的结合使得开发者能够方便地在Web应用中实现强大的报表功能,提供丰富的数据展示和导出选项。
将Struts2与JasperReport结合,可以实现Web应用中的动态报表生成和展示。 首先,我们需要理解Struts2的核心概念。Struts2框架基于拦截器模型,通过Action类处理用户请求,Action与视图(JSP)之间的交互由结果类型...