历史版本10 :列分栏 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

目录:

1. 问题描述编辑

数据是横向扩展的,超过一页的数据会显示在下一页,而每页下面会有很大的一片空白区域,不美观且浪费纸张。希望在一页中第一行扩展满后自动到下一行继续扩展。
可以使用列分栏来实现这种横向扩展自动换行的效果,如下图数据是从左到右扩展,显示完8天的数据之后自动到下面继续扩展。
222
列分栏有时候由于列数的不同,可能会出现多余的空栏区域,我们可以通过设置条件来屏蔽这些空栏,如下图:
222

2. 示例编辑

2.1 数据准备
新建模板,新建数据集ds1:SELECT * FROM 公司股票
2.2 模板设计
在报表主体设计报表样式,如下图:
222
所有的数据列均设为横向扩展(默认为纵向扩展),数据列的扩展请查看数据的扩展,seq公式的上父格设置为B3。
2.3 未分栏预览
保存报表,预览模板,如下图,可以看到数据每页只能显示9列,下方有很多空白地方,浪费空间:
222
2.4 分栏设置
上图可以看到每页能显示9列数据,除去标题列,只能显示8列数据,那么我们这里就可以设置每一栏显示8列,超过的到下一栏显示,以此类推。
就可以在菜单栏中,选择模板>报表分栏,设置为列分栏,超过8列时进行分栏,参与分栏的数据从B2到B8,故在分栏数据中填写B2:B8,如下图:
222
1)超过X列分栏
超过列分栏是指横向扩展的数据超过固定列数就进行列分栏,其中超过列分栏的数字计算公式为:
超过列分栏的数字=(分栏数据中结束分栏列序号-开始分栏列序号+1)*倍数,标题列不参数计算
如上图,分栏区域中分栏数据位B2到B8,结束分栏列序号和开始分栏列序号均为2(即B列),示例要求每个栏位显示8列数据,每条数据只占一列,所以倍数为8,那么:
超过列分栏的数字=(2-2+1)*8=8
2)分栏成x列
分栏成x列与分栏成X行原理一致,这里不再赘述。
3)复制列序列
复制列序列是指在分栏时将该列复制作为每个栏位的标题,因此其一般应用于单元格是标题的列,复制列序号的行不参与分栏。
2.5 分栏时的特别要求
由于行数不定,设置上面的分栏后,一页肯定会显示出多栏,甚至最下边的栏会显示不全,此时我们需要保证,设计报表时,上方设计报表所占的总行高,需要跟下方所在报表范围内的空白大小成为倍数的关系,就可显示几栏了,可以通过页面设置来调整报表大小。
注:报表设计时,大标题必须要覆盖整个分栏区域,如示例中的“某公司2~4月份股票行情”(大标题)所在的单元格所在区域必须包含到B1单元格。
2.6 保存与预览
保存模板,点击分页预览,效果即如上。模板效果在线查看请点击Columns_Col.cpt
已完成的模板可参考%FR_HOME%\WebReport\WEB-INF\reportlets\doc\advanced\Columns_Col.cpt

3. 空栏屏蔽编辑

进行列分栏并补足空白行之后,有时会觉得空白栏不太美观,如下图:
222
这时可以通过条件属性将空白栏隐藏掉。
选中D4、D5单元格,右击弹出条件属性对话框,当数据列中没有数据时,即 len($$$)=0时,边框不显示,如下图:
222
条件属性设置好之后,可以看到如下效果图:

222