表格制作软件FineReport教程:[9]报表分栏
下面就通过表格制作软件FineReport来简单介绍一下。
工具/原料
表格制作软件FineReport7.1.1
大小:148.2M 适用平台:windows/linux
行分栏
1、问题描述有时我们会遇到列数很少,但是扩展出很多行的报表,这种报表窄而长,预览或打印时会有很大的一片空白区域,不美观且浪费纸张。为了节省空间、增加美观性,FineReport报表可以通过分栏将报表进行行方向或者列方向的分栏显示,如下图行分栏后效果,数据是从上到下扩展,超过20行,就在第2列中显示,并且每列数据都有一个小标题,所有数据有一个大标题。
![表格制作软件FineReport教程:[9]报表分栏](https://exp-picture.cdn.bcebos.com/8974c38a59de4507bb58e6c35e413a8ca70885ec.jpg)
4、未分栏预览保存模板,预览模板,如下图,可以报表每页右侧都有很多的空白区域,浪费空间:
![表格制作软件FineReport教程:[9]报表分栏](https://exp-picture.cdn.bcebos.com/8b3643dd884ce54a6e7e395ca3066b0193ddf7ec.jpg)
6、超过X行分栏超过行分栏是指纵向扩展的数据超过固定行数就进行行分栏,其中超过行分栏的数字计算公式为:超过行分栏的数字=(分栏数据中结束分栏行序号幻腾寂埒-开始分栏行序号+1)*倍数,标题行不参数计算如上图,分栏区域中分栏数据位A3到E3,结束分栏行序号和开始分栏行序号均为3,示例要求每个栏位显示20行数据,每条数据只占一行,所以倍数为20,那么:超过行分栏的数字=(3-3+1)*20=20分栏成X列分栏成x列与超过X行分栏效果一样,都是设置每一栏中数据显示多少行,超过x行分栏是固定每一栏位的行数,栏数不确定,分栏成x列是指所有的数据分成固定栏,每一栏中数据的行数根据数据总行数确定,如示例中,不包括标题,数据总共有407行,那么如果分栏成12列,那么每一栏的数据行数=407/12(如果不能整除,则向上取整)=35,如下图:
![表格制作软件FineReport教程:[9]报表分栏](https://exp-picture.cdn.bcebos.com/a9338a1fbee434daa2079490f271fe1d97d8e4ec.jpg)
8、分栏时的特别要求纵向扩展时,由于栏数不定,设置上面的分栏后,一页可能会显示出多栏,甚至最右边的栏会显示不全,而我们往往认颊女伢希望每页能够固定显示两栏。此时我们需要保证,设计报表时,左侧设计报表所占的总列宽,需要跟右侧所在报表范围内的空白大小基本相同,就可显示2栏了,如果模板样式不好调,可以调整页面大小。如果需要显示3栏,则要保证报表范围内(分页线之间)能够分成3份等宽。
![表格制作软件FineReport教程:[9]报表分栏](https://exp-picture.cdn.bcebos.com/7496877bbbf4da58138300faea0f8b56ac04d7ec.jpg)
2、数据准备新建模板,新建数据集ds1:SELECT * FROM 公司股票。
3、模板设计在报表主体设计报表样式,如下图:所有的数据列均设为横向扩展(默认为纵向扩展),数据列的扩展请查看数据的扩展,seq公式的上父格设置为B3。
![表格制作软件FineReport教程:[9]报表分栏](https://exp-picture.cdn.bcebos.com/a965c6e9ccd2bb6621005bf39b2a04e23fa2c6ec.jpg)
5、分栏设置上图可以看到每页能显示9列数据,除去标题列,只能显示8列数据,那么我们这里就可以设置每一栏显示8列,超过的到下一栏显示,以此类推。就可以在菜单栏中,选择模板>报表分栏,设置为列分栏,超过8列时进行分栏,参与分栏的数据从B2到B8,故在分栏数据中填写B2:B8,如下图:
![表格制作软件FineReport教程:[9]报表分栏](https://exp-picture.cdn.bcebos.com/0d55dc7bd2828689201f690265f97fbd4d7c37ed.jpg)
2、数据准备新建一张模板,新建数据集ds1:select * from 雇员
3、模板设计如下图所示设置模板,其中小标题列的第一个单元格A3和大标题单元格A1的父格设置为雇员ID所在单元格B3,并添加一个空白行和一个空白列,其中空白行的首个单元格A7和空白列的首个单元格D1的父格均设置为A3:
![表格制作软件FineReport教程:[9]报表分栏](https://exp-picture.cdn.bcebos.com/023cff37c97622bcf39c11d4a05fd546049628ed.jpg)
5、分栏设置上述模板预览效果可以看出该模板时纵向扩阮器态奁展,故分栏选择行分栏。上述模板设计中可以看出,每一位员工信息占了7行4列(为了使每位员工信息有一定的空白间隔,我们使用了空白行与空白列),第一二行是大标题行,第一列是小标题所在单元格,但由于每条记录都带有大标题和小标题,故可以将大小标题看成是数据的一部分,所以是7行4列,而不是5行3列;若我们希望每栏显示4位员工信息(7行*4=28行),超过的到下一栏(卡片是纵向扩展,故下一栏是指下一列)显示,以此类推。就可以在菜单栏中,选择模板>报表分栏,设置为行分栏,超过28行时进行分栏,参与分栏的数据从左上角的A1(大标题开始的单元格)到右下角的D7,故在分栏数据中填写A1:D7,因为大小标题行已经作为分栏数据,所以重复行序列为空,如下图:
![表格制作软件FineReport教程:[9]报表分栏](https://exp-picture.cdn.bcebos.com/f591ab03c8d246fedf171c30b8bf3bef344f1eed.jpg)
组内分栏
1、描述组内分栏是指在每个组的内部对组内的数据进行分栏,如下图所示:
![表格制作软件FineReport教程:[9]报表分栏](https://exp-picture.cdn.bcebos.com/51f9aa3ea8db574a5b6b4d2fa7f7dfb2dd1917ed.jpg)
3、模板设计如下图所示设计模板:B4单元格为纵向扩展,D4和D5单元格为横向扩展,其他父格设置均为默认。
![表格制作软件FineReport教程:[9]报表分栏](https://exp-picture.cdn.bcebos.com/2db6c1b2dc19ce2cfc42c06d7fdca039121f11ed.jpg)
5、效果查看点击分页预览就能看到如上图的效果。