Posts Tagged ‘报表工具’
01.28.2010 by hewei - 1 Comment - 0 Posted in web报表
什么是报表 ?
一提起报表 ,人们最经常联想到的就是财务报表,象资产负债表、现金流量表、报销单等。其实除了财务报表,工作生活里还有很多报表,比如课程表、成绩表、员工登记表、工资表、物料登记单,银行记账单、手机话费单等等,各行业中的业务报表更是数不胜数。那么,什么是报表?
报表就是将内容信息(一般是数据、文字、图片等)以某种形式组织起来,并将组织结果呈现出来的文件。
对中国用户而言,凡是能打印出来的都可以叫报表。
什么是报表软件 ?
顾名思义,报表软件就是用来制作报表的系统工具,目的是使做表工作简单化,提高总体工作效率。
报表软件有什么用?
报表软件可以帮助用户快速开发出自己想要的报表。这里的用户主要是指企业级用户市场,是除个人桌面级应用以外的市场。
企业级的用户一般有这么几个特征: (1)应用复杂。企业级用户因为所处行业以及业务的不同,其应用软件涉及到财务、人员、物料、生产等各环节; (2)数据量大,因为日常的业务往来会产生大量的生产数据; (3)报表多且种类不同,处于不同生产环节上的人对报表有不同程度的要求。
专业的报表工具 可以帮助企业级用户迅速定制出业务需要的报表。
Tag after 填报 , 报表 , 报表工具 , 报表软件
12.23.2009 by hewei - 0 Comment - 0 Posted in web报表应用
快逸 报表 提供了大量的内置函数,但是再多的函数也无法完全满足五花八门的业务需求,于是快逸提供了丰富的二次开发接口,以便让
报表 用户自己来自定义函数,通过自定义函数来轻松方便的解决
web报表 业务问题,下面就是一个利用自定义数据集运算函数实现特定功能的例子。
需求如下: 下图所对应的是创建报表模版:
对应的实现效果图:
实现思路: 1:A2扩展后就是一个字符串,把字符串传入数据集函数,代码中用split方法分解并放入String数组中。 2:将数据集中的字符串和值对应放入HashMap中。 3:遍历数组,如果数组中数据和HashMap中的key相等,则取出value值利用StringBuffer拼好返回值。 自定义函数的用法可以参照:快逸应用开发教程- 3.4.1 自定义函数介绍章节 本示例的自定义数据集运算函数代码如下: package com.runqian; import java.util.HashMap; import java.util.Map; import java.util.Set; import com.runqian.base4.resources.EngineMessage; import com.runqian.base4.resources.MessageManager; import com.runqian.base4.util.ReportError; import com.runqian.report4.dataset.DataSet; import com.runqian.report4.dataset.DsValue; import com.runqian.report4.dataset.Group; import com.runqian.report4.model.expression.DSFunction; import com.runqian.report4.model.expression.Expression; import com.runqian.report4.model.expression.Variant2; import com.runqian.report4.usermodel.Context; public class CharZhuan extends DSFunction { @Override public Object calculate(Context ctx, boolean isInput) { // TODO Auto-generated method stub if (this.paramList.size() < 1) { MessageManager mm = EngineMessage.get(); throw new ReportError(”paramater:” + mm.getMessage(”function.missingParam”)); } // 取得第一个参数,默认为表达式,需要把该表达式算出来,结果才是函数的参数值 Expression param1 = (Expression) this.paramList.get(0); if (param1 == null) { // 判断参数是否为空 MessageManager mm = EngineMessage.get(); throw new ReportError(”paramater:” + mm.getMessage(”function.invalidParam”)); } // 算出第一个参数值 Object result1 = Variant2.getValue(param1.calculate(ctx, isInput), false, isInput); System.out.println(result1.toString()); // 判断第一个参数值是否为空 if (result1 == null) { return null; } // 判断第一个参数值的数据类型 if (!(result1 instanceof String)) { MessageManager mm = EngineMessage.get(); throw new ReportError(”parameter:” + mm.getMessage(”function.paramTypeError”)); } Group group = null; DsValue cur = this.ds.getCurrent(); group = (Group) cur; DataSet ds = group.getDataSet(); int countRow = ds.getRowCount(); // 将码表的对应值放到hashmap中 Map map = new HashMap (); for (int i = 1; i <= countRow; i++) { int j = 1; //获得某位置的数据 map.put(ds.getData(i, j).toString(), ds.getData(i, j + 1) .toString()); } StringBuffer sb = new StringBuffer(); // 对第一个参数进行split分解. String[] str = ((String) result1).split(”-”); System.out.println(str[0] + str[1]); Set keySet = map.keySet(); //以下for循环为每个字符串找相应的汉字,并用-连接起来 for (int i = 0; i < str.length; i++) { //遍历HashMap找key与目标字符串相等的值 for (String key : keySet) { if (key.equals(str[i])) { //如果相当,则获得与key对应的value,append到StringBuffer中 sb.append(map.get(key)); sb.append(”-”); } } } return sb.delete(sb.length() - 1, sb.length()).toString(); } } 总结:通过上面自定义函数和对函数的调用就可以实现本文开头的特殊业务需求了,可见自定义函数功能的强大,然而本文中的例子也仅仅是自定义函数的一 个普通应用,快逸报表提供的普通函数和数据集运算函数的接口能够处理的业务需求远不止此,更强大更实用的功能还等待我们去尝试。
Tag after 快逸报表 , 快逸自定义 , 报表 , 报表工具 , 自定义函数
12.20.2009 by hewei - 0 Comment - 0 Posted in web报表
行式填
报表 是
快逸 报表 提供的一种特殊的填报表,它相对于普通的填报表而言具有以下优点: 1.在网页上可以动态地实现增加 删除 修改行的数据 2. 增加行时可以引用定义的流水号,实现流水号在增加行时自动计算的功能 3.可以实现在网页上动态地导入不定行的excel数据 除了上述的强大功能外,行式填报表还可以利用快逸报表提供的填报监听类来实现一些特殊功能,在填报前后进行自己的业务操作。本文就用一个填报前获取行式报表每次插入数据的例子来让他家了解一下快逸的填报监听类。
获取每次插入新数据的思路: 报表提交的时候涉及到三种对数据库的操作: 插入(insert) 删除(delete) 更新(update) 行式填报报表具体体现是: (1) 在原有查询的基础上修改数据提交时执行的是update (2) 在原有查询基础上删除查询出来的数据的某一行提交时执行的是delete (3) 在原有查询的基础上插入一行数据提交时执行的是insert 清楚插入数据执行的是insert以后我们就可以通过继承填报监听类AbstractInputListener 在beforeSave()函数中获取提交的sql语句,然后在返回的InputSQL类型的sq语句中进行遍历,查看有没有包含”insert”字符 串,如果含有则说明InputSQL组中的元素就是包含我们想要的插入的新数据的sql语句,然后在根据需要在sql语句中取出填报的数据。
具体实现如下: //需要引用的类 import com.runqian.report4.usermodel.input.AbstractInputListener; import com.runqian.report4.usermodel.input.InputSQL; //继承abstractInputListener 实现beforeSave()函数 public class RowsInputListener extends AbstractInputListener { public void beforeSave()throws Exception { InputSQL[] abc = this.getInputSql(); for(int i=0;i< this.getInputSql().length;i++){ String sql = abc[i].getSql(); InputSQL sql1=abc[i]; if(sql.matches(”insert.*”)){ //判断是否是新增的记录,如果是则从InputSQL 对象中获取对应填报的数据 System.out.println(”这是insert语句”+sql); Object []param =sql1.getParams(); for(int j=0;j String name=param[j].toString(); System.out.println(name); } public void afterSave()throws Exception { // 填报数据后如果还有其它业务逻辑,可以在函数afterSave中实现 }} }}}
Tag after 填报 , 填报监听类 , 快逸报表 , 报表 , 报表工具 , 获取填报内容
12.19.2009 by hewei - 0 Comment - 0 Posted in web报表
报表 展现在web页面以后,有时需要通过鼠标点击单元格的事件来获取该单元格的值。怎样来实现这个需求?
快逸 报表 中通过在jsp页面中设定JavaScript函数就可以完成。 首先,我们需要知道报表是如何在页面上展现的。设计器安装目录: \webapps\quiee\reportJsp中的showReport.jsp就是一个典型的展现报表的jsp例子:
从上图可以看到整个报表标签< report:html>包含在一个< table>标签中,在报表扩展的时候,就是在这个table中去扩展。 想通过点击鼠标去获得单元格的值,就要定位单元格。如何去定位一个单元格呢,就要通过< report:html>中的name属性,然后加上单元格的位置来定位例如:report1_A1就代表的是报表的A1单元格。 接下来,在页面中增加一段JavaScript函数,用这个函数去获得单元格的值。 < script language=”javascript”> function _getDispValueByName(){ var cell = document.getElementById(”report1_A1″); //通过ID去定位单元格位置 alert(cell.value); //用alert()函数弹出这个单元格的值 } < /script> 最后,可以做一下效果展示,在页面上增加一个按钮,来触发这个JavaScript函数。 < input type=”button” onclick=_getDispValueByName() value=”check”> 效果如下:
通过这个例子,不仅告诉我们怎样去定位单元格获取单元格的值,还告诉我们快逸报表中是可以使用强大的JavaScript函数来实现很多特殊功能的。
Tag after javascript , 快逸报表 , 报表 , 报表工具 , 获取单元格的值
12.18.2009 by hewei - 0 Comment - 0 Posted in web报表应用
快逸 报表 的行式填
报表 中提供了一个可以删除整行功能按钮,但是这个按钮只能在报表的Toolbar中使用如下图:
而有些用户为方便操作需要在报表中直接显示这样的按钮如下图:
本文就来介绍一下报表中”删除当前行”的按钮的制作方法。 步骤1选择一个现成行式填报表进行操作
步骤2通过html实现按钮
注:html代码如下: < input name=”click1″ type=”button” style=”width:70;height:30″ value=”删除当前行” onClick=”shanchu(this)” > 步骤3布报表查看效果
这些按钮做成以后就可以很方便的删除数据了,不再需要去toolbar里寻找那个小按钮了。 备注:在发布报表的jsp中引用删除当前行的js脚本如下: < script language=”JavaScript”> function shanchu(btn){ var cell=btn.parentElement; report1.currCell=cell;//获取当前触犯单元格的焦点 _deleteRow(report1); //调用行式报表删除行的js函数 } < /script>
Tag after 删除当前行按钮 , 填报报表 , 快逸报表 , 报表 , 报表工具
12.17.2009 by hewei - 0 Comment - 0 Posted in web报表
在做web
报表 的时候,一个单元格常常会利用另外单元格的数据作为条件去查询和检索。
快逸 报表工具 提供了可以在单元格内执行存储过程,让存储过程计算完后返回我们想要的结果,这样便可在单元格内完成对数据库的条件查询。 该篇文章采用DB2数据库作为例子,来说明快逸
报表 call函数在单元格内的用法,以及对于DB2存储过程的注意事项。
第一步:查看单元格内call函数的说明: 执行存储过程,返回结果数据集合,只能返回单列数据,如果存储过程返回多个字段,则返回第一个字段的结果值。
第二步:新建一个简单的DB2数据库存储过程: create table TEST –数据库建表语句 ( ID VARCHAR2(10) , NAME VARCHAR2(10) ) –存储过程创建语句 CREATE PROCEDURE test (IN in_state varchar(50)) result set 1 language sql P1:BEGIN DECLARE CUR cursor with return for select NAME from TEST where ID=in_state with ur; OPEN CUR; END P1; DB2的存储过程一定要注意result set 1这个语句,如果说没有该语句的话,在快逸报表单元格内执行存储过程是会报错的。
第三步:在快逸报表工具 单元格内,用call函数执行存储过程 执行表达式为: Call(”{call test(?)}”,B2) 表达式说明:其中”{call test(?)}”是调用存储过程,”?”是代表的参数,B2是要传给”?”的实际值,经过存储过程运算后,返回游标结果集,如: 数据库内表TEST 内数据如下: ID NAME 1 aaa 2 bbb 调用存储过程时,输入参数值为:1 那么,返回结果集为一条数据,即为:aaa
Tag after call函数 , 存储过程 , 快逸报表 , 报表 , 报表工具
12.16.2009 by hewei - 0 Comment - 0 Posted in web报表
作为智能商业
报表 ,统计分析功能必不可少,
快逸 报表 支持26种统计图以及自定义统计图,满足了 大部分企业级用户对
WEB报表 的需求,但是有些用户在看过26种统计图后发现没有进度条统计图的功能,难道快逸报表不支持进度条的制作吗?本文就来解开这 个疑问,介绍以下快逸报表是怎样简单快速的实现进度条功能的。 首先,看一下统计图效果,然后分析一下做法:
做法步骤: 1:内建一数据集ds1,有a,b两个字段,如下图所示:
2:创建报表,如下图所示:
其中各单元格表达式说明: B2:=ds1.max(int(b)),求数据集中b字段最大的数。 B3:=ds1.select(a,false),列出说有a字段的数 C3:=int(ds1.select1(b,a==B3)),求出相应于a字段的b数值 D3:=C3/B2*100,求相对于最大的b值所占的比例 E4:选中单元格,单击鼠标右键,选择数据类型,选中HTML类型,内容中填写: =”< table width=”+D3{}+”% border=0 cellspacing=0 cellpadding=0> < tr> < td bgcolor=#990033>< div align=right>< font color=#ffffff >”+C3{}+”< /font>< /div>< /td> < /tr> < /table>”
E4单元格的表达式是进度条设计的主体部分,下面是主体表达式的说明: 1:< table width=”+D3{}+”% border=0 cellspacing=0 cellpadding=0>进度条的宽度由D3{} 决定,基数120所占比例为100%,宽度占满单元格,其他根据比例来扩展。 2: < td bgcolor=#990033>…< /td>用来控制进度条颜色,即为效果图中的棕红色 3:< div align=right>< font color=#ffffff >”+C3{}+”< /font>< /div>表示在进度条的右侧显示标注,颜色为白色,数据值为C3 由此可见,作为新一代的
报表工具 ,快逸报表在功能上有很强的扩展性,可以说,只有想不到的,没有做不到的。深入的研究思考,快逸报表就能给带来惊喜!
Tag after 快逸报表 , 报表 , 报表工具 , 统计图 , 进度条
12.15.2009 by hewei - 0 Comment - 0 Posted in web报表
免费版统计图介绍 统计图是web
报表 的增色剂,不仅能使
报表 看起来更美观,也能更形象直观的展示报表信息。在
快逸 报表免费版中为报表开发人员开放了以下多种功能强劲实用的统计图:
柱形图
三维柱形图
堆积柱形图
三维堆积柱形图
饼形图
三维饼形图
折线图
三维折线图
条形图
三维簇状条形图
堆积条形图
三维堆积条形图
散列图
三维簇状柱形图
各个统计图的显示效果如下:(统计图中的所有颜色都可以自己定义) 柱形图
三维柱形图
三维簇状柱形图
堆积柱形图
三维堆积柱形图
饼形图
三维饼形图
多层三维饼形图
折线图
区域图
三维区域图
条形图
三维簇状条形图
散列图
Tag after 区域图 , 堆积图 , 快逸报表 , 折线图 , 报表 , 报表工具 , 报表统计图 , 条形图 , 柱形图 , 饼图
12.14.2009 by hewei - 0 Comment - 0 Posted in web报表
快逸 报表 为web
报表 开发人员提供了3种主子表展现模式,分别是表单式主子表、嵌入式主子表、引入式主子表 。
表单式主子表 单表式主子报表的特点是用单个报表实现主子表的业务逻辑,效果见下图:
嵌入式主子表 嵌入式主子报表的特点是在单元格中嵌入子报表,子报表和主报表的格线可以不对齐,子表之间格线也不对齐。子报表以独立报表的型式嵌入在主报表中,所以称为嵌入式主子表。
引入式主子表 引入式子报表的特点是母报表单元格根据子报表的行数列数,双向同时扩展,子报表有几行几列,母报表中就扩展出几行几列,子报表占用母报表的空白行列,格线严格对齐。引入式的子报表扩展后,和母报表形成了一个统一的二维矩形单元格。
报表开发人员可以根据实际项目需要选择合适的样式来解决主子表的需求。其具体区别和做法可以参照教程:设计器-帮助-学习教程-初级设计-第9章 主子表
Tag after web主子表 , 主子报表 , 嵌入式主子表 , 引入式主子表 , 快逸报表 , 报表 , 报表工具 , 表单式主子表
10.20.2009 by fengzhou - 0 Comment - 0 Posted in 报表统计图
免费版统计图介绍
统计图是web报表 的增色剂,不仅能使报表 看起来更美观,也能更形象直观的展示报表信息。在快逸 报表免费版中为报表开发人员开放了以下多种功能强劲实用的统计图:
柱形图
三维柱形图
堆积柱形图
三维堆积柱形图
饼形图
三维饼形图
折线图
三维折线图
条形图
三维簇状条形图
堆积条形图
三维堆积条形图
散列图
三维簇状柱形图
各个统计图的显示效果如下:(统计图中的所有颜色都可以自己定义)
柱形图
三维柱形图
三维簇状柱形图
堆积柱形图
三维堆积柱形图
饼形图
三维饼形图
多层三维饼形图
折线图
区域图
三维区域图
条形图
三维簇状条形图
散列图
引自:报表工具知识库
原文链接: 免费版统计图介绍柱形图
Tag after 区域图 , 堆积图 , 快逸报表 , 折线图 , 报表 , 报表工具 , 报表统计图 , 条形图 , 柱形图 , 饼图