finereport报表

来源:互联网 发布:网上超市源码 编辑:程序博客网 时间:2024/05/07 04:15
目录表 
第一章 第一章 第一章 第一章      FineReport 报表综述 报表综述 报表综述 报表综述……………………………………………………………………2 
第二章 第二章 第二章 第二章      FineReport 功能详述 功能详述 功能详述 功能详述……………………………………………………………………3 
FineReport实现同期比(一) 
FineReport实现分组汇总(二) 
FineReport实现条件汇总(三) 
FineReport实现排名(四) 
FineReport实现组内序号(五) 
FineReport实现累计报表(六) 
FineReport实现占比报表(七) 
FineReport制作按段分组报表(八) 
FineReport制作条件分组报表(九) 
FineReport制作重叠分组报表(十) 
FineReport来弥补Excel的不足(十一) 
FineReport制作主子填报表(十二) 
FineReport实现网格式填报表(十三) 
FineReport归并分组报表(十四) 
FineReport制作不完全分组报表(十五) 
FineReport实现纵向分片(十六) 
FineReport制作自由格式报表(十七) 
FineReport实现多方面汇总统计(十九) 
FineReport制作多层交叉报表(二十) 
FineReport制作交叉报表(二十一) 
FineReport实现计算列的汇总(二十二) 
FineReport进行汇总统计(二十三) 
FineReport制作多层分组报表(二十四) 
FineReport制作分组报表(二十五) 
FineReport取数排序的实现(二十六) 
FineReport增加动态背景色(二十七) 
FineReport高亮显示设置(二十八) 
FineReport中显示格式和显示值的设置(二十九) 
FineReport填报之日期自动计算(三十) 
FineReport填报之数值自动计算(三十一) 
FineReport填报之合法性数据检查(三十二) 
第三章 第三章 第三章 第三章  总结 总结 总结 总结………………………………………………………………………………………91  
 
 
 
 
   2
第一章 第一章 第一章 第一章      关于 关于 关于 关于 FineReport 
FineReport 简介 简介 简介 简介 
FineReport报表工具提供了易用且高效率的报表设计方案,采用主流的数据双向扩展,
真正无编码形式设计报表;拥有强大的报表展示功能,并且提供完善的报表权限管理,报表
调度管理;具有完备的报表填报功能,支持多级汇总填报。 
利用 FineReport报表工具,用户即可把企业的业务模型、数据分析变成实际可操作的信
息系统。利用报表展现、填报、汇总、统计分析、打印输出等功能搭建出轻量级企业报表平
台。特别是该报表工具采用主流的数据双向扩展、多源分片、纯拖拽等方式来进行报表设计,
使得报表设计人员无需掌握复杂的代码编写技能,业务人员也可以随时根据需要设计符合业
务逻辑的报表,满足报表使用者的最终需求,无形中也降低了企业的运营成本。 
数年的努力,FineReport报表已经得到市场的普遍认可,客户遍及金融,电信,电力,
公安,烟草,税务,政府,钢铁,航空,外贸等各个行业。 
 
FineReport 组成 组成 组成 组成 
FineReport报表系统由报表设计器(设计模板)和报表服务器(解析模板)两部分组成。 
报表服务器 
报表服务器是指用在 web 环境中解析报表的 Servlet 形式的服务器,用户通过浏览器和报表
服务器进行应用交互。 
报表解析  
FineReport服务器主要用来读取和解析设计器制作好的模板,并将模板转换成 HTML页面,
方便用户通过浏览器查看、修改和打印数据。 
缓存管理  
FineReport服务器内置了强大的缓存机制,提高报表运算效率集群机制。 
性能管理  
FineReport服务器支持分布式集群,支持超大数据量运算,支持大数量用户并发处理。 
 
报表设计器 
FineReport设计器可以进行表样、数据、展现、打印等报表设计文件中各种元素的设计,是
报表设计和报表应用开发、调试、部署的一体化平台。 
可设计的报表类型分组报表、交叉表、多层交叉表、明细表、主从报表、分为多片的报表,
以及其它任意不规则的报表类型。  
 
 
更多详情:http://www.finereport.com 
 
下面一章,我们就FineReport几点常用的报表功能做详细解说。   3
第二章 第二章 第二章 第二章 FineReport 功能详述 功能详述 功能详述 功能详述 
用web 报表工具—FineReport 实现同期比(一) 
 
同期比 
同期比,指的是一个与时间相关的运算。上图报表显示的就是在同一年内每一个月份与上一个月
份的比值。 
下面我们来看一下实现上述报表的过程 下面我们来看一下实现上述报表的过程 下面我们来看一下实现上述报表的过程 下面我们来看一下实现上述报表的过程 
1.连接数据库 连接数据库 连接数据库 连接数据库 frDemo 
2.设计报表 设计报表 设计报表 设计报表 
2.1 新建报表 
2.2 表样设计 
按照下图设计好报表的基本框架 
 
表样设计 
2.3 新建一数据集名为 ds1 
SQL 语句 语句 语句 语句: :: :select 订单.订购日期,订单明细.单价,订单明细.数量,year(订单.订购日期)     4
as 订购年份,month(订单.订购日期) as 订购月份,订单明细.数量*订单明细.单价 as 订购金额 
from 订单,订单明细 where 订单.订单 ID = 订单明细.订单 ID and 订单.订购日期 is not null 
2.4 绑定数据列 
 
绑定数据列 
按照下列表格将数据集的字段拖入对应单元格内,并作相应的设置。 
单元格  内容  基本属性设置 
A2 ds1.定购年份  从上到下 从上到下 从上到下 从上到下扩展,居中,其余默认 
B2 ds1.订购月份  从上到下 从上到下 从上到下 从上到下扩展,居中,其余默认 
C2 ds1.订购金额  数据类型:汇总 汇总 汇总 汇总-求和 求和 求和 求和,居中,其余默认 
2.5 同期比计算 
在 D2 中填入:’ =if(&D2==1 &&  &A2==1,,C2/C2[B2:-1])’ 
’ if(&D2==1 &&  &A2==1,,C2/C2[B2:-1])’:如果本记录为所在年份的第一个记录则为空,否则
等于这个月的金额除以上个月的金额。层次坐标 
3.保存预览 保存预览 保存预览 保存预览 
保存为 
%FineReport_HOME%/WebReport/WEB-INF/reportlets/com/doc/4.4.cpt 
启动服务器,在浏览器中输入以下地址进行浏览: 
http://localhost:8079/WebReport/ReportServer?reportlet=/com/doc/4.4.cpt 
 
 
 
 
 
 
 
 
 
 
更多详情:http://www.finereport.com   5
 
 
用Web 报表工具—FineReport 实现分组汇总(二) 
 
分组汇总 
下面我们来看一下上述报表的实现过程 下面我们来看一下上述报表的实现过程 下面我们来看一下上述报表的实现过程 下面我们来看一下上述报表的实现过程 
1.连接数据库 连接数据库 连接数据库 连接数据库 frDemo 
2.设计报表 设计报表 设计报表 设计报表 
2.1 新建报表 
2.2 表样设计 
按照下图设计好报表的基本框架 
 
表样设计 
2.3 新建一数据集名为 emp_sql 
SQL 语句 语句 语句 语句: :: :select * from employee 
2.4 绑定数据列   6
 
绑定数据列 
按照下列表格将数据集的字段拖入对应单元格内,并作相应的设置。 
单元格  内容  基本属性设置 
A2 emp_sql.country  从上到下 从上到下 从上到下 从上到下扩展,其余默认 
B2 emp_sql.city  从上到下 从上到下 从上到下 从上到下扩展,其余默认 
C2 emp_sql.empname  从上到下 从上到下 从上到下 从上到下扩展,其余默认 
D2 emp_sql.bonus  数据设置:汇总 汇总 汇总 汇总-求和 求和 求和 求和,其余默认 
2.5 汇总 
如图在 D3,D4,D5,中都输入”=sum(D2)” 
 
数据汇总 
3.保存预览 保存预览 保存预览 保存预览 
保存为 
%FineReport_HOME%/WebReport/WEB-INF/reportlets/com/doc/4.5.cpt 
启动服务器,在浏览器中输入以下地址进行浏览: 
http://localhost:8079/WebReport/ReportServer?reportlet=/com/doc/4.5.cpt 
 
 
 
 
 
 
 
 
 
 
更多详情:http://www.finereport.com   7
用Web 报表工具—FineReport 实现条件汇总(三) 
 
条件汇总 
可以看到,上述的报表比上一节的报表多了一个条件汇总,将符合条件的数据进行统计。 
下面我们来看一下在 下面我们来看一下在 下面我们来看一下在 下面我们来看一下在《 《《 《用 用用 用 Web 报表工具实现分组汇总 报表工具实现分组汇总 报表工具实现分组汇总 报表工具实现分组汇总》 》》 》的基础上实现上述报表的过程 的基础上实现上述报表的过程 的基础上实现上述报表的过程 的基础上实现上述报表的过程 
1.设计报表 设计报表 设计报表 设计报表 
1.1 表样设计 
如图在 4.5 的表样的基础上增加“奖金大于 2000 的人数”这一行 
 
表样设计 
1.2 条件汇总 
在 D6 中填入”=sum(D3>2000)” 
2.保存预览 保存预览 保存预览 保存预览 
保存为%FineReport_HOME%/WebReport/WEB-INF/reportlets/com/doc/4.6.cpt 
启动服务器,在浏览器中输入以下地址进行浏览: 
http://localhost:8079/WebReport/ReportServer?reportlet=/com/doc/4.6.cpt 
更多详情:http://www.finereport.com   8
用Web 报表工具—FineReport 实现排名(四) 
 
排名 
下面我们来看一下上述报表的实现过程 下面我们来看一下上述报表的实现过程 下面我们来看一下上述报表的实现过程 下面我们来看一下上述报表的实现过程 
1.连接数据库 连接数据库 连接数据库 连接数据库 frDemo 
2.设计报表 设计报表 设计报表 设计报表 
2.1 新建报表 
2.2 表样设计 
按照下图设计好报表的基本框架 
 
表样设计 
2.3 新建一数据集名为 ds1 
SQL 语句 语句 语句 语句: :: :select 订单.货主城市,订单明细.单价*订单明细.数量  as 订单金额  from 订单,订单
明细  where 订单.订单 ID = 订单明细.订单 ID 
2.4 绑定数据列 
   9
