杰表技术园地

国产web报表工具的3g时代


        自用友华表诞生以来,国产web报表工具的发展历史也不过七八年,然而,这几年,随着互联网应用的持续增长,国内web报表软件可谓层出不穷,或昙花一现......

多动鼠标少动脑,java报表工具的简约之美


        近年来,纯java的类excel报表工具异军突起,在国内报表工具市场中取得了初步成功。目前市场上主流的纯java类excel的报表工具有润乾、杰表4.0、finereport等......

使用java对象作数据源


        一般java报表工具,允许用户使用java类来作动态数据来源,但这个类必须符合工具要求的接口,如JasperReport的JRDataSource接口,杰表的BeanDataset接口......

使用java数组


        假设项目组其他成员已经编写了一个Student类,如下图(a),该类定义四个方法,分别获取其姓名,年龄,性别,分数。由脚本构造一个包含三个Student对象的数组......

java数组节点访问


        杰表用java数组节点表示一个包含若干java对象的集合,该节点需要定义java对象数组的脚本。Java数组节点支持的方法与属性如下表......

List,iterator数据源


        你可以定义一个数组节点,其公式设置为返回java.util.List,或java.util.iterator对象。如果你已经有一个用来选择学生的类StudentSelector代码如下表......

嵌套的java对象数据源


        假设你有下图(a)所示的两个类Student和Person,你可以使用Student的getMembers()方法,取得该学生的家庭成员列表,每个家庭成员用一个Person对象表示......

ResultSet数据源


        如果你有一个java.sql.ResultSet对象,那你可以定义一个数组节点,用脚本得到该对象,并将所有记录作成报表。下图所示模型中的resultset节点定义是从一个Script类的静态方法中......

TableModel数据源


        如果你想将杰表集成在你的java桌面应用中,使用TableModel数据源可以方便地将JTable中显示的数据作成报表......

抽茧剥丝话复杂报表


        下图是一个典型的复杂报表,该报表用于按不同分类方法统计培训学员人数,该表列上存在多个分组(培训类型、累计培训时间、参加培训总人数、培训内容......

列上并行分组交叉表


        假设我们有如上(a)所示数据集,这个数据集记录了培训学员的姓名,行政级别,培训类型,及培训渠道,后三个字段记录的是编号,其含义如......

层次不等的交叉表


        例中的交叉表,虽然列上有两个并行分组,但层次是相等的,都是一级。有时,可能不是这么规则,请看下面的交叉表,该交叉表,列上有两个并列分组,一个是地区分组,另一个......

行列并行分组的交叉表


        请看下图的报表,该报表不仅在列上,有两个并行分组,而且在行上也有两个并行分组,类别分组和客户分组,由此,交叉部分数据可以分成4个区......

多数据集的交叉表


        前述交叉表虽然是并列分组的,但所有分组、交叉索引信息都来自一个数据集,然而,当存在多个交叉分区时,如果把所有数据置于一个数据集中,会使这个数据集非常庞大而使检索性能下降......

计算比去年增长数


        注意选中单元格的公式,公式是两数相减,被减数表示当前年度,当前地区的销售额总计,减去的数部分,表示取前一年度,当前地区的销售额汇总,所得结果,刚好是增长数......

计算比去年同期增长数


        设选中单元格的公式为如下所示,有可能取不到去年本月数,如果取不到则设为0,下面是此报表的部分截图......

计算占比


        选中单元格的公式,表示要计算当前月份,某地区的销售额,占当年总销售额的比例,公式中的除数表示计算指定年份,当前地区的销售额......

显示排名


        我们在第五章中已经介绍过节点集对象,你可以使用节点集对象的sort 方法,对被选节点进行排序。你也可以使用rank方法,计算出某一取值的排名......

按照汇总值排序的交叉报表


        按汇总值排序的交叉报表,与制作按汇总排序的分组报表一样,都是在设置绑定节点属性时,设置一个返回经过排序的节点集的公式。系统区别是脚本公式......

交叉表折页处理


        当交叉表的行数超过一页时,就会另起一页显示,这时,你可以选择列标题是在后续页中继续显示,还是仅在第一页中显示,下图(a)是一个仅在第一页中显示的报表......

交叉表居中


        交叉报表的列数是不定的,所以您在设计时无法知道交叉表展开后总宽度,也就无法使其居中。对于宽度未知的报表对象,您可以使用对象的打印样式属性......