中国式复杂报表的一大特征是多层表头,分级汇总、分层合并,本节介绍一个典型的复杂表头报表的实现方法。
(1)创建数据集
从报表管理门户(http://localhost:8080 )点击【创建报表】,进入新报表的设计页面。点击右边栏的【数据】选项卡,再点击【数据集】右侧的【添加】如下图:
在【新建数据集】下方,选中之前创建好的示例数据源,再点击【添加】按钮,如下图:
在数据集编辑对话框中,输入SQL语句:
select * from 电力设备生产数据 order by 生产方式, 产品性质, 所属事业部, 月, 周
验证查询语句后点击【确定】,保存数据集的定义。
(2)实现思路
数据集的字段列表如下图:
原始数据如下图所示:
期望的报表展示方式如下图:
可以看到这种报表的主要特征:多层行头、多层列头、分类合计。
实现思路可以概括为:
(a)行分组:按照生产方式、产品性质、所属事业部、类别进行四级分组;
(b)列分组:按照月份和周次进行二级分组;
(c)行、列分组添加汇总。
(3)添加矩表
从左侧工具箱中拖放一个【矩表】,右键单击第二行的第一个单元格,此列代表数据行的行头,点击【行分组】-【子级分组】,如下图:
添加一个子分组之后,矩表将增加一个新列。右键点击该新列的单元格,继续点击【行分组】-【子级分组】,直至矩表变为5列。
右键点击矩表末列的首行单元格,该单元格代表动态表头,即根据数据动态生成的多个表格列的列头。选择【列分组】-【子级分组】,如下图:
此时,矩表将变成一个3行5列的结构,如下图:
针对前4列,合并第1、2行单元格。输入固定列头文字:生产方式、产品性质、所属事业部、类别。
第5列的首行将显示月份,可将数据字段的日期内容,用下面的表达式转为yyyymm的年月形式:
=Year(Fields!月.Value) * 100 + Month(Fields!月.Value)
第5列的次行将显示周数,绑定数据库字段【周】即可。
第3行的前4个单元格,分别绑定数据库字段:生成方式、产品性质、所属事业部、TYPE。
第3行的最后一个单元格,将用于显示数值,设置为汇总数量的如下表达式:
=Sum([QTY])
设置完毕的效果如下图:
(4)设置分组
点击工具箱中的【分组管理】,展开分组树形目录,选中一个分组,在右侧设置选项中设置【分组条件】为某个字段,如下图:
将4个行分组的分组条件分别设置为【生成方式】、【产品性质】、【所属事业部】、【TYPE】这四个字段的值,例如:=Fields!生产方式.Value
将两个列分组的分组条件分别设置为【月】、【周】这两个字段的值。