在前一节中,使用word工具来辅助制作和打印报表,可发现代码冗长,不方便程序员阅读,而且修改比较麻烦,需要在word中重新制作再生成报表模板,jsp中的程序代码又必须重新找到合适的位置以放入其中。为简化这个开发过程,并拓展功能,出现了一些第三方的专门用于Web报表开发组件,如jasperreport,它把报表的模板生成作为一个XML文件保存,根据这个模板再用少量的Java代码即可生成复杂的报表,并可导出成PDF、HTML等格式,然而它是国外的第三方组件,对中文支持不够,且其开发手册需要付费。
为此,本书介绍一款国产的第三方组件——JavaReport,它由伟才工作室开发,这个组件简单易用,只须编写少量的代码即可开发出复杂的报表和图形,中文支持较好,较为实用。
JavaReport可从网上免费下载得到,网址如下:https://www.sodocs.net/doc/2814888723.html,/download.htm
一、JavaReport介绍
JavaReport主要有如下优点。
(1)支持实时的、动态的Web统计报表
JavaReport所展示的报表是动态的报表。所有的数据都是实时的数据;所有的统计图也是动态生成的。报表里面的数据源可从数据库中即时查询产生,适合于对实时统计要求高的应用系统。
(2)接口丰富,对图表提供良好的支持
JavaReport提供了丰富的应用程序接口、减少代码复用、灵活的图表形式、即时图表生成、更短的生成时间等。Java报表对图表有良好的支持,可以生成柱图、饼图和折线图等十几种图表。
(3)报表可导出成各种格式的文档
JavaReport在报表展现方面表现优异,能实现Word,Excel,PDF,CSV等格式精确导出等功能,并提供了全部的页面与打印控制。
(4)开发简便,程序员只须编写少量程序代码
有许多的问题在JavaReport组件内已经解决,如报表的导出功能、打印功能和数据的分页处理等。在很多B/S结构体系的系统开发时,分页是开发过程中要重点考虑的问题。但在JavaReport中,就不需要考虑上下翻页,跨页分页,因为这些问题报表引擎已经实现了。在设计报表的过程中,把Report类当作容器类,统计图类,表格类,标签类,图片类等,把它们当作组件类。至于跨页分页,上下翻页由报表引擎自动完成。JavaReport系统中有自动跨页分页的功能,当表格超过当前页的大小时,系统会自动把接着部分放到下一页。报表设计在开发过程中是感觉不到要跨页的存在,只有一个全部数据完整的表格对象。
如果把引入图片文件加入到报表中,可使用报表系统的Report类,通过这个类的addImage()方法把Image对象加进来,如果需要自定义图像,可通过第三方画图程序(例如是JFreeChart程序)生产需要的统计图/图片,然后再把图像加到报表中去。
本书中使用的JavaReport版本是V3.0,JavaReport根据客户的应用需要,按照功能和性能的等级,分成三个版本:专业版,服务器版,企业版。本书使用企业版。
JavaReport三个版本产品都是免费使用的。也就是说这三个版本都不需要购买License许可,可以自由使用JavaReport的所有功能。免费提供报表在Web展示功能,表和图怎样混合功能,跨页分页功能,导出电子文档Word,PDF,Excel,CSV,HTML等诸多功能。
专业版客户(Client)的IP最大连接数限制为10个,也就是JavaReport同时并行处理线程的最大数受限制。限制是为了避免系统资源占用过大,使系统反应迟钝。该版本适合中小型的应用系统,保障应用系统正常运行。
服务器版在最大连接数没有受限,它能充分发挥服务器的个部分硬件设备的作用;相对要求服务器的设备配置高,保障最优性能效率。该版本适合大中型的应用系统使用。
企业版提供垃圾回收机制管理,自动处理在内存中无用对象的引用;支持多服务器处理
模式,提供在多个服务器的集群功能和服务器之间负载均衡功能。提高服务器群的负载能力和和快速响应能力。该版本适合负载繁重的应用系统使用。
二、安装JavaReport
找到JavaReport-V3-Enterprise-Released.jar这个Jar文件,把这个文件的路径加入到classpath系统变量中,或拷贝到当前Web应用的WEB-INF\lib目录下,或拷贝到Tomcat5的安装目录的common\lib目录中;第一种方法和第三种方法对所有Web应用有效,而第二种方法仅对当前Web应用有效。
好了,至此,JavaReport就算安装完毕了。接下来,继续介绍JavaReport。
三、相关类介绍
下面给出Web报表显示时的情况,如图17-11所示。
在这个图中,对报表的显示情况一目了然,再介绍常用的类理解起来就会比较清晰了。
基于JavaReport的Web报表开发2【转】
2010-06-12 16:34
Java Report的组件包中有许多的类,体系庞大而复杂,在这里无法一一介绍,仅列出一些常用的类来作出说明,有兴趣的可参考详细的API手册。
(1)Web ReportEngine类
即com.javareport.http.WebReportEngine,这个类是整个JavaReport中的Web引擎的开发接口。所有的JSP或Servlet从这个类继承下来,覆盖createReport()函数就实现基本的报表开发工作。
WebReportEngine是JavaReport的Servlet或JSP的开发接口,是JSP或Servlet的父类,报表系统在应用中的程序从此处继承下来,可以根据需要调整接口内容。部分函数可以适当删除。在开发中一般是实现createReport()函数就可以,形成实时动态报表就是在这个函数里实现的。剩下的工作(怎样在Web上显示,怎样形成Work,PDF文件,等)交给报表引擎自动实现。
如果是在JSP中,在页头部分应加入如下语句:
<%@ page extends="com.javareport.http.WebReportEngine"%>
如果是Servlet,相应的Servlet类声明时语句如下:
public class Servlet类名称extends WebReportEngine{
……
}
? createReport()
方法原型如下:
public Report createReport(javax.servlet.http.HttpServletRequest request)
throws https://www.sodocs.net/doc/2814888723.html,ng.Exception
此方法用于建立报表,并返回报表的实例。这个报表实例可以在Web上显示,同时也可以导出Word, Excel, PDF, CSV, HTML等格式的文档以供使用。
参数request可用于获取所有的动态请求的数据。
? validate()
此方法用于对上一个页面Form提交的参数进行检查,由于实时报表需要动态的参数,在这里进行数据校验。方法原型如下:
public https://www.sodocs.net/doc/2814888723.html,ng.String validate(javax.servlet.http.HttpServletRequest request)
其中,参数request可用于获取所有的动态请求的数据;方法的返回值为null时代表通过,其他内容则为参数错误的提示信息。
? getStartScript()
方法用于构造报表内容在Web页面上显示之前执行的JavaScript或VBScript脚本,如果要定制则要重载这个方法。方法原型如下:
public https://www.sodocs.net/doc/2814888723.html,ng.String getStartScript(javax.servlet.http.HttpServletRequest request)
其中,参数request可用于获取所有的动态请求的数据;方法返回值为null时代表没有脚本内容。
? getEndScript()
方法用于构造报表内容在Web页面上显示之后执行的JavaScript或VBScript脚本,如果要定制则要重载这个方法。方法原型如下:
public https://www.sodocs.net/doc/2814888723.html,ng.String getEndScript(javax.servlet.http.HttpServletRequest request)
其中,参数request可用于获取所有的动态请求的数据;方法返回值为null时代表没有脚本内容。
? getToolbarScript()
方法用于定制Web报表在页面首部显示的工具栏为标准的样式(上下翻页,导出文件),可以在此扩展工具栏的内容,如:添加公司主页的链接,返回上一层链接的“返回”按钮,如果要定制则要重载这个方法。方法原型如下:
public https://www.sodocs.net/doc/2814888723.html,ng.String getToolbarScript(javax.servlet.http.HttpServletRequest request) 其中,参数request可用于获取所有的动态请求的数据;方法返回值为null时代表不添加内容。
? isShowToolbar()
如果不想在页面上显示报表工具栏,可重载这个方法,并设定返回值为false。需要注意的是,如果是多页报表,上下翻页按钮就无法使用。方法原型如下:
public boolean isShowToolbar()
方法的返回值是是否显示工具栏的布尔值标志。
? getAllEchoButton()
方法用于自定义显示在Web页面中的报表导出文件的按钮,比如应用中只导出PDF文件,其他的不需要,就可以这里设定。按钮值从Word按钮开始是(1,2,4,8,...),需要显示的按钮则将它们的值相加就可以了。默认情况下工具栏上的按钮如图17-12所示:
图17-12 默认情况下工具栏上的按钮
方法原型如下:
public int getAllEchoButton()
方法的返回值是显示按钮对应的和值。要作自定义,需要重载这个方法,并将返回值设为要显示的按钮对应的和值。
基于JavaReport的Web报表开发3【转】
2010-06-12 16:35
(2)Report类
即com.javareport.beans.Report,报表类。这个类的对象用于代表一张报表,是所有报表元素的容器,这是整个系统的核心,也是在浏览器上显示和生成电子文档(Word,Excel,PDF,Html等)的基础。
? addHeaderSeparator()
方法用于在报表的页眉添加一条横直线。方法原型如下:
public https://www.sodocs.net/doc/2814888723.html,ng.String addHeaderSeparator(int num)
其中,参数num表示横直线的粗细程度,以自然数表示,数字越大表示线越粗。
? addHeaderSpace()
此方法用于在页眉中添加若干个空格。方法原型如下:
public https://www.sodocs.net/doc/2814888723.html,ng.String addHeaderSpace(int num)
其中,参数num是要添加的空格的个数。
? addHeaderTab()
方法用于在页眉中添加若干个【Tab】键,【Tab】键跟空格键一样是不可见的,默认每个【Tab】为8个空格。方法原型如下:
public https://www.sodocs.net/doc/2814888723.html,ng.String addHeaderTab(int num)
其中,参数num是要添加的【Tab】键的个数。
? addHeaderBreak()
在页眉中添加一个换行符号,紧跟后面的内容则从下行第一个字符的位置开始。方法原型如下:
public https://www.sodocs.net/doc/2814888723.html,ng.String addHeaderBreak()
? addHeaderText()
在页眉中添加文本信息内容,紧跟后面的内容则从下行第一个字符的位置开始。方法原型如下:
public https://www.sodocs.net/doc/2814888723.html,ng.String addHeaderText(https://www.sodocs.net/doc/2814888723.html,ng.String text)
其中,参数text是要添加的文本信息内容。其中,{P}代表当前页,{N}代表总页数,如:“第{P}页,共{N}页”。
? addChart()
在报表中添加图表信息内容。方法原型如下:
public https://www.sodocs.net/doc/2814888723.html,ng.String addChart(ChartImpl chart)
其中,参数chart是要添加的图表,图表类ChartImpl是Java Report的核心模块,各种各样统计图由图表类生成。
? setCurrentFont()
设置报表当前的字体。原型如下:
public void setCurrentFont(java.awt.Font font)
其中,参数是要设置的字体对象,为Java中java.awt.*包中的Font对象。
? setCurrentBackground()
设置报表当前的背景颜色。原型如下:
public void setCurrentBackground(java.awt.Color color)
其中,参数color是要添加的图形对象,为Java中java.awt.*包中的color对象。
? setCurrentForeground()
设置报表当前的前景颜色。原型如下:
public void setCurrentForeground(java.awt.Color color)
其中,参数color是要添加的图形对象,为Java中java.awt.*包中的color对象。
? addImage()
在报表中添加图片信息内容。原型如下:
public https://www.sodocs.net/doc/2814888723.html,ng.String addImage(java.awt.Image image)
其中,参数image是要添加的图形对象,为Java中java.awt.*包中的Image对象。
? addBullet()
这个方法有两种形式:
public https://www.sodocs.net/doc/2814888723.html,ng.String addBullet() 或
public https://www.sodocs.net/doc/2814888723.html,ng.String addBullet(java.awt.Image image)
该方法用于添加项目符号的表示符号。第一种形式添加默认的项目符号(圆点)的表示符号,第二种形式用自定义的图片内容代替默认的圆点内容。参数image是要添加的图形对象,为Java中java.awt.*包中的Image对象。
? addNewline()
方法用于在报表中添加一个换行符号,紧跟后面的内容则从下行第一个字符的位置开始。方法原型如下:
public https://www.sodocs.net/doc/2814888723.html,ng.String addNewline(int num)
其中,参数num代表换行的数量,即多次换行。
? addPageBreak()
方法用于在报表中添加换页的标识符号,当报表系统做分页显示时,遇到这个符号时,则紧跟后面的内容在新的一页开始显示。方法原型如下:
public https://www.sodocs.net/doc/2814888723.html,ng.String addPageBreak()
? addSeparator()
在报表中添加一条横直线。方法原型如下:
public https://www.sodocs.net/doc/2814888723.html,ng.String addSeparator(int num)
其中,参数num表示横直线的粗细程度,以自然数表示,数字越大表示线越粗。
? addSpace()
添加若干个空格。方法原型如下:
public https://www.sodocs.net/doc/2814888723.html,ng.String addSpace(int num)
其中,参数num代表空格的个数。
? addTab()
基于JavaReport的Web报表开发4【转】
2010-06-12 16:36
在报表中添加若干个【Tab】键,【Tab】键跟空格键一样是不可见的,默认每个【Tab】键为8个空格。方法原型如下:
public https://www.sodocs.net/doc/2814888723.html,ng.String addTab(int num)
其中,参数num是要添加的【Tab】键的个数。
? addText()
在报表中添加文本信息内容,紧跟后面的内容则从下行第一个字符的位置开始。方法原型如下:
public https://www.sodocs.net/doc/2814888723.html,ng.String addText(https://www.sodocs.net/doc/2814888723.html,ng.String text)
其中,参数text为要添加的文本信息内容。
? addTable()
添加报表中的表格信息内容。方法原型如下:
public https://www.sodocs.net/doc/2814888723.html,ng.String addTable(Table table)
其中,参数table是要添加的表格,有关Table类的内容详见本节中(3)中的内容。
? addFooterSeparator()
在页尾添加一条横直线。方法的原型如下:
public https://www.sodocs.net/doc/2814888723.html,ng.String addFooterSeparator(int num)
其中,参数num为横直线的粗细程度,以自然数表示,数字越大表示线越粗。
? addFooterSpace()
在页尾添加若干个空格。方法的原型如下:
public https://www.sodocs.net/doc/2814888723.html,ng.String addFooterSpace(int num)
其中,参数num代表要添加的空格的个数。
? addFooterTab()
在页尾添加若干个【Tab】键,【Tab】键跟空格键一样是不可见的,默认每个【Tab】键为8个空格。方法的原型如下:
public https://www.sodocs.net/doc/2814888723.html,ng.String addFooterTab(int num)
其中,参数num为要添加的【Tab】键的个数。
? addFooterTab()
在页尾添加一个换行符号,紧跟后面的内容则从下行第一个字符的位置开始。
public https://www.sodocs.net/doc/2814888723.html,ng.String addFooterBreak()
? addFooterText()
在页尾添加文本信息内容,紧跟后面的内容则从下行第一个字符的位置开始。方法的原型如下:
public https://www.sodocs.net/doc/2814888723.html,ng.String addFooterText(https://www.sodocs.net/doc/2814888723.html,ng.String text)
其中,参数text是要添加的文本信息内容。其中,{P}代表当前页,{N}代表总页数,如:“第{P}页,共{N}页”。
(3)Table类
即com.javareport.beans.Table,表格类。这个类的对象属于报表对象Report中的元素。表格在报表中是不可缺少的,整齐排列着数据内容。表格单元里面的内容可以是文本内容,也可以是图形和其他元素,同时这个对象也是表套表的基础。Java Report会自动处理表格的跨页、分页问题和新页中的表头显示问题,开发过程中把它想象成连续的就可以了。
? Table()
Table类的构造函数,用于实例化一个表格对象,方法的原型如下:
public Table(https://www.sodocs.net/doc/2814888723.html,ng.Object[][] data)
其中,参数data为填充表格内容的二维数组。
? setRowAlignment()
设置指定行的对齐方式。方法的原型如下:
public void setRowAlignment(int row,int align)
其中,参数row为要设置对齐方式的行的编号;参数align为要对齐的方式(左,中,右;上,中,下;同时设置左右上下,将两个值相加就可以了)。
? setRowBackground()
设置指定行的背景颜色,形式如下:
public void setRowBackground(int row,java.awt.Color color)
其中,参数row为要设置背景颜色的行的编号;参数color为要设置的颜色对象,为Java 中java.awt.*包中的Color对象。
? setRowBorder()
设置表格中所有行的边界外观样式。方法的原型如下:
public void setRowBorder(int style)
其中,参数style为边界外观样式,即表格单元之间的边界线的粗细情况,该值为整数,值越大代表线越粗,0代表不显示。
? setRowBorderColor()
设置表格中指定行的边界的颜色,方法的原型如下:
public void setRowBorderColor(int row,java.awt.Color color)
其中,参数row为要设置边界颜色的行的编号;参数color是要设置的颜色对象,为Java 中java.awt.*包中的Color对象。
? setRowFont()
设置表格中指定行内容的字体。方法的原型如下:
public void setRowFont(int row,java.awt.Font font)
其中,参数row为要设置字体的指定行;参数font是要设置的字体对象,为Java中java.awt.*包中的Font对象。
? setRowForeground()
设置表格中指定行的前景颜色,方法的原型如下:
public void setRowForeground(int row,java.awt.Color color)
其中,参数row是要设置前景颜色的行的编号;参数color是要设置的颜色对象,为Java 中java.awt.*包中的Color对象。
? setRowHeight()
设置表格中指定行的高度。方法的原型如下:
public void setRowHeight(int row,int height)
其中,参数row是要设置高度的行的编号;参数height是要设置的行的高度。
? setColAlignment()
基于JavaReport的Web报表开发5【转】
2010-06-12 16:37
设置表格中指定列的对齐方式,方法的原型如下:
public void setColAlignment(int col,int align)
其中,参数col是指定对齐方式的列;参数align指出对齐的方式,依次为横向左,中,右;竖向上,中,下(如果要同时设置左右上下,可将两个值相加就可以了),值可以用数字表示,也可以用Table类的常量来表示(实质上Table类实现了com.javareport.ReportConstants 接口,所有常量在ReportConstants接口中作了定义),其常量与值的对应情况如下:Table.H_LEFT:横向左对齐,值为1;
Table.H_CENTER:横向居中对齐,值为2;
Table.H_RIGHT:横向右对齐,值为4;
Table.V_TOP:竖向上对齐,值为8;
Table.V_CENTER:竖向居中对齐,值为16;
Table.V_BOTTOM:竖向下对齐,值为32。
? setColBackground()
设置表格中指定列的背景颜色。方法的原型如下:
public void setColBackground(int index,java.awt.Color color)
其中,参数index是指定的列;参数color是要设置的颜色对象,为Java中java.awt.*包中的Color对象。
? setColBorder()
设置表格的所有列的边界外观样式,方法的原型如下:
public void setColBorder(int style)
其中,参数style指定边界外观样式,即表格单元之间边界线的粗细情况,该值为整数,值越大代表线越粗,0代表不显示。
? setColBorder()
设置表格中指定列的边界外观样式。方法的原型如下:
public void setColBorder(int index,int style)
其中,参数int为指定的列;参数style指定边界外观样式,即表格单元之间边界线的粗细情况,该值为整数,值越大代表线越粗,0代表不显示。
? setColBorderColor()
设置表格中指定列的边界的颜色,方法的原型如下:
public void setColBorderColor(int index,java.awt.Color color)
其中,参数index为指定的列;参数color是要设置的颜色对象,为Java中java.awt.*包中的Color对象。
? setColFont()
设置表格中指定列内容的字体。方法的原型如下:
public void setColFont(int index,java.awt.Font font)
其中,参数index为指定的列;参数font是要设置的字体对象,为Java中java.awt.*包中的Font对象。
? setColForeground()
设置表格中指定列的前景颜色,方法的原型如下:
public void setColForeground(int index,java.awt.Color color)
其中,参数index为指定的列;参数color是要设置的颜色对象,为Java中java.awt.*包中的Color对象。
? setColWidth()
设置表格中指定列的宽度。方法的原型如下:
public void setColWidth(int index,int width)
其中,参数index是要设置高度的列的编号;参数width为要设置的列的宽度。
? setData()
给表格填充数据。表格单元的数据可以是数据,也可以是其他元素。方法的原型如下:public void setData(https://www.sodocs.net/doc/2814888723.html,ng.Object[][] data)
其中,参数data是填充表格内容的二维数据。
? setAlignment()
设置表格中所有单元的对齐方式。方法的原型如下:
public void setAlignment(int align)
其中,参数align是要对齐的方式,具体如何取值请参见setColAlignment()方法。
? setColAutoSize()
设置表格中所有列是否自动调整宽度。方法的原型如下:
public void setColAutoSize(boolean flag)
其中,参数flag是布尔型的标志值。
? setRowAutoSize()
设置表格中所有行是否自动调整宽度。方法的原型如下:
public void setRowAutoSize(boolean flag)
其中,参数flag是布尔型的标志值。
? setFont()
设置所有表格单元的字体。方法的原型如下:
public void setFont(java.awt.Font font)
其中,参数font是要设置的字体对象,为Java中java.awt.*包中的Font对象。
? setHeaderColCount()
设置表格列表头的数目。方法的原型如下:
public void setHeaderColCount(int count)
其中,参数count为列表头的数目。
? setHeaderRowCount()
设置表格行表头的数目。方法的原型如下:
public void setHeaderRowCount(int count)
其中,参数count为行表头的数目。
? setRowHeight()
设置行的默认高度。方法的原型如下:
public void setRowHeight(int height)
其中,参数height为默认的高度值。
? setCellSpan()
合并表格单元,即把连续的多个表格单元和并成为一个表格。方法的原型如下:
public void setCellSpan(int x,int y,java.awt.Dimension dimension)
其中,参数x为合并表格左上角的表格的坐标x值;参数y为合并表格的左上角的表格的坐标y值;参数dimension合并的矩型框的大小,即跨越表格的面积。
? setLineWrap()
设置表格单元的内容超宽时是否换行显示。方法的原型如下:
public void setLineWrap(boolean flag)
其中,参数flag是布尔型的标志值。
? setFont()
设置指定表格单元内容的字体。方法的原型如下:
public void setFont(int x,int y,java.awt.Font font)
其中,参数x是要设置字体表格单元的坐标x值;参数y是要设置字体表格单元的坐标y值;参数font是要设置的字体对象,为Java中java.awt.*包中的Font对象。
? setForeground()
基于JavaReport的Web报表开发6【转】
2010-06-12 16:38
设置指定表格单元的前景颜色。方法的原型如下:
public void setForeground(int x,int y,java.awt.Color color)
其中,参数x是要设置颜色的表格单元的坐标x值;参数y是要设置颜色的表格单元的坐标y值;参数color是要设置的颜色对象,为Java中java.awt.*包中的Color对象。
? setBackground()
设置指定表格单元的背景颜色。方法的原型如下:
public void setBackground(int x,int y,java.awt.Color color)
方法参数的含义同setForeground()方法。
(4)Chart类
即com.javareport.beans.Chart,图表类。这个类的对象属于报表对象Report中的元素。统计图在报表中不可缺少的,使用户浏览更加直观。可用这个类生成十几种报表统计图。
? Chart()
Chart类的构造函数,用于实例化一个图表对象。方法的原型如下:
public Chart(https://www.sodocs.net/doc/2814888723.html,ng.Number[][] data)
其中,参数是用于初始化图形中数据的二维数字型数据数组。
? setLabel()
方法用于设置图表中指定的单元数据的显示标签。方法的原型如下:
public void setLabel(int i,https://www.sodocs.net/doc/2814888723.html,ng.String label)
其中,参数I是需要设置标签的数据单元的下标值;参数label指定对应的单元数据的标签。
? setLabels()
设置图表中的单元数据显示的标签。方法的原型如下:
public void setLabels(https://www.sodocs.net/doc/2814888723.html,ng.String[] labels)
其中,参数labels是单元数据的标签字符串数组。
? setData()
设置图表中指定的单元或所有单元的数据。方法的原型如下:
public void setData(int i,int j,https://www.sodocs.net/doc/2814888723.html,ng.Number data) 或
public void setData(https://www.sodocs.net/doc/2814888723.html,ng.Number[][] data)
第一种形式参数说明如下:
参数i指定的二维数据单元的坐标x的值;参数j指定的二维数据单元的坐标y的值;参数data用于给指定的单元赋值,数据可以是Byte, Double, Float, Integer, Long, Short,这些数据类型都是Number类的子类。
第二种形式参数说明如下:
参数data是一个二维的数据,数据可以是Byte、Double、Float、Integer、Long、Short。
? setStyle()
设置统计图的类型,统计图可以是:曲线图,百分比图等。方法的原型如下:
public void setStyle(int type)
其中,参数type是指定的统计图类型,总共有十多种,常用常量来表示,常用的有以下几种。
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:横向的条形图
? setShowV alue()
设置统计图中显示时是否把具体的数值也显示出来。方法的原型如下:
public void setShowV alue(boolean flag)
其中,参数flag是一个布型型的标志值。
(5)RsTable类
即com.javareport.beans.RsTable,记录集表格类。这个类的对象属于报表对象Report中的元素。RsTable类具有Table类的全部功能,是针对统计报表中显示记录集是一个非常频繁使用的动作而设计的,开发者使用它时能够用几行代码就可把一个JDBC记录集里的数据以表格形式列举显示出来。
这个类与Table类有相同之处,它们在外观显示风格上的方法是相同的,因此这里不再介绍RsTable类的外观显示风格设置的方法,具体可参见Table类。
? RsTable()
RsTable类的构造函数,用于实例化一个记录集表格对象。方法原型如下:
public RsTable(java.sql.ResultSet rs) 或
public RsTable(https://www.sodocs.net/doc/2814888723.html,ng.String[] as,java.sql.ResultSet rs)
其中,参数rs是填充表格内容的记录集;参数as是记录集中列的名称映射表,比如记录值中“ID”映射为“编号”,则报表的表头名称列显示为“编号”。
? setMapping()
设置表头与列名的映射关系。方法的原型如下:
public void setMapping(https://www.sodocs.net/doc/2814888723.html,ng.String[][] as)
其中,参数as是映射关系中的对照表,是一个二维数组。
17.3.4 开发Web报表的方法
(1)开发JSP报表的方法
开发JSP时,自定义的JSP需要从WebReportEngine类继承下来:
<%@ page contentType="text/html; charset=GBK" %>
<%@ page import="javax.servlet.*"%>
<%@ page import="com.javareport.beans.*"%>
<%@ page extends="com.javareport.http.WebReportEngine"%>
<%!
public Report createReport(HttpServletRequest request) throws Exception {
……
}
……
这是一个开发的程序模板,一般情况下实现createReport()函数就可以,项目中报表的样式和内容就在这函数里实现,因此它是动态实时的表报,另外,还可以重载其他函数,可根据需要而定。
基于JavaReport的Web报表开发7【转】
2010-06-12 16:39
下面给出一个更详细的JSP开发模板,以供参考。
JSP报表开发模板
<%@ page import="javax.servlet.*"%>
<%@ page import="com.javareport.beans.*"%>
<%@ page extends="com.javareport.http.Web ReportEngine"%>
<%!
* 这是报表系统在应用中给开发人员的JSP模板文件,可以根据需要调整接口内容。部分函
* 数可以适当删除。在开发中一般是实现createReport()函数就可以,形成实时动态报表
* 就是在这个函数里实现的。剩下的工作(怎样在Web上显示,怎样形成Work,PDF 文件等)
* 交给报表引擎自动实现。
/**
* 建立报表,返回报表的实例。这个报表实例可以在Web上显示,同时也可以导出Word,Excel,
* PDF,CSV,HTML等格式的文档供使用。
*/
public Report createReport(HttpServletRequest request) throws Exception{
Report report = new Report();
report.addText("This is a template !");
return report;
}
/**
* 这是对上一个页面Form提交的参数进行检查,由于实时报表需要动态的参数,在这里进
* 行数据校验。
* 返回值为null时代表通过,其他内容则为参数错误的提示信息。
*/
public String validate(HttpServletRequest request){
return null;
}
/**
* 这是报表在Web上显示时,内容显示出来前执行的脚本,脚本内容一般为Java Script脚
* 本或VBScript脚本。
* 返回值为null时代表通过没有脚本内容。
public String getStartScript(HttpServletRequest request){
return null;
}
/**
* 这是报表在Web上显示时,内容显示出来后执行的脚本,脚本内容一般为JavaScript脚
* 本或VBScript脚本。
* 返回值为null时代表通过没有脚本内容。
*/
public String getEndScript(HttpServletRequest request){
return null;
}
/**
* 这是报表在Web上显示时,上面的工具栏为标准的样式(上下翻页,导出文件)。可以在
* 此扩展工具栏的内容,一般可以添加公司主页的链接,返回上一层链接的“返回”按钮就是
* 在这里添加脚本的。
* 返回值为null时代表不添加内容。
*/
public String getToolbarScript(HttpServletRequest request){
return null;
}
/**
* 这是报表在Web上显示时,如果不想让工具栏显示出来,就让函数的返回值就false 就可以。
* 注意:如果是多页报表,上下翻页按钮就无法使用。
*/
public boolean isShowToolbar(){
return true;
}
/**
* 这是报表在Web上显示时,导出文件的按钮可以自定义,比如应用中只要导出PDF 文件,
* 其他的不需要,就可以这里设定。按钮值从Work按钮开始是(1,2,4,8,...),需要
* 显示的按钮则将它们的值相加就可以了。
*/
public int getAllEchoButton(){
return 0xFFFF;
}
%>
(2)开发Servlet报表的方法
开发Servlet的时候,自定义的servlet从WebReportEngine类继承下来:
import javax.servlet.http.*;
import com.javareport.beans.*;
public class ReportExam extends WebReportEngine {
public Report createReport(HttpServletRequest request) throws Exception {
……
}
……
}
说明:在本书中将详细介绍JSP中开发报表的方法,Servlet开发报表的方法可自行完成。
基于JavaReport的Web报表开发8【转】
2010-06-12 16:40
下面给出一个Servlet报表开发的详细模板,以供参考。
Servlet报表开发模板
import javax.servlet.http.*;
import com.javareport.beans.*;
public class Template extends Web ReportEngine {
* 这是报表系统在应用中给开发人员的JSP模板文件,可以根据需要调整接口内容。部分函
* 数可以适当删除。在开发中一般是实现createReport()函数就可以,形成实时动态报表
* 就是在这个函数里实现的。剩下的工作(怎样在Web上显示,怎样形成Work,PDF 文件等)
* 交给报表引擎自动实现。
/**
* 建立报表,返回报表的实例。这个报表实例可以在Web上显示,同时也可以导出Word,Excel,
* PDF,CSV,HTML等格式的文档供使用。
*/
public Report createReport(HttpServletRequest request) throws Exception{
Report report = new Report();
report.addText("This is a template !");
return report;
}
/**
* 这是对上一个页面Form提交的参数进行检查,由于实时报表需要动态的参数,在这里进
* 行数据校验。
* 返回值为null时代表通过,其他内容则为参数错误的提示信息。
*/
public String validate(HttpServletRequest request){
return null;
}
/**
* 这是报表在Web上显示时,内容显示出来前执行的脚本,脚本内容一般为Java Script脚
* 本或VBScript脚本。
* 返回值为null时代表通过没有脚本内容。
*/
public String getStartScript(HttpServletRequest request){
return null;
}
/**
* 这是报表在Web上显示时,内容显示出来后执行的脚本,脚本内容一般为JavaScript脚
* 本或VBScript脚本。
* 返回值为null时代表通过没有脚本内容。
*/
public String getEndScript(HttpServletRequest request){
return null;
}
/**
* 这是报表在Web上显示时,上面的工具栏为标准的样式(上下翻页,导出文件)。可以在
* 此扩展工具栏的内容,一般可以添加公司主页的链接,返回上一层链接的“返回”按钮就是
* 在这里添加脚本的。
* 返回值为null时代表不添加内容。
*/
public String getToolbarScript(HttpServletRequest request){
return null;
}
/**
* 这是报表在Web上显示时,如果不想让工具栏显示出来,就让函数的返回值就false就可以。
* 注意:如果是多页报表,上下翻页按钮就无法使用。
*/
public boolean isShowToolbar(){
return true;
}
/**
* 这是报表在Web上显示时,导出文件的按钮可以自定义,比如应用中只要导出PDF 文件,
* 其他的不需要,就可以这里设定。按钮值从Work按钮开始是(1,2,4,8,...),需要
* 显示的按钮则将它们的值相加就可以了。
*/
public int getAllEchoButton(){
return 0xFFFF;
}
%>
基于JavaReport的Web报表开发9【转】
2010-06-12 16:40
17.3.5 Web报表开发实例
【实例131】用Java Report输出一维数据图形
本实例将实现用JavaReport来在JSP页面中显示一维数据的图形,使用页面首部的工具按钮栏可进行翻页来显示所输出常见的8种图形。源代码如下:
ChartYW.jsp
<%@ page 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("统计图表例子");
//在报表的页眉添加一条横直线
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.setShowV alue(true);
//在报表中添加文本信息内容
report.addText("报表中常见的报表统计图表("+i+"):");
//在报表中添加图表信息内容
report.addChart(chart);
//在报表中添加换行符号
report.addBreak();
report.addBreak();
report.addBreak();
}
catch (Exception ex) {
ex.printStackTrace();
}
}
return report;
}
// 用户根据自己的实际情况,从数据库提取动态的数值
public Double[][] getData(HttpServletRequest request){
Double[][] data = new Double[1][4];
data[0][0] = new Double(200);
data[0][1] = new Double(500);
data[0][2] = new Double(350);
data[0][3] = new Double(550);
return data;
}
//定制Web报表在页面首部显示的工具栏为标准的样式,增加一个"返回"按钮,返回到首页public String getToolbarScript(HttpServletRequest request){
return " "?op=Resource&name=/resource/back.gif\" border=\"0\" alt=\"返回\">
}
%>
程序运行的结果如图17-13所示。
可见,JavaReport只使用了少量的代码就输出了美观而又实用的Web图形;实际工程中一维数据的数据来源常常来自于对数据库中数据查询的结果。
基于JavaReport的Web报表开发10【转】
2010-06-12 16:41
【实例132】用Java Report输出二维数据图形
二维数据图形与一维数据图形的区别就是在数据展现上加大了数据的展现量,在同一个单元数据标签处可显示属于同一个单元数据的多个数据。看了下面的源代码和运行的结果,就会理解它们之间到底有什么区别了。源代码如下:
ChartEW.jsp
<%@ page contentType="text/html; charset=GBK" %>
<%@ page import="com.javareport.beans.*"%>
<%@ page extends="com.javareport.http.Web ReportEngine"%>
<%!
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("统计图表例子");
//在报表的页眉添加一条横直线
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.setShowV alue(true);
//在报表中添加文本信息内容
report.addText("报表中常见的报表统计图表("+i+"):");
//在报表中添加图表信息内容
report.addChart(chart);
//在报表中添加换行符号
report.addBreak();
report.addBreak();
report.addBreak();
}catch (Exception ex) {
ex.printStackTrace();
}
}
return report;
}
// 用户根据自己的实际情况,从数据库提取动态的数值
public Double[][] getData(HttpServletRequest request){
Double[][] data = new Double[4][4];
data[0][0] = new Double(200); data[0][1] = new Double(250);
data[0][2] = new Double(220); data[0][3] = new Double(280);
data[1][0] = new Double(500); data[1][1] = new Double(700);
data[1][2] = new Double(520); data[1][3] = new Double(900);
data[2][0] = new Double(350); data[2][1] = new Double(400);
data[2][2] = new Double(380); data[2][3] = new Double(320);
data[3][0] = new Double(550); data[3][1] = new Double(590);
data[3][2] = new Double(337); data[3][3] = new Double(340);
return data;
}
//定制Web报表在页面首部显示的工具栏为标准的样式,增加一个"返回"按钮,返回到首页public String getToolbarScript(HttpServletRequest request){
return " "?op=Resource&name=/resource/back.gif\" border=\"0\" alt=\"返回\">
}%>
程序的运行结果如图17-14所示。
从源代码上来看,与输出一维数据图形的代码大部分是相同的,区别之处就在于设置的图形实例化时的数据数组中的数据不同。
基于JavaReport的Web报表开发11【转】
2010-06-12 16:42
【实例133】用Java Report输出报表
本例将输出两种常用的报表,一种是普通的二维报表;另一种是含有合并单元格的报表。源代码如下:
Table.jsp
<%@ page contentType="text/html; charset=GBK" %>
<%@ page import="java.awt.*"%>
<%@ page import="com.javareport.beans.*"%>
<%@ page extends="com.javareport.http.Web ReportEngine"%>
<%!
public Report createReport(HttpServletRequest request) throws Exception{
//实例化报表对象
Report report = new Report();
//在页眉中添加文本信息内容
report.addHeaderText("报表输出示例");
//在报表的页眉添加一条横直线
report.addHeaderSeparator(1);
//在页尾添加一条横直线
report.addFooterSeparator(1);
//在页尾添加文本信息内容
report.addFooterText("第{P}页,共{N}页");
//在报表中添加文本信息内容
report.addText("销售情况一览表:");
Web报表系统研究背景意义及国内外现状1研究背景 2国内外发展的动态 3研究的意义 1研究背景 随着Internet的广泛应用,电子政务、电子商务以及企业ERP(Enterprise Resource Planning)得到迅猛发展,数据的采集、传输、展示、交互、等问题显得越来越重要。报表作为一种信息组织和展示的有力手段,是企业信息系统的重要组成部分。据不完全统计,企业系统的实际应用中,有60%以上与报表相关。报表系统在各行各业中都有很广泛的用途,是进行信息浏览、分析、打印的有力工具。随着WWW(World Wide Web)技术的发展,企业系统从传统的客户端/服务器结构逐步向Internet转移,企业信息系统也正向基于Web的信息系统进行转变,越来越多的报表应用将在Web环境下开发与运行。 以往的报表系统中,业务逻辑与报表处理过程混杂在一起,任何一个需求或逻辑的改变都必须重新修改、编译这个报表程序才能完成。随着开发人员的不断完善,出现了多种报表设计器、生成器之类的工具,可以方便、快捷地实现需求。但创建的报表程序同样存在一下弊病: 1)开发出的报表程序功能有限,应用程序的交互界面、业务逻辑、数据库的处理操作没有分离,是混杂在一起的,属于是强耦合,维护升级相当困难。 2)静态确定报表的计算过程,报表无法在运行事动态改变,因而无法应对企业动态、复杂、多变的需求。一旦新的需求出现,或者运行时的环境发生改变,整个程序可能需要重写。 3)使用这类工具设计报表,经常使我们面临这样的处境:“简单设计,复杂实现,痛苦维护”,伴随着此类报表数量的增多,对报表系统开发与维护的工作量将成倍增长。 4)在企业内部大量存在使用了多个面向不同应用系统的情况,比如生产系统、财务系统、人事系统等,通常它们是独立的,无法整合,系统间数据无法通讯,或只能实现少量的信息交互,大量信息交互工作需要手工来进行。 因此,开发一个报表系统,显得日趋重要。这样的报表系统可以轻松地做到与数据库和平台无关。 2国内外发展的动态 近年来,国内外各个领域对于web报表的研究也在逐渐增多,不过传统的报
第二节WebI报表 关键词:报表语义层|Universe|WebI(Web Intelligence) 如图1, 打开浏览器后, 就可建立Webi文档, Webi为用户提供了易于使用、灵活的交互式报表界面,Webi的功能特点: (1).直接使用浏览器比如IE,不需要再安装任何客户端。 (2).界面友好,简单易用,不用编写任何程序通过定义报表取数公式就能出具复杂报表。 (3).强大的报表公式定义功能,后面将有详细介绍。 (4).基于浏览器的即席查询功能。 图1-[1]:BO提供了强大的报表目录管理功能,可以将Webi报表文件分目录管理,“公共文件夹”目录可保留报表模板,“我的文件夹”目录则收藏着个性报表文件。 图1-[2]:选择“新建”按钮弹出一子菜单,用户选择“Web Intelligence文档”,出现图2画面,在Universe列表中选择一Universe,Universe是报表的语义层,定义了报表和BI间的映射,在Universe列表中选择要使用的报表语义层。 图1-[3][4]:可以上载本地的Excel报表到报表服务器,也可根据需要选择“文件夹“子菜单建立报表文件夹或子文件夹。
下面以资产负债表为例说明Webi报表的做法,为此在列表中选择总帐余额Universe FV00FN024_Q,该Universe连接到总帐余额信息立方体,如图2,选中Universe后,进入图3。 图3-[1]:选择右上角的这几个图标可以隐藏“文件夹“和最大化报表窗口。 图3-[2][3]:Webi报表文件的制作分两步,一是建立查询,查询的作用是连接BI数据,查询建立完毕,可按“运行查询“按钮读取数据,二是建立报表,可为报表单元灵活 定义各种公式。 图3-[4][5]:图3-[4]显示的正是总帐信息立方体的维度, 现在可以将所需要的特征和关键指标拖到图3-[5]的”结果对象”窗口,资产负债表通常只需要“报表单位“,”“会计
WEB报表插件介绍 - WEB报表 Grid++Report 插件适用于开发 B/S 结构的网络报表系统,是软件开发人员开发WEB 报表的最佳选择。支持 Asp, https://www.sodocs.net/doc/2814888723.html,, Jsp, VbScript, JavaScript,PHP 等一切 Web 开发技术。可以在浏览器中直接打印报表(非IE打印)与导出报表。带有国际化数字签名,在 IE 中自动下载更方便,让用户使用更安全。 特点 1.Grid++Report 插件与Grid++Report 组件构建在相同的报表引擎之上,两者具有相同 编程接口与相同报表格式定义,以及相同的知识学习过程,让您开发B/S 系统与 C/S 系统共享相同的开发经验与开发资源。 2.网络报表界面美观,具有与桌面报表一样的报表展现功能与操作体验,大大改善浏 览器中报表功能。 3.支持丰富的报表数据来源,远程OLE DB数据源直接访问、服务端数据集载入、客户 端数据集与XML数据载入、以及一切可访问数据的加载。 4.数据经过高效压缩,极大减小数据网络传输量。 5.插件是一个纯客户端软件,支持一切WEB 开发语言,如:ASP、https://www.sodocs.net/doc/2814888723.html,、JSP、PHP 等。客户端脚本支持VBScript、JavaScript。 6.带有国际化数字签名,让用户使用的更安全、更放心。 7.Grid++Report 经过多年发展,用户数量众多,产品成熟稳定高效,易学以用。 组成部分: 1.报表打印显示插件:以打印预览的方式在IE 浏览器中展现报表,并能打印输出或 导出为多中格式文档(Excel、RTF、PDF、文本,CSV、图像等)。 2.报表查询显示插件:以类似数据网格(DataGrid)方式在IE 浏览器中展现报表,其数 据展现功能比常规的数据网格要强大得多。并可以打印或打印预览报表,或导出为多种格式文档(Excel、RTF、PDF、文本,CSV、图像等)。 3.报表对象:这是一个不可见的对象,也是本软件功能实现的核心对象,相当于报表 引擎。在网页中创建这个对象,可以实现无界面打印,将Web数据直接打印出来,也可以执行数据导出功能。报表打印显示插件与报表查询显示插件都引用一个报表对象,在网页中与报表的交互主要就是访问报表对象及其子对象。 4.报表设计器插件:在网页中可视化设计报表模板,关联一个报表对象。 参考 报表插件运行原理介绍 | 插件主要编程接口 | 向报表提供记录集数据 | 向报表统一提供记录集数据与参数数据 WEB报表插件运行原理介绍 - WEB报表
即席报表设计器 ActiveReports 即席报表设计器(Ad-hoc Designer)是一个功能丰富、完全基于Web的报表解决方案,能帮助商业用户轻松地创建具有交互功能的报表。这款基于浏览器的即席报表设计器,使用语义数据模型将开发技术细节和业务知识相分离,商业用户无需关心SQL等技术细节便可创建符合业务需求的报表。同时,该设计器还支持多用户报表,通过内置的SDK可实现自助式BI的需求,比传统报表工具更加有效。 ActiveReports 即席报表设计器(Ad-hoc Designer),根据用户角色提供相应的功能。主要面向的用户分为:企业用户、信息技术人员和开发人员。 ● 企业用户功能 可以快速的开发出具有专业外观和交互能力的报表,所有操作在Web浏览器中就完成,而且,你不必关心任何的开发技术细节。此外,ActiveReports 即席报表设计器内置对移动设备的支持,你可随时随地访问报表全部信息: 功能丰富、且极易使用的报表设计器,用户只需拖拽操作便可完成报表设计的全部工作。 即席报表设计器的使用完全基于浏览器,无需在终端用户环境中安装桌面应用程序。 通过语义数据模型封装所有技术细节,终端用户只需聚焦业务表达。
可直接设置报表运行计划,并自动分发报表内容。 可通过PC/笔记本/iPad/iPhone/Android和Windows Phone直接访问报表,完成报表查看、打印、导出以及数据钻取等交互式数据分析操作。
● 信息技术(IT)人员功能 基于Web 的ActiveReports 即席报表设计器工具,让你在短短几分钟时间内便可熟悉工具的使用,并能快速的为您的用户提供自助式报表服务: 通过创建数据模型,为用户提供基于业务逻辑的数据结构,便于用户理解和使用。 提供多种报表分发方式,便于数据的及时共享。 即席报表设计器的使用方式简单,与Office 类似,减低对用户的支持和培训成本。
在前一节中,使用word工具来辅助制作和打印报表,可发现代码冗长,不方便程序员阅读,而且修改比较麻烦,需要在word中重新制作再生成报表模板,jsp中的程序代码又必须重新找到合适的位置以放入其中。为简化这个开发过程,并拓展功能,出现了一些第三方的专门用于Web报表开发组件,如jasperreport,它把报表的模板生成作为一个XML文件保存,根据这个模板再用少量的Java代码即可生成复杂的报表,并可导出成PDF、HTML等格式,然而它是国外的第三方组件,对中文支持不够,且其开发手册需要付费。 为此,本书介绍一款国产的第三方组件——JavaReport,它由伟才工作室开发,这个组件简单易用,只须编写少量的代码即可开发出复杂的报表和图形,中文支持较好,较为实用。 JavaReport可从网上免费下载得到,网址如下:https://www.sodocs.net/doc/2814888723.html,/download.htm 一、JavaReport介绍 JavaReport主要有如下优点。 (1)支持实时的、动态的Web统计报表 JavaReport所展示的报表是动态的报表。所有的数据都是实时的数据;所有的统计图也是动态生成的。报表里面的数据源可从数据库中即时查询产生,适合于对实时统计要求高的应用系统。 (2)接口丰富,对图表提供良好的支持 JavaReport提供了丰富的应用程序接口、减少代码复用、灵活的图表形式、即时图表生成、更短的生成时间等。Java报表对图表有良好的支持,可以生成柱图、饼图和折线图等十几种图表。 (3)报表可导出成各种格式的文档 JavaReport在报表展现方面表现优异,能实现Word,Excel,PDF,CSV等格式精确导出等功能,并提供了全部的页面与打印控制。 (4)开发简便,程序员只须编写少量程序代码 有许多的问题在JavaReport组件内已经解决,如报表的导出功能、打印功能和数据的分页处理等。在很多B/S结构体系的系统开发时,分页是开发过程中要重点考虑的问题。但在JavaReport中,就不需要考虑上下翻页,跨页分页,因为这些问题报表引擎已经实现了。在设计报表的过程中,把Report类当作容器类,统计图类,表格类,标签类,图片类等,把它们当作组件类。至于跨页分页,上下翻页由报表引擎自动完成。JavaReport系统中有自动跨页分页的功能,当表格超过当前页的大小时,系统会自动把接着部分放到下一页。报表设计在开发过程中是感觉不到要跨页的存在,只有一个全部数据完整的表格对象。 如果把引入图片文件加入到报表中,可使用报表系统的Report类,通过这个类的addImage()方法把Image对象加进来,如果需要自定义图像,可通过第三方画图程序(例如是JFreeChart程序)生产需要的统计图/图片,然后再把图像加到报表中去。 本书中使用的JavaReport版本是V3.0,JavaReport根据客户的应用需要,按照功能和性能的等级,分成三个版本:专业版,服务器版,企业版。本书使用企业版。 JavaReport三个版本产品都是免费使用的。也就是说这三个版本都不需要购买License许可,可以自由使用JavaReport的所有功能。免费提供报表在Web展示功能,表和图怎样混合功能,跨页分页功能,导出电子文档Word,PDF,Excel,CSV,HTML等诸多功能。 专业版客户(Client)的IP最大连接数限制为10个,也就是JavaReport同时并行处理线程的最大数受限制。限制是为了避免系统资源占用过大,使系统反应迟钝。该版本适合中小型的应用系统,保障应用系统正常运行。 服务器版在最大连接数没有受限,它能充分发挥服务器的个部分硬件设备的作用;相对要求服务器的设备配置高,保障最优性能效率。该版本适合大中型的应用系统使用。 企业版提供垃圾回收机制管理,自动处理在内存中无用对象的引用;支持多服务器处理
巧用ASP实现Web数据统计、报表和打印 1、引言 随着Internet的飞速发展,基于Web开发的业务应用系统越来越多,如办公自动化、电子商务和管理信息系统(MIS)等。这些Web业务应用系统经常涉及到数据的统计、报表和打印。ASP在实施动态交互和生成动态页面方面具有很大的优势,但在处理复杂数据统计、报表和打印时却遇到不小的麻烦。本文阐述一种利用ASP实现Web数据统计、报表的基本思路和实现方法,同时提供一种巧妙调用Word打印报表的解决方案。 2、应用实例 假设有一家公司利用网络MIS系统对公司员工进行管理,必然会涉及到各部门的员工统计。为了简单起见,假设最终的统计报表如下:公司员工统计表部门合计员工姓名市场部2张三李四研发部3王五赵六刘七员工合计5 与传统单机MIS系统相比,在网络MIS系统中使用ASP实现以上数据统计、报表和打印会遇到以下问题:(1)数据统计时需要按部门进行分类统计,同时要记下各部门员工的具体名单。(2)报表生成时需按具体要求动态绘制几行几列表格,同时在适当的地方保持空白。(3)表格打印可以简单地按网页打印,但效果不好,而且不容易控制。
3、实现方法 简述基于Web的业务应用一般采用三层结构,客户端是普 通的Web浏览器,中间业务逻辑应用层存放于Web服务器上,由Web服务器上的数据库接口访问后台数据库。利用ASP实现Web数据统计、报表和打印的过程如图所示:浏览器HTML VBScript 统计报表Word 对象Web服务器业务逻辑实现数据库访问接口数据库Word本地打印(1)客户端向Web服务器发送数据统计请求。(2)Web服务器执行SQL语句,从后台数据库取得统计数据,在页面上动态 生成报表。(3)在客户端运行脚本,使用VBScript脚本函数CreateObject在本地创建Word的Document对象的实例,也就是在客户端创建Word文档,设定表格属性,然后将页面上的报表数据填入本地Word表格,最后保存文档,执行本地Word打印。 4、实现过程分析 (1)数据库连接首先建立数据库(data.mdb),简单的员工资料表(personnel)结构如下:personnel:department,文本;name,文本;然后建立一个ODBC数据源(DSN),利用DSN指向ODBC数据库。(2)程序代码分析(在此只分析统计报表程序tongji.asp)//以下显示表格标题和输出 表头公司员工统计表//注意:此处标明表格的id为data 部门合计员工姓名//如果flag为0,表示该部门是首次出现,
一、JavaReport介绍 JavaReport主要有如下优点。 (1)支持实时的、动态的Web统计报表 JavaReport所展示的报表是动态的报表。所有的数据都是实时的数据;所有的统计图也是动态生成的。报表里面的数据源可从数据库中即时查询产生,适合于对实时统计要求高的应用系统。 (2)接口丰富,对图表提供良好的支持 JavaReport提供了丰富的应用程序接口、减少代码复用、灵活的图表形式、即时图表生成、更短的生成时间等。Java报表对图表有良好的支持,可以生成柱图、饼图和折线图等十几种图表。 (3)报表可导出成各种格式的文档 JavaReport在报表展现方面表现优异,能实现Word,Excel,PDF,CSV等格式精确导出等功能,并提供了全部的页面与打印控制。 (4)开发简便,程序员只须编写少量程序代码 有许多的问题在JavaReport组件内已经解决,如报表的导出功能、打印功能和数据的分页处理等。在很多B/S结构体系的系统开发时,分页是开发过程中要重点考虑的问题。但在JavaReport中,就不需要考虑上下翻页,跨页分页,因为这些问题报表引擎已经实现了。在设计报表的过程中,把Report类当作容器类,统计图类,表格类,标签类,图片类等,把它们当作组件类。至于跨页分页,上下翻页由报表引擎自动完成。JavaReport系统中有自动跨页分页的功能,当表格超过当前页的大小时,系统会自动把接着部分放到下一页。报表设计在开发过程中是感觉不到要跨页的存在,只有一个全部数据完整的表格对象。 如果把引入图片文件加入到报表中,可使用报表系统的Report类,通过这个类的addImage()方法把Image对象加进来,如果需要自定义图像,可通过第三方画图程序(例如是JFreeChart程序)生产需要的统计图/图片,然后再把图像加到报表中去。 本书中使用的JavaReport版本是V3.0,JavaReport根据客户的应用需要,按照功能和性能的等级,分成三个版本:专业版,服务器版,企业版。本书使用企业版。 JavaReport三个版本产品都是免费使用的。也就是说这三个版本都不需要购买License许可,可以自由使用JavaReport的所有功能。免费提供报表在Web展示功能,表和图怎样混合功能,跨页分页功能,导出电子文档Word,PDF,Excel,CSV,HTML 等诸多功能。 专业版客户(Client)的IP最大连接数限制为10个,也就是JavaReport同时并行处理线程的最大数受限制。限制是为了避免系统资源占用过大,使系统反应迟钝。该版本适合中小型的应用系统,保障应用系统正常运行。
?帆软(中国)有限公司 ?商务咨询电话:86-025-5186 2240 ?商务咨询邮箱:business@https://www.sodocs.net/doc/2814888723.html, ?公司网址:https://www.sodocs.net/doc/2814888723.html, Web报表工具FineReport定时器使用说明 本书介绍了报表工具FineReportV6.5定时器功能的相关参数及配置说明,本书最后详细列举了几个使用定时器功能的模板制作示例。 6.5定时器配置简要说明 (2) 6.5定时器参数专题 (10) 6.5定时器填报 (15) 6.5定时器日报专题 (19) 6.5定时器月报专题 (24) 6.5定时器年报专题 (29) 6.5定时器邮件专题 (33) /
?帆软(中国)有限公司 ?商务咨询电话:86-025-5186 2240 ?商务咨询邮箱:business@https://www.sodocs.net/doc/2814888723.html, ?公司网址:https://www.sodocs.net/doc/2814888723.html, 6.5配置简要说明 在制作报表中,您可能需要面临定期产生,定期发布等问题,FineReport提供了定时器这个功能,对于6.5版本,在6.2的基础上进行了扩充,可在页面直接进行操作,下面就简单介绍一下。 1.配置环境 此环境是自在tomcat环境中配置的,因此需要把FineReport6.5安装目录下的WebReport文件拷贝到%Tomcat_HOME%/webapps/下 1.1整合web.xml 打开%Tomcat_HOME%/webapps/WebReport/WEB-INF目录下的web.xml,将
新一代Java web报表工具—Smartbi电子表格(报表工具) Smartbi电子表格巧妙的利用了Excel自身的表格、图形、函数的能力,使得个人PC的Excel变成了报表设计器,使用者只要具备Excel的基础技能,就能够实现各种复杂的中国式报表、精美图形,更能够实现仪表盘、数据填报、统计挖掘、What-if等常见BI系统的功能,同时能够发布到在手机/平板上浏览。 极致简单 Excel就是报表设计器 不是"类Excel报表设计器",不再重新发明轮子;易学易用,功能强大,超越现有报表工具。 极致功能 支持各种类型的报表 无论报表格式简单或复杂,Smartbi电子表格全部支持; 覆盖国内外报表工具支持的所有类型的报表。
商务图表,精美呈现 支持Excel的所有图形; 组合基础图形,创意新图形; 商务配色,美观大方; 丰富的分析函数 全面支持Excel函数与公式,包括统计函数、财务函数、数学和三角函数、逻辑函数等;支持用Java定义新函数。
移动显示,跨屏访问 提供APP,在手机/平板电脑上查询、展现报表和图形 极致速度 强劲的后台Java报表引擎;报表秒级呈现 更多功能
如何注册Smartbi账户获得免费授权文件 Smartbi电子表格可以免费公开下载和永久免费使用和升级,但如果你没有正式的授权文件,系统会在所有报表的下方加注一行小字,并且提示系统是“未注册版”。 那么怎样才能去掉这两个不友好的标记呢?别担心,方法很简单,而且不花一分钱。跟着我来操作一遍吧,只需要3步就可以顺利解决这个问题。 步骤一:用常用邮箱注册自己的Smartbi账号 登陆思迈特的官方网站如下:
免费web报表系统FineReport的嵌套多模板联动 1.问题描述 页面分成3个区域,分别对应三张不同的报表,一张主报表和2张子报表,互相之间通过超链,实现子报表的动态改变值的效果。 2.实现思路 通过html嵌套多个frame,首先在主表的frame上展示主表,然后在主表加载完触发加载结束事件,调用html中定义的js方法,给表2赋动态地址src,表3则在表2基础上触发加载结束事件调用js,动态给表3赋src。 3.实现步骤 3.1制作html页面 在html中定义frameset标签,组织多个窗口,通过frame设置特定的窗口区域,通过js判断对不同窗口区域设置不同模板地址,详细代码如下: