finereport报表软件技术培训手册内容摘要:

就可以在浏览器中进行浏 览。 动态隔间运算 层次坐标原理 由于 FineReport 采用的数据模型,是通过单元格绑定数据列,扩展来实现数据的读取和展现。 那么也就是说在设计界面的一个格子,可能对应扩展后得到多条数据。 28 但是通常像 EXCEL 中设计表格的时候,需要所得的数据进行一些运算,在 FineReport 当中,也就是要对数据列扩展返回的结果集进行运算。 较为常见的运算:对扩展出的数据进行编号,数据排名,同期比与环比,占比,累计等。 动态格间运算包括两种运算规则:绝对层次坐标,相对层次坐标。 下面就概念 进行一个简单的介绍: 1. 绝对层次坐标 在进行模板设计时,单元格尚未进行扩展,但是单元格的表达式往往需要对扩展后的单元格进行运算。 例如, A1 单元格扩展成了A1A5,如果其中一个单元格的表达式希望对扩展后的 A2 和 A3 进行求和,在扩展前,表达式很难描述这样的关系。 对扩展后的单元格进行唯一性的定义,这就是单元格的层次坐标。 单元格扩展后的定位规则 层次坐标的表达式如图: 说明: Cellx:目标单元格,是 Lk,Lk1...L1。 Tk,Tk1...T1 的附属格。 29 Lk: Cellx 的左父格, Lk 的次序是从远到近的,也就是从离当前最远的左父格开始 Tk: Cellx 的上父格, Tk 的次序是从远到近的,也就是从离当前最远的上父格开始 lk:左父格 LK 扩展后的次序,即扩展后的第几个单元格,如果不指定 lk 或者 lk 为 0,则表 示为当前表达式所在单元格所属的当前左父格 LK tk:上父格 Tk 扩展后的次序,即扩展后的第几个单元格,如果不指定 tk 或者 tk 为 0,则表示为当前表达式所在单元格所属的当前上父格 TK 注:左父格和上父格的坐标通过分号来隔开 例如:下图模板 30 对照上面的模板,若有如下公式: ► C1[A1:1,B1:2]: A1:1,表示 A1 单元格扩展出来的第一个单元格; B1:2,表示在 A1 的第一个扩展格区域内 B1 扩展出来的第二个单元格; C1[A1:1,B1:2]就表示在这个 B1 的第二个扩展格区域下的 C1 单元格,即值为 6 的单元格,所以返回值为 6 31 ► C1[A1:1],表示 A1 父格的第一个扩展格下的所有 B1 扩展格下的 C1 单元格,即值为 5, 6, 7 的单元格,返回的值以数组的形式显示: [5,6,7] ► C1[B1:1],如果这个公式写在单元格在 D1 中,即写在以 C1为父格的单元格中,则返回的 C1 单元格所属的 A1 左父格为当前 C1所属的左父格,公式就表示当前 A1 父 格下的 B1 的第一个扩展格区域中的 C1单元格,得到的结果如图: 若这个公式写在其他与 A1,B1,C1 单元格没有关系的单元格中,则返回的是 A1 所有扩展格下 B1 的第一个扩展格区域中的 C1 单元格,即值为 5, 10, 15, 20 的单元格, 返回值为: [5,10,15,20] 2. 相对层次坐标 32 报表中常常需要计算同期比、比上期之类的与 时间相关的运算,而这些运算往往需要用到下一行的数据减上一行数据,后一列数据减前一列数据,等等,这种涉及到行间、列间的运算,称为位移运算,这种位移运算通过相对层次坐标来表示。 单元格扩展后的定位规则 与绝对层次坐标类似 , Lk和 Tk 分别表示 Cellx的左父格和上父格,不同的是这里的 177。 lk 和 177。 tk 表示的是对应父格的位移量,对于左父格来说, +表示向下移动 lk 个单元格, 表示向上移动 lk 个单元格;对于上父格来说, +表示向右移动 tk 个单元格, 表示向左移动 tk 个单元格。 如果不指定所在单元格 lk,则表示为当前所在的父格 LK 例子:依旧使用绝对层次坐标中的模板,在 D1 单元格中输入公式 C1[A1:1],则返回的是当前 A1 扩展出来的上一格,对应 B1 扩展出来的值,如下图: 33 累计 累计的方式有很多,例如简单分组累计,交叉报表累计等,下面我们一一介绍各种累计的实现方法。 简单分组 逐层累计 简单分组 跨曾累计 交叉报表累计 简单分组累计 逐层累计 逐层累计,就是将每层与上一层数据相加得到这一层的数据结果,如下图所示: 34 该报表的设计过程如下: 1. 连接数据库 FRDemo 2. 设计报表 新建报表 表样设计 按照下图设计好报表的基本框架 新建一数据集名为 ds1 SQL 语句: SELECT MONTH(SIGNDATE) AS MONTH,ORDERID,AMOUNT FROM ORDERS 35 绑定数据列 按照下列表格将数据集的字段拖入对应单元格内,并作相应的设置 单元格 数据集 数据列 属性 A4 ds1 MONTH 从上到下扩展,居中,其余默认 B4 ds2 ORDERID 数据设置:汇总 |个数,居中,其余默认 C4 ds2 AMOUNT 数据设置:汇总 |求和,居中,其余默认 在 D4 单元格中写入累计公式 =D4[A4:1]+C4。 D4[A4:1]写在D4 单元格中,所以 D4 就是当前格, A4:1 表示当前单元格所属的A4 分组格的上一个格子所对应的 D4 单元格,也就是当前 D4 格子的上一行的值。 所以 D4[A4:1]+C4 表示的就是将 C4 格子中的值累计相加。 可得最终模板: 36 3. 保存预览 保存为 %FR_HOME%\WebReport\WEBINF\reportlets\\doc\Tutorial\advanced\Cacuate_Between_Cells\ 点击设计器界面的分页预览就可以在浏览器中进行浏览。 在上面一张报表的基础上我们还可以有一个稍微复杂一些的计算。 例如,我们在这张报表当中计 算的是合同成交量,那么如果我们希望在上一年的数据基础上进行累加,要怎么做呢。 下图是这个报表的设计图: 从设计图里我们可以看到,这里我们要在一个初始值的基础上对数 据 进 行 累 计。 所 以 在 D5 单 元 格 中 的 公 式 就 是 37 =IF(amp。 A5==1,D4,D5[A5:1])+C5。 amp。 A5 即判断 D5 的位置,如果 amp。 A5的返回值为 1,即 D5 是 A5 分组格区域内的第一行值,那么读取 D4的值作为累计的第一个值,如果 amp。 A5 的返回值不为 1,则读取上一个D5 的值。 最 后 将 这 张 报 表 保 存为 %FR_HOME%\WebReport\WEBINF\reportlets\\doc\Tutorial\advanced\Cacuate_Between_Cells\ 简单分组累计 跨层累计 如上图所示,需要将每个销售员的 销售额及产品成本进行累计。 跨层累计是相对于逐层累计而言的,很多报表由于格式的变化或具体的应用,扩展之后不是每行都有数据,而此时我们仍需要将有数据的进行累加,这时在公式编写方面就会有变化。 该报表的设计过程如下: 1. 连接数据库 FRDemo 2. 设计报表 38 新建报表 表样设计 按照下图设计好报表的基本框架 新建数据集 ds1 SQL 语句 : SELECT ORDERID,PRODUCTNAME,OR,PRICE,COST FROM ORDERSDETAIL,PRODUCT WHERE = 绑定数据列 按照下列表格将数据集的字段拖入对应单元格内,并作相应的设置 单元格 数据集 数据列 属性 A3 ds1 ORDERID 从上到下扩展,居中,其余默认 39 B4 ds1 PRODUCTID 从上到下扩展,左父格: A3,其余默认 C4 ds1 PRODUCTNAME 从上到下扩展,居中 ,其余默认 D4 ds1 QUANTITY 从上到下扩展,居中,其余默认 E4 ds1 PRICE 从上到下扩展,居中,其余默认 H4 ds1 COST 从上到下扩展,居中,其余默认 跨层累积 在 F4 单元格中写入公式: =D4*E4,在 G4 单元格中写入公式:=if(amp。 B4 1,G4[B4:1],G4[A3:1,B4:!1]) + F4。 该公式中 amp。 C4 即判断 G4 的位置,如果 amp。 C4 的返回值大于 1,那么读取上一个 G4 的值,如果 amp。 C4 的返回值不大于 1,则读取上一层最后一个扩展单元格的值,同样 在 I4 单元格中写入公式: =D4*H4,J4 单元格中写入公式:=if(amp。 B4 1,J4[B4:1],J4[A3:1,B4:!1]) + I4,对销售总成本进行累加。 可得最终模板: 3. 保存预览 40 保存为 %FR_HOME%\WebReport\WEBINF\reportlets\\doc\Tutorial\advanced\Cacuate_Between_Cells\ 点击设计器界面的分页预览就可以在浏览器中进行浏览。 交叉报表累计 上图这张报表,是一个简单的交叉表,纵向是按照班级的分组,横向是按照科目的分组。 交叉表的累计比上述报表复杂的一点是累计的单元格不仅仅会左父格纵向扩展开来,也会随着上父格横向扩展开来,但对 FineReport 来说很轻松就可以解决。 该报表的设计过程如下: 1. 连接数据库 FRDemo 2. 设计报表 新建报表 新建一数据集名为 ds1 SQL 语句: SELECT * FROM STSCORE 绑定数据列 41 按照下列表格将数据集的字段拖入对应单元格内,并作相应的设置 单元格 数据集 数据列 属性 A2 ds1 CLASSNO 从上到下扩展,居中,其余默认 B1 ds1 COURSE 从左到右扩展,居中,其余默认 B2 ds1 GRADE 数据设置:汇总 |求和,居中,其余默认 在 C2 单元格中写入公式 : =B2+C2[A2:1]。 其中 C2[A2:1]表达式中, A2:1 表示 A2 分组格的上一个格子, C2 表示当前格所在的 C2 单元格。 最终模板如下: 3. 保存预览 保存为 %FR_HOME%\WebReport\WEBINF\reportlets\doc\Tutorial\advanced\Caculate_Between_Cells\ 点击设计器界面的分页预览就可以在浏览器中进行浏览 42 具体内容为制作展示模板 》高级报表设计 》动态隔间运算 》层次坐标原理 +累计 分页 动态重复标题 动态重复标题行是指在报表数据分多页显示的时候,通过重复标题的设置,将左表头或者上表头重复显示在每一页当中。 如下图所示: 第一页: 第二页:。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。