绑定数据列 
按照下列表格将数据集的字段拖入对应单元格内,并作相应的设置。 
单元格  内容  基本属性设置 
A2 ds1.货主城市  从上到下 从上到下 从上到下 从上到下扩展,居中,其余默认 
B2 ds1.订单金额  数据设置:汇总 汇总 汇总 汇总-求和 求和 求和 求和,右对齐,其余默认 
2.5 显示格式设定 
将 B2 设置为保留两位小数的货币类型 
2.6 计算总价排名 
在 C2 中填入’ =count(B2[!0]{B2>=$B2})’ 
‘count(B2[!0]{B2>=$B2})’:指的是统计出 B2 所有扩展出来的单元格中不比本记录 B2 单元格
内容小的个数,即排名。层次坐标 
预览如图 
 
计算总价排名 
2.7 增加区排名 
2.7.1 编辑数据集 
SQL 语句 语句 语句 语句: :: :select 订单.货主城市,订单明细.单价,订单明细.数量,订单明细.单价*订单明细.数量 
as 订单金额,订单.货主地区  from 订单,订单明细  where 订单.订单 ID = 订单明细.订单 ID 
2.7.2 修改表样 
 
修改表样 
2.7.3 绑定数据 
将数据集 ds1 的货主地区字段拖入 A2   10 
2.7.4 计算区排名 
在 E2 中填入’ =count(C2[`0]{A2=$A2 && C2>=$C2})’ 
3.保存预览 保存预览 保存预览 保存预览 
保存为 
%FineReport_HOME%/WebReport/WEB-INF/reportlets/com/doc/4.8.1.cpt 
启动服务器,在浏览器中输入以下地址进行浏览: 
http://localhost:8079/WebReport/ReportServer?reportlet=/com/doc/4.8.1.cpt 
 
 
 
 
 
 
 
 
 
 
 
 
 
更多详情:http://www.finereport.com   11 
用Web 报表工具—FineReport 实现组内序号(五) 
 
组内序号 
上图显示了为每一个公司在自己所在城市内的编号。 
下面我们来看一下上述报表的实现过程 下面我们来看一下上述报表的实现过程 下面我们来看一下上述报表的实现过程 下面我们来看一下上述报表的实现过程 
1.连接数据库 连接数据库 连接数据库 连接数据库 frDemo 
2.设计报表 设计报表 设计报表 设计报表 
2.1 新建报表 
2.2 表样设计 
按照下图设计好报表的基本框架 
 
表样设计 
2.3 新建一数据集名为 ds1 
SQL 语句 语句 语句 语句: :: :select 供应商.城市,供应商.公司名称,供应商.联系人姓名,供应商.联系人职务 from 
供应商   12 
2.4 绑定数据列 
 
绑定数据列 
按照下列表格将数据集的字段拖入对应单元格内,并作相应的设置。 
单元格  内容  基本属性设置 
B2 ds1.城市  从上到下 从上到下 从上到下 从上到下扩展,居中,其余默认 
C2 ds1.公司名称  从上到下 从上到下 从上到下 从上到下扩展,居中,其余默认 
D2 ds1.联系人姓名  从上到下 从上到下 从上到下 从上到下扩展,居中,其余默认 
E2 ds1.联系人职务  从上到下 从上到下 从上到下 从上到下扩展,居中,其余默认 
2.5 设置组内序号 
在 A2 单元格中填入’=&C2’ 
A2 的左父格设置为 C2 
&C2: :: :本条记录的 C2 单元格在所在父格中的位置,即组内编号 
3.保存预览 保存预览 保存预览 保存预览 
保存为 
%FineReport_HOME%/WebReport/WEB-INF/reportlets/com/doc/4.10.1.cpt 
启动服务器,在浏览器中输入以下地址进行浏览: 
http://localhost:8079/WebReport/ReportServer?reportlet=/com/doc/4.10.1.cpt 
 
 
 
 
 
 
 
 
 
更多详情:http://www.finereport.com   13 
用Web 报表工具—FineReport 实现累计报表(六) 
 
累计报表 
下面我们来看一下在 下面我们来看一下在 下面我们来看一下在 下面我们来看一下在《 《《 《Web 报表工具中显示格式和显示值的设置 报表工具中显示格式和显示值的设置 报表工具中显示格式和显示值的设置 报表工具中显示格式和显示值的设置》 》》 》的基础上实现上述报表的过 的基础上实现上述报表的过 的基础上实现上述报表的过 的基础上实现上述报表的过
程 程程 程 
1.设计报表 设计报表 设计报表 设计报表 
1.1 表样设计 
再添加一列,列名为累计奖金,如图 
 
表样设计 
1.2 计算累计奖金 
在 F2 单元格中填入’=F2+G2[A2:-1]’ 
’F2+G2[A2:-1]’:指的是条记录所对应的 F2 单元格内容(即奖金)加上上一条记录的 G2 单元
格内容(即累积奖金)。层次坐标 
1.3 显示格式设置 
G2 显示格式设置为保留两位小数的货币格式 
2.保存预览 保存预览 保存预览 保存预览 
保存为%FineReport_HOME%/WebReport/WEB-INF/reportlets/com/doc/4.2.cpt 
启动服务器,在浏览器中输入以下地址进行浏览: 
http://localhost:8079/WebReport/ReportServer?reportlet=/com/doc/4.2.cpt     14 
用Web 报表工具—FineReport 实现占比报表(七) 
 
占比报表 
下面我们来看一下上述报表的实现过程 下面我们来看一下上述报表的实现过程 下面我们来看一下上述报表的实现过程 下面我们来看一下上述报表的实现过程 
1.连接数据库 连接数据库 连接数据库 连接数据库 frDemo 
2.设计报表 设计报表 设计报表 设计报表 
2.1 新建报表 
2.2 表样设计 
按照下图设计好报表的基本框架 
 
表样设计 
2.3 新建一数据集名为 ds1 
SQL 语句 语句 语句 语句: :: :select 订单明细.单价,订单明细.数量,订单.货主地区,订单明细.数量*订单明细.单价 
as 订单金额 from 订单,订单明细 where 订单.订单 ID = 订单明细.订单 ID 
2.4 绑定数据列 
 
绑定数据列 
按照下列表格将数据集的字段拖入对应单元格内,并作相应的设置。 
单元格  内容  基本属性设置 
A2 ds1.货主地区  从上到下 从上到下 从上到下 从上到下扩展,居中,其余默认 
B2 ds1.数量  数据类型:求和 求和 求和 求和-汇总 汇总 汇总 汇总, ,, ,其余默认 
D2 ds1.订单金额  数据类型:求和 求和 求和 求和-汇总 汇总 汇总 汇总, ,, ,其余默认 
绑定好数据列后,预览效果如下图   15 
 
报表预览 
2.5 求占比 
 
求占比 
在剩余的单元格中填入如图所示的数据,占比求值完成了。 
2.6 显示格式设置 
对 C2 和 E2 进行显示格式设置,设置为保留两位小数的百分比格式 
3.保存预览 保存预览 保存预览 保存预览 
保存为 
%FineReport_HOME%/WebReport/WEB-INF/reportlets/com/doc/4.1.cpt 
启动服务器,在浏览器中输入以下地址进行浏览: 
http://localhost:8079/WebReport/ReportServer?reportlet=/com/doc/4.1.cpt 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
更多详情:http://www.finereport.com   16 
用Web 报表工具—FineReport 制作按段分组报表(八) 
 
按段分组报表 
上图报表是对日期的分组。 
下面我们来看一下上述报表的实现过程 下面我们来看一下上述报表的实现过程 下面我们来看一下上述报表的实现过程 下面我们来看一下上述报表的实现过程 
1.连接数据库 连接数据库 连接数据库 连接数据库 frDemo 
2.设计报表 设计报表 设计报表 设计报表 
2.1 新建报表 
2.2 表样设计 
按照下图设计好报表的基本框架 
 
表样设计 
2.3 新建一数据集名为 ds1 
SQL 语句 语句 语句 语句: :: :select 订单.订购日期,订单明细.数量,订单明细.单价,订单明细.折扣,订单明细.数量*
订单明细.单价 as 订单金额,客户.地区 from 订单明细,订单,客户 where 客户.客户 ID = 订单.
客户 ID and 订单.订单 ID = 订单明细.订单 ID and 订单明细.数量=12 
2.4 绑定数据列 
 
绑定数据列 
按照下列表格将数据集的字段拖入对应单元格内,并作相应的设置。 
单元格  内容  基本属性设置   17 
A3 ds1.地区  从上到下 从上到下 从上到下 从上到下扩展,其余默认 
B1 ds1.订购日期  从左到右 从左到右 从左到右 从左到右扩展,居中,其余默认 
B3 ds1.数量  数据设置:汇总 汇总 汇总 汇总-求和 求和 求和 求和,其余默认 
C3 ds1.订购金额  数据设置:汇总 汇总 汇总 汇总-求和 求和 求和 求和,其余默认 
2.5 自定义分组 
双击 B1,分组设为高级,点击自定义。 
新增四个分组:1996 年圣诞前 年圣诞前 年圣诞前 年圣诞前、 、、 、1996 年圣诞 年圣诞 年圣诞 年圣诞-1997 年国庆 年国庆 年国庆 年国庆、 、、 、1997 年国庆 年国庆 年国庆 年国庆-1998 年五一 年五一 年五一 年五一、 、、 、1998
年五一过后 年五一过后 年五一过后 年五一过后。具体设置见下图 
 
自定义分组 1 
 
自定义分组 2   18 
 
自定义分组 3 
 
自定义分组 4 
3.保存预览 保存预览 保存预览 保存预览 
保存为 
%FineReport_HOME%/WebReport/WEB-INF/reportlets/com/doc/3.6.cpt 
启动服务器,在浏览器中输入以下地址进行浏览: 
http://localhost:8079/WebReport/ReportServer?reportlet=/com/doc/3.6.cpt 
更多详情:http://www.finereport.com   19 
用Web 报表工具—FineReport 制作条件分组报表(九) 
 
条件分组报表 
可以看到上图报表是对不同的字段进行分类,对于这种分类可以不用自定义,而用过滤来实现。  
下面我们来看一下上述报表的实现过程 下面我们来看一下上述报表的实现过程 下面我们来看一下上述报表的实现过程 下面我们来看一下上述报表的实现过程 
1.连接数据库 连接数据库 连接数据库 连接数据库 frDemo 
2.设计报表 设计报表 设计报表 设计报表 
2.1 新建报表 
2.2 表样设计 
按照下图设计好报表的基本框架 
 
表样设计 
2.3 新建一数据集名为 ds1 
SQL 语句 语句 语句 语句: :: : select 客户.城市,客户.地区,订单明细.数量,订单明细.单价,订单明细.单价*订单明细.
数量 as 金额,订单明细.折扣 from 客户,订单,订单明细 where 客户.客户 ID = 订单.客户 ID 
and 订单.订单 ID=订单明细.订单 ID and 订单明细.数量>=45 and 订单明细.数量<=55 
2.4 绑定数据列   20 
 
绑定数据列 
按照下列表格将数据集的字段拖入对应单元格内,并作相应的设置。 
单元格  内容  基本属性设置 
B2,B3,B4,B5  ds1.地区  从上到下 从上到下 从上到下 从上到下扩展,其余默认 
C2,C3,C4,C5  ds1.金额  数据设置:汇总 汇总 汇总 汇总-求和 求和 求和 求和,其余默认 
2.5 设置过滤 
2.5.1 B2 单元格设置过滤 
双击 双击 双击 双击 B2|过滤 过滤 过滤 过滤,过滤条件:数量 数量 数量 数量  大于 大于 大于 大于 50( (( (整型 整型 整型 整型) )) ) 
 
单元格过滤 1 
2.5.2B3 单元格设置过滤 
双击 双击 双击 双击 B3|过滤 过滤 过滤 过滤,过滤条件:折扣 折扣 折扣 折扣  大于 大于 大于 大于 0.1( (( (双精度型 双精度型 双精度型 双精度型) )) )   21 
 
单元格过滤 2 
2.5.3 B4 单元格设置过滤 
双击 双击 双击 双击 B4|过滤 过滤 过滤 过滤,过滤条件:单价 单价 单价 单价  小于 小于 小于 小于 10( (( (整型 整型 整型 整型) )) ) 
 
 
 
 
 
 
 
更多详情:http://www.finereport.com   22 
用Web 报表工具制作重叠分组报表(十) 
 
重叠分组报表 
可以看到这个报表比前两个都复杂,属于重叠分组报表。 
下面我们来看一下上述报表的实现过程 下面我们来看一下上述报表的实现过程 下面我们来看一下上述报表的实现过程 下面我们来看一下上述报表的实现过程  
1.连接数据库 连接数据库 连接数据库 连接数据库 frDemo 
2.设计报表 设计报表 设计报表 设计报表  
2.1 新建报表 
2.2 表样设计 
按照下图设计好报表的基本框架 
 
表样设计 
2.3 新建一数据集名为 ds1 
SQL 语句 语句 语句 语句: :: : select 客户.城市,客户.地区,订单明细.数量,订单明细.单价,订单明细.单价*订单明细.
数量 as 金额, 订单明细.单价*订单明细.数量*订单明细.折扣  as 折扣金额 from 客户,订单,订
单明细 where 客户.客户 ID = 订单.客户 ID and 订单.订单 ID=订单明细.订单 ID and 订单明
细.数量=12 
2.4 绑定数据列 
 
绑定数据列 
按照下列表格将数据集的字段拖入对应单元格内,并作相应的设置。 
单元格  内容  基本属性设置   23 
A2 ds1.地区  从上到下 从上到下 从上到下 从上到下扩展,其余默认 
B2 ds1.金额  数据设置:汇总 汇总 汇总 汇总-求和 求和 求和 求和,其余默认 
C2 ds1.折扣金额  数据设置:汇总 汇总 汇总 汇总-求和 求和 求和 求和,其余默认 
A3 ds1.城市  从上到下 从上到下 从上到下 从上到下扩展,右对齐,左父格 左父格 左父格 左父格为 A2,其余默认 
B3 ds1.金额  数据设置:汇总 汇总 汇总 汇总-求和 求和 求和 求和,其余默认 
C3 ds1.折扣金额  数据设置:汇总 汇总 汇总 汇总-求和 求和 求和 求和,其余默认 
2.5 自定义分组 
2.5.1 地区字段自定义分组 
添加 4 个新的自定义分组:华北 华北 华北 华北,华 华华 华南 南南 南,华东 华东 华东 华东和其他 其他 其他 其他, ,, ,具体设置见图 
 
自定义报表分组 
 
 
 
 
 
更多详情:http://www.finereport.com   24 
用Web 报表工具—FineReport 制作重叠分组报表(十) 
 
重叠分组报表 
可以看到这个报表比前两个都复杂,属于重叠分组报表。 
下面我们来看一下上述报表的实现过程 下面我们来看一下上述报表的实现过程 下面我们来看一下上述报表的实现过程 下面我们来看一下上述报表的实现过程  
1.连接数据库 连接数据库 连接数据库 连接数据库 frDemo 
2.设计报表 设计报表 设计报表 设计报表  
2.1 新建报表 
2.2 表样设计 
按照下图设计好报表的基本框架 
 
表样设计 
2.3 新建一数据集名为 ds1 
SQL 语句 语句 语句 语句: :: : select 客户.城市,客户.地区,订单明细.数量,订单明细.单价,订单明细.单价*订单明细.
数量 as 金额, 订单明细.单价*订单明细.数量*订单明细.折扣  as 折扣金额 from 客户,订单,订
单明细 where 客户.客户 ID = 订单.客户 ID and 订单.订单 ID=订单明细.订单 ID and 订单明
细.数量=12 
2.4 绑定数据列 
 
绑定数据列 
按照下列表格将数据集的字段拖入对应单元格内,并作相应的设置。 
单元格  内容  基本属性设置   25 
A2 ds1.地区  从上到下 从上到下 从上到下 从上到下扩展,其余默认 
B2 ds1.金额  数据设置:汇总 汇总 汇总 汇总-求和 求和 求和 求和,其余默认 
C2 ds1.折扣金额  数据设置:汇总 汇总 汇总 汇总-求和 求和 求和 求和,其余默认 
A3 ds1.城市  从上到下 从上到下 从上到下 从上到下扩展,右对齐,左父格 左父格 左父格 左父格为 A2,其余默认 
B3 ds1.金额  数据设置:汇总 汇总 汇总 汇总-求和 求和 求和 求和,其余默认 
C3 ds1.折扣金额  数据设置:汇总 汇总 汇总 汇总-求和 求和 求和 求和,其余默认 
2.5 自定义分组 
2.5.1 地区字段自定义分组 
添加 4 个新的自定义分组:华北 华北 华北 华北,华南 华南 华南 华南,华东 华东 华东 华东和其他 其他 其他 其他, ,, ,具体设置见图 
 
自定义报表分组   26 
 
自定义报表分组 
 
自定义报表分组   27 
 
自定义报表分组 
2.5.2 城市字段设置过滤 
双击 A3,点击过滤 过滤 过滤 过滤,可选列选择地区 地区 地区 地区,操作符选择被包含 被包含 被包含 被包含,值选择单元格 单元格 单元格 单元格 A2,如图 
 
城市字段过滤 
2.5.3 城市字段自定义分组   28 
添加三个新的组:其中:北京、其中:天津;其中:深圳。具体设置如图 
 
自定义报表分组 
 
自定义分组 
2.6 条件设置 
预览报表,如图   29 
 
报表预览 
我们发现没有城市分组的行也会显示出来,所以要进行一下条件设置,让其隐藏。 
选择 B3,右击 右击 右击 右击|条件属性 条件属性 条件属性 条件属性,增加一个新的条件,点击选择要改变的属性 点击选择要改变的属性 点击选择要改变的属性 点击选择要改变的属性|行高 行高 行高 行高,条件设为等于 等于 等于 等于 0,
如图 
 
报表条件过滤 
2.7 显示格式设置 
C2,C3,D2,D3 均设置为保留两位小数的货币格式。 
3.保存预览 保存预览 保存预览 保存预览   30 
保存为 
%FineReport_HOME%/WebReport/WEB-INF/reportlets/com/doc/3.4.cpt 
启动服务器,在浏览器中输入以下地址进行浏览: 
http://localhost:8079/WebReport/ReportServer?reportlet=/com/doc/3.4.cpt 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
更多详情:http://www.finereport.com   31 
用web 报表工具—FineReport 来弥补Excel 的不足(十一) 
作为专业的报表软件来说,对应用人员要求也相对较高,业务人员很难直接使用,而且大多数报
表工具在表样处理上远不如 EXCEL 方便,故而也不能取代 EXCEL,两种产品会在较长时期内
相辅相成。 
在很多信息化水平不高的公司,业务人员仍然用 Excel 来编制报表和处理数据,但是相对于 web
报表软件,EXCEL 有如下三点不足之处: 
一 一一 一、 、、 、动态刷新报表数据 动态刷新报表数据 动态刷新报表数据 动态刷新报表数据。 。。 。 
EXCEL 能够绘制出非常复杂多样的报表,也可以在表内定义复杂的数据关系,但原始数据
及表的样式都只能是确定的,每张报表都需要临时手工制作,而不能根据业务系统数据库中的数
据自动更新统计报表。举个简单例子,一张班级同学的明细表,当数据库中增加了一名同学时候,
excel表格数据不可能自动更新。web 报表软件制作出来报表,数据直接取自数据库,当前数据
库中的数据变化时,web 报表软件自动计算出新的报表。 
二 二二 二、 、、 、对报表实现权限控制 对报表实现权限控制 对报表实现权限控制 对报表实现权限控制。 。。 。 
地区经理销售经理和销售总监看到报表时有存在差别的,如果用 Excel来做报表,需要给销
售经理和销售总监每人制作一张 Excel表;而 web 报表软件能根据不同角色对应的数据权限调出
来相应的数据,一张 web 报表模板就能解决问题。 
三 三三 三、 、、 、数据填报功能 数据填报功能 数据填报功能 数据填报功能。 。。 。 
如果部门十二个人,每人都有一张员工 Excel 的员工通信录。当某个人电话号码变动时候,
需要更新 excel 的通信录然后给每个人重新发一份 excel 表样;用 web 报表软件做一张可以更新
数据的填报表,然后员工只需要修改电话号码,并且将信息入库。其他员工再次打开数据库时候,
信息就全部更新。 
   web 报表软件在处理报表有上述优势,但作为专业的报表软件来说,对应用人员要求也相
对较高,业务人员很难直接使用,而且大多数报表工具在表样处理上远不如 EXCEL 方便,故而
也不能取代 EXCEL,两种产品会在较长时期内相辅相成。 
  一个好的 web 报表软件应当在展现方面与 EXCEL 尽量兼容,无缝导入导出 Excel,易于与
权限系统继承,具有数据填报功能,这些 FineReport 报表软件等都可以满足。 
 
转载自:比特网新闻中心(http://news.chinabyte.com/110/9147110.shtml) 
 
 
 
 
 
 
更多详情:http://www.finereport.com   32 
用web 报表工具—FineReport 制作主子填报表(十二) 
 
主子填报表 
上图所示为一张主子填报表,分上下两部分,上半部分为订单的主表,下半部分为订单明细,这
两部分数据分别来自不同的物理表,用户修改数据后,同时保存到两张物理表中,并保持数据库
事务一致性。 
下面我们就来看一下实现上述报表的过程 下面我们就来看一下实现上述报表的过程 下面我们就来看一下实现上述报表的过程 下面我们就来看一下实现上述报表的过程  
1.连接数据库 连接数据库 连接数据库 连接数据库 frDemo 
2.设计报表 设计报表 设计报表 设计报表 
2.1 新建报表 
2.2 表样设计 
按照下图设计好报表的基本框架 
 
报表表样设计 
2.3 新建一数据集 
新建数据集 ds1 
SQL 语句 语句 语句 语句: :: :select * from 订单明细 
新建数据库 ds2   33 
SQL 语句 语句 语句 语句: :: :select * from 订单 where 订单 ID=10248 
2.4 绑定数据列 
 
绑定数据列 
按照下列表格将数据集的字段拖入对应单元格内,并作相应的设置。 
单元格  内容  基本属性设置 
B3 ds2.订单 ID  从上到下 从上到下 从上到下 从上到下扩展,其余默认 
D3 ds2.发货日期  从上到下 从上到下 从上到下 从上到下扩展,其余默认 
F3 ds2.到货日期  从上到下 从上到下 从上到下 从上到下扩展,其余默认 
B4 ds2.客户 ID  从上到下 从上到下 从上到下 从上到下扩展,其余默认 
F4 ds2.货主名称  从上到下 从上到下 从上到下 从上到下扩展,其余默认 
B5 ds2.运货商  从上到下 从上到下 从上到下 从上到下扩展,其余默认 
D5 ds2.运货费  从上到下 从上到下 从上到下 从上到下扩展,其余默认 
F5 ds2.货主城市  从上到下 从上到下 从上到下 从上到下扩展,其余默认 
A8 =&B8    
B8 ds1.产品 ID  从上到下 从上到下 从上到下 从上到下扩展,其余默认 
C8 ds1.单价  从上到下 从上到下 从上到下 从上到下扩展,其余默认 
D8 ds1.折扣  从上到下 从上到下 从上到下 从上到下扩展,其余默认 
E8 ds1.数量  从上到下 从上到下 从上到下 从上到下扩展,其余默认 
F8 =C8*E8    
2.5 单元格设置过滤 
双击 B8,进入单元格数据列对话框,点击过滤,设置过滤条件为:订单 订单 订单 订单 ID 等于 等于 等于 等于 B3   34 
 
单元格过滤 
2.6 单元格的表单属性设置 
对 B3,D3,F3,B4,F4,B5,D5,F5,A8,B8,C8,D8,E8,F8 单元格设置表单属性,其中 D3,F3 为日期型,
C8,D8,E8 均为数字型,并且允许小数,其余均为文本类型。 
设置完后如图 
 
表单属性设置 
2.7 设置报表填报属性 
打开报表 报表 报表 报表|报表填报属性 报表填报属性 报表填报属性 报表填报属性对话框,如图所示   35 
 
填报属性设置 
点击左上角的添加按钮,添加一个新的内置 内置 内置 内置 SQL。 
数据库选择 frDemo,模式为空,表选择订单 订单 订单 订单,如图所示   36 
 
添加内置 sql 
点击智能添加字段 智能添加字段 智能添加字段 智能添加字段,出现下图所示的对话框,用来将模板中的所要填入的字段和数据表中的字段
对应,您可以自由选择所需对应的字段。   37 
 
智能添加字段 
添加完后,单击智能添加单 智能添加单 智能添加单 智能添加单元格 元格 元格 元格,填入对应的单元格。 
可以选单元格不改变时不参与更新 单元格不改变时不参与更新 单元格不改变时不参与更新 单元格不改变时不参与更新,这样可以加快填报后数据更新速度。 
添加完后点击确定 确定 确定 确定,显示如下图,可以看到在预览中已经自动生成了相对应的更新数据库的 SQL
语句。   38 
 
智能添加单元格 
再添加一个内置 SQL2,数据库选择 frDemo,模式为空,表选择订单明细。以同样的方式智能
添加字段 à 智能添加单元格,设置好后如图   39 
 
智能添加 sql2 
3.保存预览 保存预览 保存预览 保存预览 
保存为 
%FineReport_HOME%/WebReport/WEB-INF/reportlets/com/doc/form/9.2.cpt 
启动服务器,点击设计器右上角的填报预览,就可以进行预览填报了。 
或者在浏览器里直接数据地址: 
http://localhost:8075/WebReport/ReportServer?reportlet=com/doc/form/9.2.cpt&op=wri
te 
 
 
 
 
 
 
 
更多详情:http://www.finereport.com   40 
用 Web 报表工具—FineReport实现网格式填报表(十三) 
 
网格式填报表 
如图所示,网格式填报表和普通的网格式报表类似,只是多了一个填写的功能。 
下面我们就来看一下实现上述报表的过程 下面我们就来看一下实现上述报表的过程 下面我们就来看一下实现上述报表的过程 下面我们就来看一下实现上述报表的过程 
1.连接数据库 连接数据库 连接数据库 连接数据库 frDemo 
2.设计报表 设计报表 设计报表 设计报表 
2.1 新建报表 
2.2 表样设计 
按照下图设计好报表的基本框架 
 
表样设计 
2.3 新建一数据集名为 emp_sql 
SQL 语句 语句 语句 语句: :: :select * from 订单 where 雇员 ID=5 
2.4 绑定数据列   41 
 
绑定数据列 
按照下列表格将数据集的字段拖入对应单元格内,并作相应的设置。 
单元格  内容  基本属性设置 
A2 ds1.订单 ID  从上到下 从上到下 从上到下 从上到下扩展,其余默认 
B2 ds1.客户 ID  从上到下 从上到下 从上到下 从上到下扩展,其余默认 
C2 ds1.订购日期  从上到下 从上到下 从上到下 从上到下扩展,其余默认 
D2 ds1.发货日期  从上到下 从上到下 从上到下 从上到下扩展,其余默认 
E2 ds1.运货商  从上到下 从上到下 从上到下 从上到下扩展,其余默认 
F2 ds1.运货费  从上到下 从上到下 从上到下 从上到下扩展,其余默认 
G2 ds1.货主地址  从上到下 从上到下 从上到下 从上到下扩展,其余默认 
2.5 单元格的表单属性设置 
点击 A2,右击 右击 右击 右击|表单属性 表单属性 表单属性 表单属性,出现如下对话框,勾选是否可写选项 是否可写选项 是否可写选项 是否可写选项,类型默认为文本 
 
表单编辑器属性 
以同样的方式设置 B2,C2,D2,E2,F2,G2 的表单属性,其中 C2 和 D2 的类型 类型 类型 类型选择日期 日期 日期 日期,设置如图   42 
 
日期属性 
F2 的类型选择数字,设置如图 
 
数字属性 
设置完之后,每个单元格的右下角会出现一个蓝色的小圆圈,表示设置了表单属性,如图   43 
 
表单属性 
2.6 设置报表填报属性 
打开报表 报表 报表 报表|报表填报属性 报表填报属性 报表填报属性 报表填报属性对话框,如图所示 
 
填报属性 
点击左上角的添加按钮,添加一个新的内置 内置 内置 内置 SQL。 
数据库选择 frDemo,模式为空,表选择订单 订单 订单 订单,如图所示   44 
 
新增内置 SQL 
点击智能添加字段 智能添加字段 智能添加字段 智能添加字段,出现下图所示的对话框,用来将模板中的所要填入的字段和数据表中的字段
对应,您可以自由选择所需对应的字段。   45 
 
智能添加字段 
可选列中包含数据表中所有的字段,值对应模板中的数据字段,这里需要建立数据表中的字段和
模板字段的一一对应关系,选择右边的智能添加单元格按钮,可选列自动选择订单 ID,值选择
时你只需要点击相应的单元格 A2,单元格值就会自动传入对话框界面,这里还可以把订单 订单 订单 订单 ID 作
为主键 主键 主键 主键,然后依次当可选列选择客户 客户 客户 客户 ID,值选择对应 B2,以此类推,如图。 
主键 主键 主键 主键:主键的作用在于回填数据库时按照将这个字段作为主键,主键字段的各个字段名是唯一的,
修改后的内容如果是主键中的已有记录则会覆盖以前的内容,如是不同则增加这个记录。   46 
 
智能添加单元格 
可以选单元格不改变时不参与更新,这样可以加快填报后数据更新速度。 
添加完后点击确定,显示如下图,可以看到在预览中已经自动生成了相对应的更新数据库的 SQL
语句。 
 
SQL 更新 
3.保存预览 保存预览 保存预览 保存预览   47 
保存为 
%FineReport_HOME%/WebReport/WEB-INF/reportlets/com/doc/form/2.1.cpt 
启动服务器,点击设计器右上角的填报预览,就可以进行预览填报了。 
 
填报预览 
或者在浏览器里直接数据地址: 
http://localhost:8075/WebReport/ReportServer?reportlet=com/doc/form/2.1.cpt&op=wri
te  
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
更多详情:http://www.finereport.com   48 
用web 报表工具—FineReport 归并分组报表(十四) 
 
归并分组报表 
如图所示,将所有的地区都重新分组,将“华南”和“西南”合为“南部地区”,“华北”和“东北”合为北
部地区,剩下的地区合为“其他” 
下面我们来看一下在 下面我们来看一下在 下面我们来看一下在 下面我们来看一下在《 《《 《用 用用 用 web 报表工具制作不完全分组报表 报表工具制作不完全分组报表 报表工具制作不完全分组报表 报表工具制作不完全分组报表》 》》 》的基础上实现上述报表的过程 的基础上实现上述报表的过程 的基础上实现上述报表的过程 的基础上实现上述报表的过程 
1.设计报表 设计报表 设计报表 设计报表 
1.1 自定义分组 
点击 A2 单元格,右击 右击 右击 右击|单元格属性 单元格属性 单元格属性 单元格属性|数据列 数据列 数据列 数据列,数据设置 数据设置 数据设置 数据设置中分组 分组 分组 分组选择高级 高级 高级 高级, ,, ,如图   49 
 
自定义分组 
点击自定义 自定义 自定义 自定义,出现自定义分组对话框,点击左上角的增加按钮 增加按钮 增加按钮 增加按钮,添加三个新的分组:南部地区 南部地区 南部地区 南部地区、
北部地区 北部地区 北部地区 北部地区和其他 其他 其他 其他,其具体设置如图。 
 
分组属性一南部地区   50 
 
分组属性二北部地区 
 
分组属性三其他地区 
2.保存预览 保存预览 保存预览 保存预览 
保存为 
%FineReport_HOME%/WebReport/WEB-INF/reportlets/com/doc/4.2.cpt 
启动服务器,在浏览器中输入以下地址进行浏览: 
http://localhost:8079/WebReport/ReportServer?reportlet=/com/doc/4.2.cpt     51 
用Web 报表工具—FineReport 制作不完全分组报表(十五) 
 
分组报表和不完全分组报表对比 
比较左右两张图,可以看到右边的图只保留了华东 华东 华东 华东、 华北 华北 华北 华北两个组,其他地区全放置到其他组 其他组 其他组 其他组里了,
之所以这么做,是因为一些组用户并不关心,将其合并起来,增强了报表的可用性。 
下面我们来看一下上述报表的实现过程 下面我们来看一下上述报表的实现过程 下面我们来看一下上述报表的实现过程 下面我们来看一下上述报表的实现过程, ,, ,以 以以 以 FineReport 报表工具 报表工具 报表工具 报表工具为例 为例 为例 为例。 。。 。 
1.连接数据库 连接数据库 连接数据库 连接数据库 frDemo 
2.设计报表 设计报表 设计报表 设计报表 
2.1 新建报表 
2.2 表样设计 
按照下图设计好报表的基本框架 
 
表样设计 
2.3 新建一数据集名为 ds1 
SQL 语句 语句 语句 语句: :: : select 客户.城市,客户.地区,订单明细.数量,订单明细.单价,订单明细.单价*订单明细.
数量 as 金额 from 客户,订单,订单明细 where 客户.客户 ID = 订单.客户 ID and 订单.订单
ID=订单明细.订单 ID and 订单明细.数量=12 
2.4 绑定数据列   52 
 
绑定数据列 
按照下列表格将数据集的字段拖入对应单元格内,并作相应的设置。 
单元格  内容  基本属性设置 
A2 ds1.地区  从上到下 从上到下 从上到下 从上到下扩展,其余默认 
B2 ds1.城市  从上到下 从上到下 从上到下 从上到下扩展,其余默认 
C2 ds1.金额  数据设置:汇总 汇总 汇总 汇总-求和 求和 求和 求和,其余默认 
2.5 自定义分组 
点击 A2 单元格,右击 右击 右击 右击|单元格属性 单元格属性 单元格属性 单元格属性|数据列 数据列 数据列 数据列,数据设置 数据设置 数据设置 数据设置中分组 分组 分组 分组选择高级 高级 高级 高级, ,, ,如图 
 
自定义分组 
点击自定义 自定义 自定义 自定义,出现自定义分组对话框,点击左上角的增加按钮 增加按钮 增加按钮 增加按钮,添加一个新的分组,命名为华 华华 华
北 北北 北。可选列选择地区 地区 地区 地区,操作符选择等于 等于 等于 等于,值选择字符串 字符串 字符串 字符串,填入华东 华东 华东 华东,点击增加 增加 增加 增加,一个分组设置
好了。以同样的方式设置另外两个组,其具体设置如图。   53 
 
自定义分组 1 
 
自定义分组 2   54 
 
自定义分组 3 
3.保存预览 保存预览 保存预览 保存预览 
保存为 
%FineReport_HOME%/WebReport/WEB-INF/reportlets/com/doc/3.2.cpt 
启动服务器,在浏览器中输入以下地址进行浏览: 
http://localhost:8079/WebReport/ReportServer?reportlet=/com/doc/3.2.cpt   
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
更多详情:http://www.finereport.com   55 
用 Web 报表工具—FineReport实现纵向分片(十六) 
 
图 1 
 
图 2 
图 1 是一个多层交叉报表,图 2 是在图 1 所示报表基础上建立的纵向分片报表。纵向分片指的
是报表的纵向被分成了多个区域,每个区域重复规则不同,而又可能相互运算。我们这里所说的
分片,是各片处于一个统一的报表当中,可以互相运算。分片与多源是紧密相关的,往往分片后
不同片需要使用不同的数据源。 
下面我们来看一下上述报表的实现过程 下面我们来看一下上述报表的实现过程 下面我们来看一下上述报表的实现过程 下面我们来看一下上述报表的实现过程 
1 设计报表 设计报表 设计报表 设计报表   56 
1.1 表样设计 
打开已有报表 2.1.1.cpt,界面如图 
 
报表表样设计 1 
我们在此界面上添加一些内容,作出如下图所示的报表界面 
 
报表表样设计 2 
1.2 增加一个数据集名为 ds2 
SQL 语句:select 雇员.雇员 ID,订单明细.产品 ID,雇员.职务,雇员.姓氏+雇员.名字  as 姓名,订
单明细.单价*订单明细.数量  as 业绩  from 雇员,订单,订单明细  where 雇员.雇员 ID = 订单.
雇员 ID and 订单.订单 ID = 订单明细.订单 ID order by 订单.订购日期  asc 
1.3 绑定数据列 
 
绑定数据列 
单元格  内容  基本属性设置 
B4 Ds2.职务  从上到下 从上到下 从上到下 从上到下扩展,居中,其余默认 
C4 Ds2.姓名  从上到下 从上到下 从上到下 从上到下扩展,居中,其余默认 
D4 Ds2.业绩  数据设置:汇总 汇总 汇总 汇总, ,, ,求和 求和 求和 求和 
2.保存预览 保存预览 保存预览 保存预览 
保存为 %FineReport_HOME%/WebReport/WEB-INF/reportlets/com/doc/2.2.cpt 
启动服务器,在浏览器中输入以下地址进行浏览: 
http://localhost:8079/WebReport/ReportServer?reportlet=/com/doc/2.2.cpt     57 
用Web 报表工具—FineReport 制作自由格式报表(十七) 
 
自由格式报表 
在我们的应用中,有时会遇到一条记录包含许多的字段,这些字段都要显示在报表中,比如员工
履历表。如果把它显示在报表的一行上,报表看起来会很拥挤,如果像上图一样设计报表,增强
了可读性和美观性。自由报表中每一条记录不是分布在一行上,而是按照一定的规则散放在多行
上,如果报表中要显示记录的图片字段,那么图片字段可以合并多行来显示,打印的时候可以多
页同时打印出来,每一页都有报表标题。 
自由报表的设计是通过父格的设置来实现的。 
下面我们来看一下上述报表的制作过程 下面我们来看一下上述报表的制作过程 下面我们来看一下上述报表的制作过程 下面我们来看一下上述报表的制作过程, ,, ,依旧以 依旧以 依旧以 依旧以 FineReport 为例 为例 为例 为例。 。。 。 
1.连接数据库 连接数据库 连接数据库 连接数据库 frDemo 
2.设计报表 设计报表 设计报表 设计报表  
2.1 新建报表 
2.2 表样设计 
按照下图设计好报表的基本框架,并将所有单元格父格设为 B2 
 
表样设计 
2.3 新建一数据集名为 emp_sql 
SQL 语句: select 姓氏+名字 as 姓名,出生日期,雇员 ID,雇用日期,职务,邮政编码,地址 from 雇
员 
2.4 绑定数据列   58 
 
绑定数据列 
按照下列表格将数据集的字段拖入对应单元格内,并作相应的设置。 
单元格  内容  基本属性设置 
B2 emp_sql.姓名  从 从从 从上到下 上到下 上到下 上到下扩展,居中,其余默认 
D2 emp_sql.出生日期  从上到下 从上到下 从上到下 从上到下扩展,居中,左父格设为 左父格设为 左父格设为 左父格设为 B2,其余默认 
B3 emp_sql.雇员 ID  从上到下 从上到下 从上到下 从上到下扩展,居中,左父格设为 左父格设为 左父格设为 左父格设为 B2,其余默认 
D3 emp_sql.雇用日期  从上到下 从上到下 从上到下 从上到下扩展,居中,左父格设为 左父格设为 左父格设为 左父格设为 B2,其余默认 
B4 emp_sql.职务  从上到下 从上到下 从上到下 从上到下扩展,居中,左父格设为 左父格设为 左父格设为 左父格设为 B2,其余默认 
D4 emp_sql.邮政编码  从上到下 从上到下 从上到下 从上到下扩展,居中,左父格设为 左父格设为 左父格设为 左父格设为 B2,其余默认  
B5 emp_sql.地址  从上到下 从上到下 从上到下 从上到下扩展,居中,左父格设为 左父格设为 左父格设为 左父格设为 B2,其余默认  
  
3.保存预览 保存预览 保存预览 保存预览 
保存为 
%FineReport_HOME%/WebReport/WEB-INF/reportlets/com/doc/8.1.cpt 
启动服务器,在浏览器中输入以下地址进行浏览: 
http://localhost:8079/WebReport/ReportServer?reportlet=/com/doc/8.1.cpt   
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
更多详情:http://www.finereport.com   59 
Web 报表—FineReport 单元格的定位与拉伸(十八) 
 
单元格定位与伸展 
如上图所示,报表的标题、“报表日期”、“审核员”,会自动根据其他单元格的扩展进行定位与拉
伸。 
下面我们来看一下在 下面我们来看一下在 下面我们来看一下在 下面我们来看一下在《 《《 《用 用用 用 Web 报表工具实现多方面汇总统计 报表工具实现多方面汇总统计 报表工具实现多方面汇总统计 报表工具实现多方面汇总统计》 》》 》的基础上实现上述报表的过程 的基础上实现上述报表的过程 的基础上实现上述报表的过程 的基础上实现上述报表的过程  
1.设计报表 设计报表 设计报表 设计报表  
1.1 表样设计 
  
 
表样设计和数据列绑定 
如图设计好表样,其中 D2 中填入’=todate(today())’,即获得当前日期。C7 的上父格 上父格 上父格 上父格设置为无 无无 无。  
1.2 修改扩展属性 
预览   60 
 
显示的结果即为我们所要的效果。如果我们不想让“报表日期”单元格扩展呢? 
单击 C2,右击,进入数据列 数据列 数据列 数据列属性设置,点击高级 高级 高级 高级,将横向可伸展 横向可伸展 横向可伸展 横向可伸展的复选框选项取消,确定。 
 
取消横向可伸展属性 
  
预览如下图   61 
 
取消横向伸展属性效果图 
可以看到“填报日期”单元格没有扩展,同样,如果我们设置 A1 单元格不横向伸展,会得到类似
的效果,大家可以自己试一下看看,这里就不演示了。 
2.保存预览 
保存为 
%FineReport_HOME%/WebReport/WEB-INF/reportlets/com/doc/7.4.cpt 
启动服务器,在浏览器中输入以下地址进行浏览: 
http://localhost:8079/WebReport/ReportServer?reportlet=/com/doc/7.4.cpt   
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
更多详情:http://www.finereport.com   62 
用 Web 报表工具—FineReport实现多方面汇总统计(十九) 
 
多方面汇总统计 
为了深入了解汇总规则,我们在《用Web 报表工具制作多层交叉报表》的基础上进行多方面的
汇总,如上图所示。 
下面我们来看一下实现上述报表的过程 下面我们来看一下实现上述报表的过程 下面我们来看一下实现上述报表的过程 下面我们来看一下实现上述报表的过程 
1.设计报表 设计报表 设计报表 设计报表 
如下图所示在《用Web 报表工具制作多层交叉报表》的基础上扩展,D2 填入=sum(C2),C3 填
入=sum(C2),D3 填入=sum(D2),C4 填入=sum(C3),D4 填入=sum(D3) 
 
制作表样和数据列绑定 
2.保存预览 保存预览 保存预览 保存预览 
保存为 
%FineReport_HOME%/WebReport/WEB-INF/reportlets/com/doc/7.3.cpt 
启动服务器,在浏览器中输入以下地址进行浏览: 
http://localhost:8079/WebReport/ReportServer?reportlet=/com/doc/7.3.cpt 
 
 
更多详情:http://www.finereport.com   63 
用Web 报表工具—FineReport 制作多层交叉报表(二十) 
 
多层交叉报表 
把《用Web 报表工具制作交叉报表》中的报表稍作改动,形成上图所示多层交叉报表 
下面我们来看一下上述报表的实现过程 下面我们来看一下上述报表的实现过程 下面我们来看一下上述报表的实现过程 下面我们来看一下上述报表的实现过程, ,, ,依旧以 依旧以 依旧以 依旧以 FineReport 为例 为例 为例 为例。 。。 。  
1.设计报表 设计报表 设计报表 设计报表  
1.1 表样设计 
  
 
表样设计 
  点击 B 列,右击插入列,将 A1 和 B1 单元格合并,设置好边框 
1.2编辑数据集,增加性别字段 
单 击 数 据 集 emp_sql, 右 击 编 辑 , SQL 语 句 修 改 为 : select 
degree.name,employee.title,employee.empid,employee.sex  from degree,employee where 
degree.id=employee.degree  
  
1.3 绑定数据列 
   
将 sex 字段拖入 B2 单元格,扩展属性为从上到下 从上到下 从上到下 从上到下,其余默认 
  
1.4 显示值设置 
点击 B2,右击 右击 右击 右击|形态 形态 形态 形态|数据字典 数据字典 数据字典 数据字典|自定义 自定义 自定义 自定义,建立如下图所示数据字典 
   
  
2.保存预览 保存预览 保存预览 保存预览  
 保存为 
%FineReport_HOME%/WebReport/WEB-INF/reportlets/com/doc/7.2.cpt 
启动服务器,在浏览器中输入以下地址进行浏览:   64 
http://localhost:8079/WebReport/ReportServer?reportlet=/com/doc/ 7.2.cpt 
 
自定义数据字典 
  
 
绑定数据列 
 
 
 
 
 
 
 
 
更多详情:http://www.finereport.com   65 
用Web 报表工具—FineReport 制作交叉报表(二十一) 
 
 
 
交叉报表 
交叉表,也是报表当中常见的类型,和分组报表一样,也是基本的报表类型。分组报表是只有行
方向上有分组,而交叉表则是行、列方向都有分组的报表。传统的报表一般都是通过专门的交叉
表生成向导来设计交叉表,FineReport 的数据模型,天然支持行列对称,因此设计交叉表的方
法也很简单。 
下面我们来看一下交叉报表的实现过程 下面我们来看一下交叉报表的实现过程 下面我们来看一下交叉报表的实现过程 下面我们来看一下交叉报表的实现过程  
1.连接数据库 连接数据库 连接数据库 连接数据库 frDemo 
2.设计报表 设计报表 设计报表 设计报表  
2.1 新建报表 
2.2 表样设计 
如图做好报表的基本框架,单元格斜线 
 
表样设计 
2.3 新建一数据集名为 emp_sql 
SQL 语句 语句 语句 语句: :: :select degree.name,employee.title,employee.empid from degree,employee where 
degree.id=employee.degree  
2.4 绑定数据列 
 
绑定数据列   66 
按照下列表格将数据集的字段拖入对应单元格内,并作相应的设置。 
单元格  内容  基本属性设置 
A2 emp_sql.title  从上往下 从上往下 从上往下 从上往下扩展,其余默认 
B1 emp_sql.degree  从左往右 从左往右 从左往右 从左往右扩展,其余默认 
B2 emp_sql.empID  数据设置为汇总 汇总 汇总 汇总–个数 个数 个数 个数 
  
3.保存预览 保存预览 保存预览 保存预览 
保存为 
%FineReport_HOME%/WebReport/WEB-INF/reportlets/com/doc/7.1.cpt 
启动服务器,在浏览器中输入以下地址进行浏览: 
http://localhost:8079/WebReport/ReportServer?reportlet=/com/doc/7.1.cpt 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
更多详情:http://www.finereport.com   67 
用 Web 报表工具—FineReport实现计算列的汇总(二十二) 
 
计算列的汇总 
从上图中可以看出,报表不是简单的对某一列进行汇总,而是对库存量和单价两列的乘积进行汇
总。 
下面我们来看一下上述报表的实现过程 下面我们来看一下上述报表的实现过程 下面我们来看一下上述报表的实现过程 下面我们来看一下上述报表的实现过程,仍然以 仍然以 仍然以 仍然以 FineReport 报表 报表 报表 报表为例 为例 为例 为例。 。。 。 
1.连接数据库 连接数据库 连接数据库 连接数据库 frDemo 
2.设计报表 设计报表 设计报表 设计报表 
2.1 新建报表 
2.2 表样设计 
按照下图设计好报表的基本框架 
 
2.3 新建一数据集名为 pro_sql 
SQL 语句 语句 语句 语句: :: :select 产品名称,库存量,单价,产品 ID from 产品  where 中止 =’0′ and 类别 ID =’5′ 
2.4 绑定数据列 
 
绑定数据列 
按照下列表格将数据集的字段拖入对应单元格内,并作相应的设置。 
单元格  内容  基本属性设置   68 
A2 pro_sql.产品 ID  从上到下 从上到下 从上到下 从上到下扩展,居中,其余默认 
B2 pro_sql.产品名称  从上到下 从上到下 从上到下 从上到下扩展,居中,其余默认 
C2 pro_sql.库存量  从上到下 从上到下 从上到下 从上到下扩展,居中,其余默认 
D2 pro_sql.单价  从上到下 从上到下 从上到下 从上到下扩展,居中,其余默认 
C3 =SUM(C2*D2)  居中 
2.5 显示格式设置 
将 C3,D2 的显示格式设置为货币型,显示格式设置 
3.保存预览 保存预览 保存预览 保存预览 
保存为 
%FineReport_HOME%/WebReport/WEB-INF/reportlets/com/doc/6.5.cpt 
启动服务器,在浏览器中输入以下地址进行浏览: 
http://localhost:8079/WebReport/ReportServer?reportlet=/com/doc/6.5.cpt 
 
 
 
 
 
 
 
 
 
 
 
 
更多详情:http://www.finereport.com   69 
用Web 报表工具—FineReport 进行汇总统计(二十三) 
 
数据汇总 
对于分组过后的数据,时常要对其每一组的数据进行统计,上图就是对每一个地区的公司数进行
汇总统计。 
下面我们来看一下在 下面我们来看一下在 下面我们来看一下在 下面我们来看一下在《 《《 《用 用用 用 Web 报表工具制作多层分组报表 报表工具制作多层分组报表 报表工具制作多层分组报表 报表工具制作多层分组报表》 》》 》的基础上实现上述报表的过程 的基础上实现上述报表的过程 的基础上实现上述报表的过程 的基础上实现上述报表的过程 
1.设计报表 设计报表 设计报表 设计报表 
1.1 表样设计 
在 B3 中输入公司数 公司数 公司数 公司数,A2、A3 合并单元格,C3、D3、E3 合并单元格,在 C3 中输入=count(C2),
并设置好边框,如图 
 
表扬设计和数据列绑定 
count(C2):统计 C2 单元格在当前父格中扩展出来的单元格个数。 
2.保存预览 保存预览 保存预览 保存预览 
保存为 
%FineReport_HOME%/WebReport/WEB-INF/reportlets/com/doc/6.3.cpt 
启动服务器,在浏览器中输入以下地址进行浏览: 
http://localhost:8079/WebReport/ReportServer?reportlet=/com/doc/6.3.cpt     70 
用Web 报表工具—FineReport 制作多层分组报表(二十四) 
 
多层分组报表 
上一篇日志《用Web 报表工具制作分组报表》已经介绍了基本分组报表的设计步骤,现在我们
体验一下多层分组报表。 
1.设计报表 设计报表 设计报表 设计报表  
1.1 表样设计 
选中 A列, ,, ,右击 右击 右击 右击|插入列 插入列 插入列 插入列,在 A1 单元各种写入地区 地区 地区 地区 
1.2 编辑数据集 
点击 custom_sql 数据集,右击 右击 右击 右击|编辑 编辑 编辑 编辑,将 SQL 语句改为:select 城市,公司名称,联系人姓名,联
系人职务,地区 from 客户 
1.3 绑定数据列 
将 custom_sql数据集中的地区字段拖入 A2 单元格中,如图: 
 
绑定数据列 
  
2.保存预览 保存预览 保存预览 保存预览 
保存为 
%FineReport_HOME%/WebReport/WEB-INF/reportlets/com/doc/6.2.cpt 
启动服务器,在浏览器中输入以下地址进行浏览: 
http://localhost:8079/WebReport/ReportServer?reportlet=/com/doc/6.2.cpt     71 
用Web 报表工具—FineReport 制作分组报表(二十五) 
 
分组报表 
分组报表,是所有报表当中最普通,最常见的报表类型,也是所有报表工具都支持的一种报表格
式。从一般概念上来讲,分组报表就是只有纵向的分组。传统的分组报表制作方式是把报表划分
为条带状,用户根据一个数据绑定向导指定分组,汇总字段,生成标准的分组报表。 
而 FineReport 当中,制作分组报表的方式,是拖拽数据列,依靠单元格之间的天然的附属关系
来设计。比如,下面这个报表,我们需要把公司名称按地城市成组,看看各城市都有哪些公司。  
1.连接数据库 连接数据库 连接数据库 连接数据库 frDemo 
2 设计报表 设计报表 设计报表 设计报表  
2.1 新建报表 
2.2 表样设计 
按照下图做好报表的基本框架 
 
表样设计 
2.3 新建一数据集名为 custom_sql 
SQL 语句 语句 语句 语句: :: :select 城市,公司名称,联系人姓名,联系人职务  from 客户  
2.4 绑定数据列 
 
绑定数据列 
按照下列表格将数据集的字段拖入对应单元格内,并作相应的设置。 
单元格  内容  基本属性设置   72 
A2 custom_sql.城市  从上到下扩展,居中,其余默认 
B2 custom_sql.公司名称  从上到下扩展,居中,其余默认 
C2 custom_sql.联系人姓名  从上到下扩展,居中,其余默认 
D2 custom_sql.联系人职务  从上到下扩展,居中,其余默认 
  
3.保存预览 保存预览 保存预览 保存预览 
保存为 
%FineReport_HOME%/WebReport/WEB-INF/reportlets/com/doc/6.1.cpt 
启动服务器,在浏览器中输入以下地址进行浏览: 
http://localhost:8079/WebReport/ReportServer?reportlet=/com/doc/6.1.cpt  
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
更多详情:http://www.finereport.com   73 
用 Web 报表工具—FineReport取数排序的实现(二十六) 
 
web 报表工具取数排序 
报表中,取数展现的时候往往要求记录按照一定的顺序进行排列,我们称为排序。比如想让 《web
报表工具中显示格式和显示值的设置》日志中的报表按照员工 id 进行升序排列。此处依旧以
FineReport 报表工具为例。 
下面我们来看一下实现排序的具体步骤 下面我们来看一下实现排序的具体步骤 下面我们来看一下实现排序的具体步骤 下面我们来看一下实现排序的具体步骤 
1.设计报表 设计报表 设计报表 设计报表  
1.1 方法一:SQL 中排序 
在报表数据集面板中,点击 emp_sql数据集,右击选择编辑,进入数据集编辑对话框,将 SQL
语句修改为:select empid,empname,birthday,sex,degree,bonous  from employee order by 
empid asc 
order by empid asc 就是指按照 empid 升序排列,如果要按照降序排列,则写 order by empid 
desc 
1.2 方法二:单元格属性设置 
点击 A2 单元格,进入该单元格的数据列属性设置对话框,点击高级,或者直接点击表格上面工
具栏中的高级按钮(图 1),在排列顺序下拉框中选择升序(图 2),点击确定 
 
图一 
    74 
 
图二 
2.保存预览 保存预览 保存预览 保存预览 
保存为 
%FineReport_HOME%/WebReport/WEB-INF/reportlets/com/doc/3.6.cpt 
启动服务器,在浏览器中输入以下地址进行浏览: 
http://localhost:8079/WebReport/ReportServer?reportlet=/com/doc/3.6.cpt 
 
 
 
 
 
 
 
更多详情:http://www.finereport.com   75 
Web 报表工具—FineReport增加动态背景色(二十七) 
 
 
报表动态背景色 
 一部分报表因为数据的繁冗单一,设计完之后,整体感观不是很清晰。这时如果对报表做一些
简单的设置,如上图背景色间隔行显示,可以让报表美观的同时,还能方便我们更清楚的查看数
据! 
下面我们讲述一下在 下面我们讲述一下在 下面我们讲述一下在 下面我们讲述一下在《 《《 《Web 报表工具中显示格式和显示值的设置 报表工具中显示格式和显示值的设置 报表工具中显示格式和显示值的设置 报表工具中显示格式和显示值的设置》 》》 》的基础上实现上述报表的过 的基础上实现上述报表的过 的基础上实现上述报表的过 的基础上实现上述报表的过
程 程程 程  
1.设计报表 设计报表 设计报表 设计报表  
条件高亮显示 
F2 单元格右击 单元格右击 单元格右击 单元格右击|条件属性 条件属性 条件属性 条件属性或菜单中的格式|单元格条件加亮或点击工具栏中的 按钮,出现如下图
所示条件属性对话框。   76 
 
点击左上方的添加按钮 ,添加一个新的高亮条件,点击选择要改变的属性,选择背景色,如
图设置背景色,并在后面的下拉框中选择当前行,选择公式,在公式一栏中输入 row()%2==0(即
选择偶数行),点击增加。   77 
 
修改报表条件属性 
  
2.保存预览 保存预览 保存预览 保存预览 
保存为 
%FineReport_HOME%/WebReport/WEB-INF/reportlets/com/doc/3.4.cpt 
启动服务器,在浏览器中输入以下地址进行浏览: 
http://localhost:8079/WebReport/ReportServer?reportlet=/com/doc/ 3.4.cpt 
 
 
 
 
更多详情:http://www.finereport.com   78 
Web 报表工具FineReport 高亮显示设置(二十八) 
 
报表中展现的数据可能会非常多,有效信息和其它信息之间的区别有时不能清晰展现,同时使用
条件加亮功能,可以轻松实现该需求。 
比如以上表格中,您希望将奖金大于 2500 的记录用红色表示出来。 
下面我们讲述一下在 下面我们讲述一下在 下面我们讲述一下在 下面我们讲述一下在上篇日志 上篇日志 上篇日志 上篇日志《 《《 《Web 报表工具中显示格 报表工具中显示格 报表工具中显示格 报表工具中显示格式和显示值的设置 式和显示值的设置 式和显示值的设置 式和显示值的设置》 》》 》的基础上实现上述 的基础上实现上述 的基础上实现上述 的基础上实现上述
报表的过程 报表的过程 报表的过程 报表的过程 
1.  设计报表 设计报表 设计报表 设计报表 
1.1 条件高亮显示 
F2 单元格右击 单元格右击 单元格右击 单元格右击|条件属性 条件属性 条件属性 条件属性或菜单中的格式 格式 格式 格式|单元格条件加亮 单元格条件加亮 单元格条件加亮 单元格条件加亮或点击工具栏中的 按钮,出现如下图
所示条件属性对话框。  79 
 
点击左上方的添加按钮 ,添加一个新的高亮条件,点击选择要改变的属性,选择前景色,将前
景色设置为红色,并在后面的下拉框中选择当前行,条件设置为操作符大于或等于 2500,点击增  80 
加,如图。
 
2.  保存预览 
保存为 
%FineReport_HOME%/WebReport/WEB-INF/reportlets/com/doc/3.3.cpt 
启动服务器,在浏览器中输入以下地址进行浏览:
http://localhost:8079/WebReport/ReportServer?reportlet=/com/doc/ 3.3.cpt  
 
 
 
 
 
更多详情:http://www.finereport.com   81 
Web 报表工具FineReport 中显示格式和显示值的设置(二十九)  
编号 编号 编号 编号  姓名 姓名 姓名 姓名  生日 生日 生日 生日  性别 性别 性别 性别  学历 学历 学历 学历  奖金 奖金 奖金 奖金 
1 Nancy  1948-12-08  女  Middle  ¥2000.00 
2 Andrew  1952-02-19  男  High School ¥3000.00 
3 Janet 1963-08-30  女  Middle  ¥2500.00 
4 Margaret  1937-09-19  女  College  ¥2600.00 
5 Steven  1955-03-04  男  Junior  ¥2100.00 
6 Michael  1963-07-02  男  Master  ¥3500.00 
7 Robert  1960-05-29  男  Junior  ¥2900.00 
8 Laura 1958-01-29  女  College  ¥1800.00 
9 Anne 1966-01-27  女  Junior  ¥2200.00 
10  Chris 1970-09-18  男  Junior  ¥2300.00 
如图所示,通过显示格式和显示值的设置,使报表可读性增强,更加美观。 
下面我们来看一下上述报表的实现过程 下面我们来看一下上述报表的实现过程 下面我们来看一下上述报表的实现过程 下面我们来看一下上述报表的实现过程, ,, ,以 以以 以 FineReport 为例 为例 为例 为例。 。。 。 
1.  连接数据库 连接数据库 连接数据库 连接数据库 frDemo  
2.  设计报表 设计报表 设计报表 设计报表  
2.1 新建报表 
2.2 表样设计 
按照下图设计好报表的基本框架 
 
此示例的基本框架 
2.3 新建一数据集名为 emp_sql 
SQL 语句:select empid,empname,birthday,sex,degree,bonous from employee 
2.4 绑定数据列 
 
数据列的绑定   82 
按照下列表格将数据集的字段拖入对应单元格内,并作相应的设置。 
单元格  内容  基本属性设置 
A2 emp_sql.EMPID  从上到下 从上到下 从上到下 从上到下扩展,居中,其余默认 
B2 emp_sql.EMPNAME  从上到下 从上到下 从上到下 从上到下扩展,居中,其余默认 
C2 emp_sql.BIRTHDAY  从上到下 从上到下 从上到下 从上到下扩展,居中,其余默认 
D2 emp_sql.SEX  从上到下 从上到下 从上到下 从上到下扩展,居中,其余默认 
E2 emp_sql.DEGREE  从上到下 从上到下 从上到下 从上到下扩展,居中,其余默认 
F2 emp_sql.BONUS  从上到下 从上到下 从上到下 从上到下扩展,居中,其余默认 
3.  显示格式设定 显示格式设定 显示格式设定 显示格式设定  
•  日期字段显示格式的设定 
C2 单元格右击 单元格右击 单元格右击 单元格右击|样式 样式 样式 样式|日期 日期 日期 日期,选择 yyyy-MM-dd 格式(如图),点击确定  
 
日期格式 
•  奖金字段显示格式的设定  
F2 单元格右击 单元格右击 单元格右击 单元格右击|样式 样式 样式 样式|货币 货币 货币 货币,选择显示为¥12345.68 的格式(如图),点击确定    83 
 
货币格式 
4.  显示值设定  
•  性别字段显示值的设定 
双击 D2 单元格弹出单元格数据列(link)设置框,点击高级,在自定义显示值内输入 if($$$==1,’
男’,'女’),点击确定。If(条件 条件 条件 条件,值 值值 值 1,值 值值 值 2):如果满足条件,等于值 1,若不满足,等于值 2  
 
性别字段显示值 
5.  学历字段显示值的设定 
增加数据集 deg_sqlSQL 语句 语句 语句 语句:elect ID,name from degreesE2 单元格右击 单元格右击 单元格右击 单元格右击|形态 形态 形态 形态|数据字典 数据字典 数据字典 数据字典|数据 数据 数据 数据
查询 查询 查询 查询,数据集名称选择报表数据集下的 deg_sql,列序号(实际值)设为 1,列序号(显示值)设
为 2(图 1),预览(图 2),点击确定。列序号 列序号 列序号 列序号( (( (实际值 实际值 实际值 实际值) )) )就是在报表设计时显示的编码字段所在
的列序号,也就是需要在报表设计时放置到报表当中的字段。 
列序号 列序号 列序号 列序号( (( (显示值 显示值 显示值 显示值) )) )是指编码所代表的实际数据所在的列序号,也就是通过数据字典转换之后,在
报表预览时看到的实际数据。    84 
 
定义数据字典 
 
预览数据字典 
6.  保存预览 保存预览 保存预览 保存预览 
保存为%FineReport_HOME%/WebReport/WEB-INF/reportlets/com/doc/3.2.cpt  
启动服务器,在浏览器中输入以下地址进行浏览: 
            http://localhost:8079/WebReport/ReportServer?reportlet=/com/doc/ 3.2.cpt 
更多详情:http://www.finereport.com   85 
Web 报表工具FineReport 填报之日期自动计算(三十) 
 
日期自动计算 
如图所示,多了一个年龄字段,而在数据库中没有这个字段,这就得通过日期的计算获得。 
下面我们就来看一下实现上述报表的过程 下面我们就来看一下实现上述报表的过程 下面我们就来看一下实现上述报表的过程 下面我们就来看一下实现上述报表的过程 
1.设计报表 设计报表 设计报表 设计报表 
1.1 表样设计 
按照下图设计好报表的基本框架 
 
报表表样设计 
1.2 日期自动计算 
在 E6 单元格中填入”=year(now())-year(E5)+1” 
“year(now())-year(E5)+1”:用当前年份减去出生年份再加一即为年龄。 
3.保存预览 保存预览 保存预览 保存预览 
保存为 
%FineReport_HOME%/WebReport/WEB-INF/reportlets/com/doc/form/5.3.cpt 
启动服务器,点击设计器右上角的填报预览,就可以进行预览填报了。 
或者在浏览器里直接数据地址: 
http://localhost:8075/WebReport/ReportServer?reportlet=com/doc/form/5.3.cpt&op=wri
te  
更多详情:http://www.finereport.com   86 
Web 报表工具FineReport填报之数值自动计算(三十一) 
 
报表填报之自动计算 
自动计算,就是指填报的时候,用户录入了某些数据后,系统会自动算出另外一部分单元格的值,
由此简化用户的输入,减少错误率。如图所示,当用户输入货物数量后,系统自动根据运货费和
货物数量算出总运货费。 
下面我们来看一下实现上述报表的过程 下面我们来看一下实现上述报表的过程 下面我们来看一下实现上述报表的过程 下面我们来看一下实现上述报表的过程。 。。 。 
1.连接数据库 连接数据库 连接数据库 连接数据库 frDemo 
2.设计报表 设计报表 设计报表 设计报表 
2.1 新建报表 
2.2 表样设计 
按照下图设计好报表的基本框架 
 
报表表样设计 
2.3 新建一数据集名为 emp_sql 
SQL 语句 语句 语句 语句: :: :select * from 订单 where 雇员 ID=5 
2.4 绑定数据列 
 
绑定数据列 
按照下列表格将数据集的字段拖入对应单元格内,并作相应的设置。 
单元格  内容  基本属性设置 
A2 emp_sql.订购日期  从上到下 从上到下 从上到下 从上到下扩展,其余默认 
B2 emp_sql.发货日期  从上到下 从上到下 从上到下 从上到下扩展,其余默认 
C2 emp_sql.运货商  从上到下 从上到下 从上到下 从上到下扩展,其余默认 
D2 emp_sql.运货费  从上到下 从上到下 从上到下 从上到下扩展,其余默认 
E2 emp_sql.货主地址  从上到下 从上到下 从上到下 从上到下扩展,其余默认 
2.5 计算总运货费   87 
在 G2 单元格中填入”=E2*F2” 
2.6 单元格的表单属性设置 
点击 D2,右击 右击 右击 右击|表单属性 表单属性 表单属性 表单属性,出现如下对话框,勾选是否可写选项 是否可写选项 是否可写选项 是否可写选项,类型选择数字,设置如图 
 
表单属性设置 
设置完后显示如图 
 
表单可写属性显示 
3.保存预览 保存预览 保存预览 保存预览 
保存为 
%FineReport_HOME%/WebReport/WEB-INF/reportlets/com/doc/form/3.9.2.cpt 
启动服务器,点击设计器右上角的填报预览,就可以进行预览填报了。 
或者在浏览器里直接数据地址: 
http://localhost:8075/WebReport/ReportServer?reportlet=com/doc/form/3.9.2.cpt&op=w
rite 
 
更多详情:http://www.finereport.com   88 
web 报表工具FineReport 填报之合法性数据检查(三十二) 
 
 
 
数据校验 
如图所示,当用户在 F6 中输入了不符合条件的数据,点击数据校验 数据校验 数据校验 数据校验或者提交 提交 提交 提交时就会弹出错误对
话框,提示输入了非法的数据 
下面我们来看一下在 下面我们来看一下在 下面我们来看一下在 下面我们来看一下在《 《《 《用 用用 用 Web 报表工具实现网格式填报表 报表工具实现网格式填报表 报表工具实现网格式填报表 报表工具实现网格式填报表》 》》 》的基础上实现上述报表的过程 的基础上实现上述报表的过程 的基础上实现上述报表的过程 的基础上实现上述报表的过程 
1.设计报表 设计报表 设计报表 设计报表 
1.1 设置数据校验 
点击报表 报表 报表 报表|填报属性 填报属性 填报属性 填报属性|数据校验 数据校验 数据校验 数据校验打开数据校验对话框,如图   89 
 
打开报表填报属性 
点击插入 插入 插入 插入,插入一条数据校验记录,输入如下数据   90 
 
设置报表填报属性 
2.保存预览 保存预览 保存预览 保存预览 
保存为 
%FineReport_HOME%/WebReport/WEB-INF/reportlets/com/doc/3.8.3.cpt 
启动服务器,在浏览器中输入以下地址进行浏览: 
http://localhost:8079/WebReport/ReportServer?reportlet=/com/doc/3.8.3.cpt 
 
 
 
 
 
 
 
 
 
 
 
 
 
更多详情:http://www.finereport.com   91 
 
第三章 总结 
以上一共讲述了 FineReport 使用过程中 32 个经常涉及的报表问题,并以图文并茂的方式教
大家如何使用 FineReport. 希望对正在学习 FineReport 报表或是对 FineReport 报表感兴趣的
朋友能有个全面的认识。 
 
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 房间里有蟋蟀叫怎么办 油桶被老鼠咬了怎么办 美的库卡7年半后怎么办 深成指b跌光了怎么办 车贩子不办过户怎么办 荣威750v6很耗油怎么办 荣威550没电了怎么办 4s店倒闭贷款车怎么办 在单位有人整你怎么办 力帆620噪音大是怎么办 离职证明不给开怎么办 交离职报告不批怎么办 比亚迪s7噪音大怎么办 比亚迪f3噪音大怎么办 买房首付差10万怎么办 车贷合同没给我怎么办 车内老是有灰尘怎么办 车在北京怎么办进京证 五证合一后社保怎么办 五证齐全烂尾了怎么办 5万罚款交不起怎么办 炼铅环保手续要怎么办 贴膏药过敏红肿太痒了怎么办 没工作想贷款5万怎么办 燃气管超过2米了怎么办 建行燃气卡丢了怎么办 周浦燃气卡丢了怎么办 长沙燃气卡丢了怎么办 郑州燃气卡丢了怎么办 租房燃气卡丢了怎么办 洛阳燃气卡丢了怎么办 零线火线都带电怎么办 档案里年龄错了怎么办 档案年龄大了怎么办呢 吃菌子致幻了怎么办 野外吃了毒蘑菇怎么办 头顶头发稀少怎么办头顶头发稀 遇见无赖的人该怎么办 扶了老人被讹诈怎么办 遇见碰瓷讹人的怎么办 假机油用了4年怎么办