多语言展示
当前在线:588今日阅读:195今日分享:41

数据分析软件FineReport教程:[25]报表分栏

下面就通过数据分析软件FineReport来简单介绍一下。
工具/原料
1

数据分析软件FineReport7.1.1

2

大小:148.2M 适用平台:windows/linux

行分栏
1

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

2

示例 数据准备新建一张模板,新建数据集ds1:SELECT * FROM [人员变动表]。

3

模板设计如下图,在报表主体上设计报表:其中B3单元格的父格为C3,公式seq作用是对员工进行排序。

4

未分栏预览保存模板,预览模板,如下图,可以报表每页右侧都有很多的空白区域,浪费空间:

5

分栏设置如上图,报表右侧还有很多空白区域,那么就可以设置行分栏,将左侧超过固定行的数据挪到右侧。这里我们设置每一栏显示20行数据,不包括标题,以此类推。就可以在菜单栏中,选择模板>报表分栏,设置为行分栏,超过20行时进行分栏,参与分栏的数据从左上角的A3到右下角的E3,故在分栏数据中填写A3:E3,如下图:

6

超过X行分栏超过行分栏是指纵向扩展的数据超过固定行数就进行行分栏,其中超过行分栏的数字计算公式为:超过行分栏的数字=(分栏数据中结束分栏行序号-开始分栏行序号+1)*倍数,标题行不参数计算如上图,分栏区域中分栏数据位A3到E3,结束分栏行序号和开始分栏行序号均为3,示例要求每个栏位显示20行数据,每条数据只占一行,所以倍数为20,那么:超过行分栏的数字=(3-3+1)*20=20分栏成X列分栏成x列与超过X行分栏效果一样,都是设置每一栏中数据显示多少行,超过x行分栏是固定每一栏位的行数,狠季栏数不确定,分栏成x列是指所有的数据分成固定栏,每一栏中数据的行数根据数据总行数确定,如示例中,不包括标题,数据总共有407行,那么如果分栏成12列,那么每一栏的数据行数=407/12(如果不能整除,则向上取整)=35,如下图:

7

复制行睡场晃序列复制行序列是指在分栏时将该行复制作为每个栏位的标题,因此其一般应用于单元格是标题的行,复制行序号的行不参与分栏。另:报表设计时,大标题必须要覆盖整个分栏区域,如示例中的“员工劳动关系详表”(大标题)所在的单元格所在区域必须包含到E1单元格,如果没有包含到E1单元格,那么大标题就不会跟随扩展显示在所有数据中间,而是显示在第一栏数据的中间,如下图:

8

分栏时的特别要求纵向扩展时,由于栏数不定,设置上面的分栏后,一页可能会显示出多栏,甚至最右边的栏会显示不全,而我们往往希望每沫摸页能够固定显示两栏。此时我们需要保证,设计报表时,左侧设计报表所占的总列宽,需要跟右侧所在报表范围内的空白大小基本相同,就可显示2栏了,如果模板样式不好调,可以调整页面大小。如果需要显示3栏,则要保证报表范围内(分页线之间)能够分成3份等宽。

列分栏
1

问题描述数据是横向扩展的,超过一页的数据会显示在下一页,而每页下面会有很大的一片空白区域,不美观且浪费纸张。希望在一页中第一行扩展满后自动到下一行继续扩展。可以使用列分栏来实现这种横向扩展自动换行的效果,如下图数据是从左到右扩展,显示完8天的数据之后自动到下面继续扩展。

2

数据准备新建模板,新建数据集ds1:SELECT * FROM 公司股票。

3

模板设计在报表主体设计报表样式,如下图:所有的数据列均设为横向扩展(默认为纵向扩展),数据列的扩展请查看数据的扩展,seq公式的上父格设置为B3。

4

未分栏预览保存报表,预览模板,如下图,可以看到数据每页只能显示9列,下方有很多空白地方,浪费空间:

5

分栏设置上图可以看到每页能显示9列数据,除去标题列,只能显示8列数据,那么我们这里就可以设置每一栏显示8列,超过的到下一栏显示,以此类推。就可以在菜单栏中,选择模板>报表分栏,设置为列分栏,超过8列时进行分栏,参与分栏的数据从B2到B8,故在分栏数据中填写B2:B8,如下图:

