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

1. 问题描述编辑

有时我们会遇到列数很少,但是扩展出很多行的报表,这种报表窄而长,预览或打印时会有很大的一片空白区域,不美观且浪费纸张。为了节省空间、增加美观性,FineReport报表可以通过分栏将报表进行行方向或者列方向的分栏显示,如下图行分栏后效果,数据是从上到下扩展,超过20行,就在第2列中显示,并且每列数据都有一个小标题,所有数据有一个大标题。

2. 示例编辑

2.1 数据准备
新建一张模板,新建数据集ds1:SELECT * FROM [人员变动表]
2.2 模板设计
如下图,在报表主体上设计报表:
其中B3单元格的父格为C3,公式seq作用是对员工进行排序,其详细使用方法请查看行序号
2.3 未分栏预览
保存模板,预览模板,如下图,可以报表每页右侧都有很多的空白区域,浪费空间:
2.4 分栏设置
如上图,报表右侧还有很多空白区域,那么就可以设置行分栏,将左侧超过固定行的数据挪到右侧。
这里我们设置每一栏显示20行数据,不包括标题,以此类推。
就可以在菜单栏中,选择模板>报表分栏,设置为行分栏,超过20行时进行分栏,参与分栏的数据从左上角的A3到右下角的E3,故在分栏数据中填写A3:E3,如下图:
  • 超过X行分栏
超过行分栏是指纵向扩展的数据超过固定行数就进行行分栏,其中超过行分栏的数字计算公式为:
超过行分栏的数字=(分栏数据中结束分栏行序号-开始分栏行序号+1)*倍数,标题行不参与计算
如上图,分栏区域中分栏数据位A3到E3,结束分栏行序号和开始分栏行序号均为3,示例要求每个栏位显示20行数据,每条数据只占一行,所以倍数为20,那么:
超过行分栏的数字=(3-3+1)*20=20
  • 分栏成X列
分栏成x列与超过X行分栏效果一样,都是设置每一栏中数据显示多少行,超过x行分栏是固定每一栏位的行数,栏数不确定,分栏成x列是指所有的数据分成固定栏,每一栏中数据的行数根据数据总行数确定,如示例中,不包括标题,数据总共有407行,那么如果分栏成12列,那么每一栏的数据行数=407/12(如果不能整除,则向上取整)=35,如下图:
  • 复制行序列
复制行序列是指在分栏时将该行复制作为每个栏位的标题,因此其一般应用于单元格是标题的行,复制行序号的行不参与分栏。
另:报表设计时,大标题必须要覆盖整个分栏区域,如示例中的“各分公司员工劳动关系详表”(大标题)所在的单元格所在区域必须包含到E1单元格,如果没有包含到E1单元格,那么大标题就不会跟随扩展显示在所有数据中间,而是显示在第一栏数据的中间,如下图:
2.5 分栏时的特别要求
纵向扩展时,由于栏数不定,设置上面的分栏后,一页可能会显示出多栏,甚至最右边的栏会显示不全,而我们往往希望每页能够固定显示两栏。
此时我们需要保证,设计报表时,左侧设计报表所占的总列宽,需要跟右侧所在报表范围内的空白大小基本相同,就可显示2栏了,如果模板样式不好调,可以调整页面大小
如果需要显示3栏,则要保证报表范围内(分页线之间)能够分成3份等宽。
2.6 保存与预览
保存模板,点击分页预览,效果即如上。模板效果在线查看请点击Columns_Row.cpt
已完成的模板可参考%FR_HOME%\WebReport\WEB-INF\reportlets\doc\advanced\Columns_Row.cpt

注:分栏只适用于分页预览。