为了让数据显示的更加形象生动,报表在项目中差点儿是很常见的,可是大致能够分为两类:
一,图形:以图形的形式显示数据,比如柱状图,折线图,饼形图等等,这里有许多关于这方面的工具,比如JFreeCharts(利用Java语言实现的,相对来说不是太美观),FunsionChartsFree(利用xml+flash+Js实现。相对来说不错),能够參考我曾经的文章:图形生成工具(funsionChartsFree and ifreeChart) ;其次还有HighCharts(http://www.hcharts.cn/demo/index.php)和Echarts(官网:http://echarts.baidu.com/doc/example.html),两者都是通过JS来实现的。是比較推荐使用的。官网的资料很丰富的。
二。就是表格,一种是能够将数据导出为Excel表格。我们能够通过POI(功能更加强大丰富,可是复杂)和JXL(简单易用,可是复杂的功能有些实现不了);二。一些统计表格。用于统计重要信息进行打印的。
Java中一般经常使用的JasperReport+iReport,这个网上资料比較多,我们项目使用了Grid++Report,这个报表设计器。支持C/S开发:VB.NET、C#、VB、VC、Delphi等,B/S开发:ASP.NET、ASP、PHP、JSP等,支持全部WEBserver。曾经在C/S的VB开发中使用过(报表从陌生到使用 ),这次在Java web中使用了,主要是通过參考用户手冊,和官方的demo进行设计的。
用报表设计器设计报表这里不再赘述。无在乎页眉页脚。报表头报表尾,明细网格还有各种部件的使用而已。
下边简单看一个报表样例。
1,首先须要将设计好的grf的报表放到项目的某个路径下,在jsp页面中进行引用:
<script type="text/javascript"> // var Installed = Install_Detect(); CreateDisplayViewerEx("100%", "80%", "${contextPath}/assets/gridReport/grf/selfGetNumber.grf", "", true, ""); </script
这段代码须要body里边。grid++report的默认容器是在body中。
2。利用AJAX进行数据的訪问:
<script type="text/javascript"> function getGridData() { AjaxReportViewerStart(ReportViewer, "${contextPath}/log/logregistration/gridData?startTime=‘2014-10-12‘&endTime=‘2014-10-09‘"); } </script>
3。AJAX数据的传输格式规定:
<report> <xml> <row><CustomerID>BLONP</CustomerID><CompanyName>国皓</CompanyName><ContactName>黄雅玲</ContactName></row> <row><CustomerID>CACTU</CustomerID><CompanyName>威航货运有限公司</CompanyName><ContactName>刘先生</ContactName></row> <row><CustomerID>CENTC</CustomerID><CompanyName>三捷实业</CompanyName><ContactName>王先生</ContactName></row> <row><CustomerID>HUNGC</CustomerID><CompanyName>五金机械</CompanyName><ContactName>苏先生</ContactName></row> <row><CustomerID>MEREP</CustomerID><CompanyName>华科</CompanyName><ContactName>吴小姐</ContactName></row> </xml> <_grparam> <Parameter1>Value1</Parameter1> <Parameter2>Value2</Parameter2> <StaticBox1>Text1</StaticBox1> <MemoBox1>Text2</MemoBox1> </_grparam> </report>
当中row为明细表格中字段。_grparam为參数。
这里须要注意的是字段名字的相应。仅仅要我们在后台用PrintWriter进行write我们拼接好的xml字符串就可以。
当然我这里仅仅是一个简单的样例。事实上报表开发都几乎相同。须要我们多看看文档。看看官方的样例就好多了。