由于项目中要做报表,最近研究了一下iReport+JasperReport。JasperReports是一个开源的java报表制作引擎;iReport是JasperReports的一个GUI工具,用来生成JasperReports的jrxml文件。
1.搭建环境
框架SSH。假设环境已搭好。
2.jsp页面
<%@ page language="java" pageEncoding="GB2312"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Struts2+ JasperReports 使用示例</title>
</head>
<body>
<a href="HTML.action">HTML</a>
<br>
<a href="PDF.action">PDF</a>
<br>
<a href="XML.action">XML</a>
<br>
<a href="CSV.action">CSV</a>
<br>
<a href="XLS.action">XLS</a>
</body>
</html>
3.action
public class JasperAction extends ActionSupport {
private static final long serialVersionUID = 1L;
private List<Student> myList;
private Map<String,String> params ;
public String execute() throws Exception {
params = new HashMap<String, String>();
params.put("infoNo", "100005");
params.put("company", "深圳市***科技有限公司");
myList =new ArrayList<Student>();
myList.add(new Student(1, "张三","101"));
myList.add(new Student(2, "李四","102"));
myList.add(new Student(3, "王五","103"));
myList.add(new Student(4, "顺溜","104"));
myList.add(new Student(5, "二丫","105"));
myList.add(new Student(6, "哈哈","107"));
myList.add(new Student(7, "A001","108"));
myList.add(new Student(8, "A002","109"));
return SUCCESS;
}
public List<Student> getMyList() {
return myList;
}
public Map<String, String> getParams() {
return params;
}
public void setParams(Map<String, String> params) {
this.params = params;
}
}
4.struts.xml
<package name="default"
extends="struts-default,jasperreports-default">
<action name="PDF" class="com.sterning.JasperAction">
<result name="success" type="jasper">
<param name="location">
/jasper/report2.jasper
</param>
<param name="dataSource">myList</param>
<param name="format">PDF</param>
<param name="documentName">studentTable</param>
<param name="reportParameters">params</param>
</result>
</action>
<action name="PDF2" class="com.sterning.JasperAction">
<result name="success" type="jasper">
<param name="location">
/jasper/report2.jasper
</param>
<param name="dataSource">myList</param>
<param name="format">PDF</param>
<param name="documentName">学生信息报表</param>
<param name="reportParameters">params</param>
</result>
</action>
<action name="HTML" class="com.sterning.JasperAction">
<result name="success" type="jasper">
<param name="location">
/jasper/report2.jasper
</param>
<param name="dataSource">myList</param>
<param name="format">HTML</param>
<param name="documentName">学生信息报表</param>
<param name="reportParameters">params</param>
</result>
</action>
<action name="XML" class="com.sterning.JasperAction">
<result name="success" type="jasper">
<param name="location">
/jasper/report2.jasper
</param>
<param name="dataSource">myList</param>
<param name="format">XML</param>
<param name="documentName">学生信息报表</param>
<param name="reportParameters">params</param>
</result>
</action>
<action name="CSV" class="com.sterning.JasperAction">
<result name="success" type="jasper">
<param name="location">
/jasper/report2.jasper
</param>
<param name="dataSource">myList</param>
<param name="format">CSV</param>
<param name="documentName">学生信息报表</param>
<param name="reportParameters">params</param>
</result>
</action>
<action name="XLS" class="com.sterning.JasperAction">
<result name="success" type="jasper">
<param name="location">
/jasper/report2.jasper
</param>
<param name="dataSource">myList</param>
<param name="format">XLS</param>
<param name="documentName">学生信息报表</param>
<param name="reportParameters">params</param>
</result>
</action>
</package>
5.添加需要的jar包
6.创建报表文件
说明:如果有显示中文的地方,需对属性进行相应设置:font name:宋体;Pdf Font Name is Now …:STSong-Light;Pdf Embedded:选中;Pdf Encoding:UniGB-UCS2-H(Chinese Simplified);怎样插入二维码,请参考(http://hi.baidu.com/simple_vei/item/002543073fa5b9056d904863);
对于"Parameters",例如:company,当添加到图中,右键--Edit expression打开对话框,表达式修改成“$P{REPORT_PARAMETERS_MAP}.get("company")”;
7.主体工作完成。
8.最终效果