`

Struts2.1.8+JasperReport3.7.2结合iReport3.7.2报表开发

阅读更多

一、准备
下载iReport3.7.1、JasperReport3.7.1、Struts2.1.8及其他需要的包
如需生成Excel的话,还需导入poi-3.5.jar包。

二、整合Struts2+JasperReport3
1. 新建以下三个pojo类:
Address

<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> -->packagecom.xy.report.pojo;

publicclassAddress{
privateStringcity;
privateStringzipcode;
publicStringgetCity(){
returncity;
}
publicvoidsetCity(Stringcity){
this.city=city;
}
publicStringgetZipcode(){
returnzipcode;
}
publicvoidsetZipcode(Stringzipcode){
this.zipcode=zipcode;
}
}

Company

<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> -->packagecom.xy.report.pojo;

importjava.util.HashSet;
importjava.util.Set;

publicclassCompanyimplementsComparable<Company>{
privateStringname;
privateAddressaddress;
privateSet<Staff>staffs=newHashSet<Staff>();

@Override
publicintcompareTo(Companyo){
returno.getName().compareTo(this.getName());
}

publicStringgetName(){
returnname;
}
publicvoidsetName(Stringname){
this.name=name;
}
publicAddressgetAddress(){
returnaddress;
}
publicvoidsetAddress(Addressaddress){
this.address=address;
}
publicSet<Staff>getStaffs(){
returnstaffs;
}
publicvoidsetStaffs(Set<Staff>staffs){
this.staffs=staffs;
}

}

Company中compareTo方法用于在报表中排序。
Staff

<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> -->packagecom.xy.report.pojo;

publicclassStaff{
privateStringname;
privateCompanycompany;

publicStringgetName(){
returnname;
}

publicvoidsetName(Stringname){
this.name=name;
}

publicCompanygetCompany(){
returncompany;
}

publicvoidsetCompany(Companycompany){
this.company=company;
}


}

以上Address是Company的组件,Company与Staff是一对多关系。
2. 新建Action

<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> -->packagecom.xy.report.action;

importjava.util.ArrayList;
importjava.util.HashMap;
importjava.util.List;
importjava.util.Map;

importcom.opensymphony.xwork2.ActionSupport;
importcom.xy.report.pojo.Address;
importcom.xy.report.pojo.Company;
importcom.xy.report.pojo.Staff;

publicclassDemoActionextendsActionSupport{

privatestaticfinallongserialVersionUID=-5460323122712890562L;

privateList<Staff>list;
privateMap<String,Object>map;

@Override
publicStringexecute(){
list
=getData();
map
=getParameter();

returnSUCCESS;
}

privateList<Staff>getData(){
Addressaddress
=newAddress();
address.setCity(
"上海");
address.setZipcode(
"201400");

Companycompany1
=newCompany();
company1.setName(
"飞利浦");
company1.setAddress(address);
Companycompany2
=newCompany();
company2.setName(
"谷歌");
company2.setAddress(address);

Staffstaff1
=newStaff();
staff1.setName(
"张三");
staff1.setCompany(company1);
Staffstaff2
=newStaff();
staff2.setName(
"李四");
staff2.setCompany(company2);
Staffstaff3
=newStaff();
staff3.setName(
"王五");
staff3.setCompany(company1);

List
<Staff>list=newArrayList<Staff>();
list.add(staff1);
list.add(staff2);
list.add(staff3);

returnlist;
}

privateMap<String,Object>getParameter(){
Map
<String,Object>map=newHashMap<String,Object>();
map.put(
"date","2010-03-12");
returnmap;
}

//getter,setter
publicList<Staff>getList(){
returnlist;
}
publicvoidsetList(List<Staff>list){
this.list=list;
}
publicMap<String,Object>getMap(){
returnmap;
}
publicvoidsetMap(Map<String,Object>map){
this.map=map;
}
}

以上list为提供给报表的数据源,map为提供给报表的参数,如日期范围等。struts.xml配置如下:

<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --><?xmlversion="1.0"encoding="UTF-8"?>
<!DOCTYPEstrutsPUBLIC"-//ApacheSoftwareFoundation//DTDStrutsConfiguration2.0//EN""http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<includefile="struts-default.xml"></include>

<!--报表演示-->
<packagename="default"namespace="/reports"extends="struts-default,jasperreports-default">
<actionname="demoReport"class="com.xy.report.action.DemoAction">
<resultname="success"type="jasper">
<paramname="location">/reports/demoReport.jasper</param>
<paramname="dataSource">list</param>
<paramname="format">PDF</param>
<paramname="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,如下两图:

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics