Page tree
Skip to end of metadata
Go to start of metadata

葡萄城报表提供了两个表格类报表元素:普通表格和矩表。前者用于表格列固定不变的应用场合,后者用于表格列根据数据记录动态设置的应用场合。
矩表实现动态列的关键是列分组,事实上,矩表也可以不设置动态列,这样就可以用矩表实现普通表格的效果。尤其是,在多层表头的表格中,如果存在跨行的列标题纵向合并,就需要用矩表来实现。

下面介绍这种特殊矩表报表的设计实现方法。

(1)创建数据集

从报表管理门户(http://localhost:8080 )点击【创建报表】,进入新报表的设计页面。点击右边栏的【数据】选项卡,再点击【数据集】右侧的【添加】。

在【新建数据集】下方,选中之前创建好的示例数据源,再点击【添加】按钮,如下图:

在数据集编辑对话框中,输入SQL语句:

select * from 奖金明细 where 年份=2014

验证查询语句后点击【确定】,保存数据集的定义。
数据集的字段列表如下图:

(2)实现思路

原始数据如下图:

期望的报表展示方式如下图:

这是典型的中国式复杂报表,具体体现在:不仅是多层表头,而且表头中不仅有横向单元格合并(如【教育事业费】),还有纵向单元格合并(如【合计】)。

实现思路:

由于普通表格不支持纵向单元格合并,因此,尽管本报表并不需要根据某个字段设置动态列,还是应该采用矩表来设计。在具体设计中,不设置列分组即可。

(3)添加矩表

从左侧工具箱中拖放一个【矩表】,先在第二行第一个单元格绑定【学校类别】字段,此操作同时也设置了行分组依据为【学校类别】字段,如下图:

右键点击【学校类别】单元格,选择【行分组】-【子级分组】,绑定【学校名称】字段,此操作同时也设置了行分组的子级分组依据为【学校名称】字段,如下图:

注意现在矩表的第三列没有绑定任何字段,这也意味着,本报表只有行分组,没有设置列分组。

(4)添加静态列

右键单击【学校名称】,选择【列操作】-【在分组内-右侧】,如下图:

矩表将增加一个无分组的普通列。重复此操作,添加多个无分组静态列,然后绑定数据字段,如下图:

为实现多层表头,右键单击表头单元格,选择【行操作】-【上方】,插入一个新的表头行,如下图:

重复此操作,使得表头行总共有5行,如下图:

(5)设置合并单元格

选中需要合并的多个单元格,右键单击,选择【单元格】-【合并单元格】,在合并后的单元格内填写表头文字,在末行(数据行)的单元格内绑定数据字段或表达式,例如,第三列末行单元格内的表达式为:=Fields!教育人员经费.Value+Fields!教育日常公用经费.Value+ Fields!教育标准化建设经费.Value+ Fields!教育信息化建设经费.Value,表示【教育事业费】合计金额,如下图:

注意在合并单元格中,一部分是横向合并,一部分是纵向合并。

(6)设置汇总行

右键单击末行【学校类别】单元格,选择【汇总操作】-【在分组前显示汇总】,如下图:

对末行第二列的【学校名称】做同样的操作,如下图:

将文字“汇总”修改为“合计”,然后合并【汇总】与【学校名称】两个单元格,将内容修改为【总合计】,将绑定字段单元格内的表达式都改为Sum()表达式,如将【=Fields!教育标准化建设经费.Value+Fields!教育信息化建设经费.Value】改为【=sum(Fields!教育标准化建设经费.Value+Fields!教育信息化建设经费.Value)】,如下图:

(7)设置外观格式

选中标题行、合计行、【学校类别】单元格,设置不同的背景色,如下图:

预览效果如下:

至此,一个仅有静态列的复杂表头的报表就设计完成了。



  • No labels