工作中非常需要根据客户录入的数据在页面上生成一些报表,苦于那个AnyChart是收费的,不敢用,所以就找了个免费的基于Java的第三方报表组件:
JavaReport是一款国产的第三方组件,它可以用来开发Web报表,也能用来制作Web图形。它在报表展现方面表现优异,能实现Word, Excel, PDF, CSV等格式的精确导出。
首先,你需要下载JavaReport-V3-Enterprise-Released.jar这个包,
将这个jar包引入项目文件,如下图:
接下来以一个简单的JSP页面举例:
webChart.jsp:
<%@ page language="java" contentType="text/html; charset=GBK"%>
<%@ page import="com.javareport.beans.*"%>
<%@ page extends="com.javareport.http.WebReportEngine"%>
<%!
public Report createReport(HttpServletRequest request) throws Exception{
//图片类型数组
int[] chartType = new int[]{
Chart.CHART_PIE3D,Chart.CHART_STACKBAR3D,
Chart.CHART_CURVE,Chart.CHART_LINE,
Chart.CHART_POINT,Chart.CHART_INVERTED_CURVE,
Chart.CHART_INVERTED_LINE,Chart.CHART_INVERTED_STACKBAR
};
//单元数据的显示标签字符数组
String[] labels = new String[]{"长沙", "衡阳", "怀化", "岳阳"};
//实例化报表对象
Report report = new Report();
//在页眉中添加文本信息内容
report.addHeaderText("湖南省2011年继续教育报名人数统计图");
//在报表表的页眉添加一条横线
report.addHeaderSeparator(1);
//在页尾添加一条直线
report.addFooterSeparator(1);
//在页尾添加文本信息内容
report.addFooterText("第{P}页, 共{N}页");
//循环输出各种类型的图片
for(int i=0;i<chartType.length;i++){
try{
//实例化一个图表对象
Chart chart = new Chart((Number[][])getData(request));
//设置图表中的单元数据的显示的标签
chart.setLabels(labels);
//设置统计图的类型
chart.setStyle(chartType[i]);
//设置统计图中显示的时候把具体的数值也显示出来
chart.setShowValue(true);
//在报表中添加文本信息内容
report.addText("报表中常见的报表统计图表("+i+"): ");
//在报表中添加图表信息内容
report.addChart(chart);
//在报表中添加换行符号
report.addBreak();
report.addBreak();
report.addBreak();
}
catch(Exception e){
e.printStackTrace();
}
}
return report;
}
//读者可根据需要设置数组的值,或从数据库中取出值放入数组中以动态显示数据
public Double[][] getData(HttpServletRequest request){
Double[][] data = new Double[1][4];
data[0][0] = new Double(50);
data[0][1] = new Double(50);
data[0][2] = new Double(35);
data[0][3] = new Double(55);
return data;
}
//定制Web报表在页面首部显示的工具栏为标准的样式,增加一个“返回”按钮,返回到首页
public String getToolbarScript(HttpServletRequest request){
return "<a href=\"webChart.jsp\"><img src=\""+request.getRequestURI()+
"?op=Resource&name=/resource/back.gif\" border=\"0\" alt=\"返回\"></a>";
}
%>
运行结果如下:
在顶部的工具栏中,可以将报表导出为Word、Excel、PDF等多种格式。
小提示:
我第一次在Tomcat 6.0中发布这个页面的时候报错了,内容为:
com.javareport.http.WebReportEngine cannot be resolved to a type
但其实这个包早就已经引入了,不知为何还是报错。后来把这个组件从项目中删了,重新引入一次,重新发布页面,然后就能正常运行了,,,估计又是Eclipse抽了。