6

超过X列分栏超过列分栏是指横向扩展的数据超过固定列数就进行列分栏,其中超过列分栏的数字计算公式为:超过列分栏的数字=(分栏数据中结束分栏列序号-开始分栏列序号+1)*倍数,标题列不参数计算如上图,分栏区域中分栏数据位B2到B8,结束分栏列序号和开始分栏列序号均为2(即B列),示例要求每个栏位显示8列数据,每条数据只占一列,所以倍数为8,那么:超过列分栏的数字=(2-2+1)*8=8分栏成x列分栏成x列与分栏成X行原理一致,这里不再赘述。复制列序列复制列序列是指在分栏时将该列复制作为每个栏位的标题,因此其一般应用于单元格是标题的列,复制列序号的行不参与分栏。

7

分栏时的特别要求由于行数不定,设置上面的分栏后,一页肯定会显示出多栏,甚至最下边的栏会显示不全,此时我们需要保证,设计报表时,上方设计报表所占的总行高,需要跟下方所在报表范围内的空白大小成为倍数的关系,就可显示几栏了,可以通过页面设置来调整报表大小。注:报表设计时,大标题必须要覆盖整个分栏区域,如示例中的“某公司2~4月份股票行情”(大标题)所在的单元格所在区域必须包含到B1单元格,如不覆盖到分栏区域的最大区域,效果与行分栏中类似。

卡片分栏
1

描述上面两节均是介绍了列表和分组表的分栏效果,但是对于卡片这种每一条数据均有一个小标题或大标题的模板来说,我们又该如何进行分栏呢?

2

数据准备新建一张模板,新建数据集ds1:select * from 雇员

3

模板设计如下图所示设置模板,其中小标题列的第一个单元格A3和大标题单元格A1的父格设置为雇员ID所在单元格B3,并添加一个空白行和一个空白列,其中空白行的首个单元格A7和空白列的首个单元格D1的父格均设置为A3:

4

未分栏预览保存模板,点击分页预览,可看到如下效果,每个员工的信息形成一个完整卡片,也就是每条记录都有一个大标题和小标题:

5

分栏设置上述模板预览效果可以看出该模板时纵向扩展,故分栏选择行分栏。上述模板设计中可以看出,每一位员工信息占了7行4列(为了使每位员工信息有一定的空白间隔,我们使用了空白行与空白列),第一二行是大标题行,第一列是小标题所在单元格,但由于每条记录都带有大标题和小标题,故可以将大小标题看成是数据的一部分,所以是7行4列,而不是5行3列;若我们希望每栏显示4位员工信息(7行*4=28行),超过的到下一栏(卡片是纵向扩展,故下一栏是指下一列)显示,以此类推。就可以在菜单栏中,选择模板>报表分栏,设置为行分栏,超过28行时进行分栏,参与分栏的数据从左上角的A1(大标题开始的单元格)到右下角的D7,故在分栏数据中填写A1:D7,因为大小标题行已经作为分栏数据,所以重复行序列为空,如下图:

6

超过X行分栏类似于上两节中的行分栏和列分栏,卡片分栏的超过行分栏数字也有公式,如下:超过行/列分栏的数字=(分栏数据中结束分栏行/列序号-开始分栏行/列序号+1)*倍数如上示例,结束分栏行序号为7,开始分栏行序号为1,要求每个栏位显示4为员工信息,故倍数为4,所以超过行分栏的数字=(7-1+1)*4=28

7

保存与预览保存模板,点击分页预览,效果如下图

组内分栏
1

描述组内分栏是指在每个组的内部对组内的数据进行分栏,如下图所示:

2

数据准备新建一张模板,添加一个内置数据集,数据如下图:

3

模板设计如下图所示设计模板:B4单元格为纵向扩展,D4和D5单元格为横向扩展,其他父格设置均为默认。

4

分栏设置点击模板>报表分栏,开启分栏,选择列分栏,分栏成2行,分栏数据位为组内数据,即D4和D5,复制列序列为第3列,是组内数据的标题,勾选补充空白列:注:行分栏的设置过程类似。

5

效果查看点击分页预览就能看到如上图的效果。

推荐信息