您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > FineReport培训(一)
第1页FineReport产品培训FineReportUserTraining目录基本报表高级分组报表报表概述报表基本概念层次坐标及应用图表数据钻取第3页报表概述——设计理念FineReport的设计理念:Excel和数据列的结合意味着在用FineReport设计报表的时候,只需要理解一些与单元格绑定数据列有关的操作即可。第4页报表概述——报表系统制作流程制作报表套打报表,查询报表,填报报表,图表地图等报表模板拖拽、定义扩展方式、父格设置添加参数、图表、可写控件其他属性2报表集成报表的部署和集成独立部署嵌入式部署3集成web页面1数据准备定义数据连接定义数据集数据库表、视图、存储过程Excel、txt、xml数据源程序数据源使用报表客户端访问权限控制定时调度远程修改4第5页报表概述——报表分类•操作与excel类似•跟Excel无缝导入导出•公式完全兼容普通统计报表•在普通报表的基础上,可增设过滤条件,根据输入的条件值展示出不同的数据•控件丰富参数查询报表•能够在线采集数据,并可将数据保存入库•完全和Excel兼容,且支持excel的导入导出•数据来去无关•有批量导入,批量修改等快捷功能填报报表第6页报表基本概念——扩展扩展的概念扩展,就是指报表行列数随数据记录的变化而变化。在设计时一个单元格中,绑定一个数据列,得到的报表数据是根据数据操作返回的记录进行显示,即数据库返回多少条记录,我们在预览时就会得到多少条对应的记录。制作模板时,我们将某个字段拖进一个单元格中,其实这个字段已包含多条记录,由多个值组成,相当于一个list。模板进行计算时这个字段中的记录会依次显示出来,这就是数据的扩展。数据列拖入一个单元格扩展出记录第7页报表基本概念——扩展纵向扩展扩展是有方向的横向扩展不扩展第8页当单元格左侧或上方相邻的单元格具有扩展属性时,单元格默认其左侧相邻单元格为其左父格,默认上方相邻的单元格为其上父格。。。单元格之间并不是类似Excel那样的平行关系,而是父子关系,其本质上是一种附属关系,而附属格是以其父格作为过滤条件的。当一个单元格,比如C2单元格要找其默认父格,首先,向左寻找相邻的单元格,即B2,如果B2是纵向扩展单元格,则B2就是C2的默认左父格;如果B2不具有扩展属当一个单元格,则继续向左寻找至A2单元格,若A2是纵向扩展单元格,则A2是B2的默认左父格;。。如果A2仍不具有扩展属性,则继续向左寻找,直到找到一个纵向扩展单元格为止。如果一直没有找到,则C2就没有默认左父格。。。父、子格间的关系,还可通过自定义来改变,一个单元格的父格可自定义为其它任意的单元格。。父子格的默认寻找规则报表基本概念——父子格父子格的概念——父子格是分组报表的基础。第9页报表基本概念——数据设置列表分组汇总第10页基本报表——列表式报表第11页基本报表——分组报表纵向分组第12页基本报表——分组报表——汇总汇总有两种方式:1)拖拽数据列到单元格,设置为汇总|求和,如D3;2)在单元格里面直接写公式=sum(),如D4\D5。分汇总/总汇总是根据对父格的设置来达成的。第13页基本报表——交叉报表——行列对称概念我们也提到了FineReport与传统的电子表格工具最大的区别之一,就是行列对称:所有纵向能够得到的效果,在横向也是同样的。因此与纵向扩展对应的,就是横向扩展。从原理的角度来讲,横向扩展的所有理论与效果和纵向扩展都是相同的,所不同的就是扩展的方向。第14页基本报表——交叉报表交叉表,也是基本的报表类型。分组报表是只有行方向上有分组,而交叉表则是行、列方向都有分组的报表。FineReport的数据模型,由于天然支持行列对称,因此设计交叉表的方法也很简单。只需要在分组报表章节的例子基础上,加入列方向的扩展即可。以多层交叉表(在纵向和和横向均有两层的分组)为例第15页基本报表——交叉报表——汇总第16页基本报表——多数据源报表大多数报表并不是单一数据源。实际情况是数据源经常来自不同的数据库或统一数据库的不同表。多数据源,指的就是在同一张报表当中,显示的数据来自于多个不同的表或不同的库。传统的做法,是通过拼SQL将多源整合为单源。FineReport的数学模型,天然支持多数据源的报表。第17页基本报表——多数据源报表下面这张简单的多数据源报表,数据分别来自于两个不同的数据表。在这张报表当中,左侧仍然是我们前面用到过的销售量报表,而右侧则是新增的费用支出表。这两个表来自于不同的数据源。FineReport常用的处理方法,是从数据库中读出需要的数据列,然后再报表中进行相应的数据列关联即可。第18页高级分组报表——单列多层次报表使用背景:数据源有类似ID,FID这样附属关系的数据列,且数据分组展示。制作思路:分析数据库表中共有多少个层级,然后将id拖至单元格中,使用其父id过滤来选出每层的数据。注:因为单元格之间的父子关系,本质上是一种附属关系,而附属格是以其父格作为过滤条件的,即假如父格当中有过滤条件,那么附属格是以过滤后的父格数据作为自身的过滤条件。一般来说,我们大部分的报表设计中,用到过滤的都是默认需将父格作为过滤条件。而当同一列的数据之间,存在包含与被包含关系时,我们就需要设置不要以父格作为过滤条件,来达到不继承已有的父格条件,而是重新从所有数据进行筛选的目的。第19页高级分组报表——组织递归树报表前言:当数据层级比较多的时候,用单列多层次的方法制作报表将会非常繁琐,且当数据层级不定的时候,用该方法得到所要的报表。FineReport6.5版本,已提供递归算法,可根据id与其父id一次性生成所有的层级,简化了上一小节中模板的制作过程。与此同时,FineReport还可以任意控制需显示的层次数。第20页高级分组报表——组织递归树报表对于符合递归树结构的数据库表(包含有id、parentid的表),我们就可以使用递归方法自动生成层级树。可以看出,通过递归表设置,报表自动根据ID,FID字段生成相应的虚拟的层级数据列。制作报表的时候,直接绑定新增的数据列即可。但是,通过递归设置后,生成的子层中会产生一些空白的数据,再加上有些层下没有子层,导致产生一些空白行。这时候,通过条件属性设置隐藏可以解决。经常会有种需求:实际数据和所希望展现的数据不同。(比如,实际数据是编码,希望展现的数据是相应的中文字典)————————通过:形态-数据字典解决。第21页高级分组报表——折叠式动态报表折叠式动态报表,即:具有在bs浏览界面中,动态地展开或收缩某组数据功能的报表。制作方法:通过增加控件设置按钮树节点按钮实现折叠式效果。预览方法:数据分析预览或者分页预览后在url后加op=view。预览如下:第22页高级分组报表——自定义条件分组报表自定义分组:指的是数据并非枚举,而是可能需按照分段分组或其它不规则的划分。比如按照分数段、年龄段、时间段等,将属于某个值区间的记录归到一个组里显示的分组方式。例如:你有一个员工信息表,里面存着全公司的员工数据,但是老板希望看到各个年龄段人数的统计,了解员工的年龄构成情况。问题是你的数据库字段只有年龄的实际值字段,若根据此字段来分组,则只会出现25岁,30岁这样的组名,可是老板却只要20岁~30岁,30岁~40岁这样的组名。针对这样的情况,我们就需用到自定义分组来重新定义区间。当自定义条件分组,没有包含所有数据或没有数据满足分组时,在自定义分组中我们还可以选择如下选项来进行特殊分组:1)丢弃其它所有的:指所有不属于新组的组数据皆丢弃不要。2)留在各自的组内:指所有不属于新组的组数据仍保留其原来的名称显示在报表中。3)把其它所有的合并:将所有不属于新组的组数据全部放在一个组内,并另外取名,预设的组名是其他,用户可以根据需要改变名称。4)强制分组:定义了一个分组,但是没有符合他标准的数据,此时不选择强制分组那么这个分组就不会出现在预览中,如果选择强制分组,那么分组预览能看到,数据为零。预览如下:第23页高级分组报表——自定义公式分组报表通常情况下,数据是通过某一字段来进行控制分组,但也有需要根据多个字段,同时来控制分组情况。希望上图中记录由providerID字段和districtID字段同时控制。————自定义公式分组可以解决该问题。B3的范围通过自定义公式分组,使其值的分组由C3的供应商ID和D3的供应地区ID共同控制。第24页层次坐标及应用——问题描述及其常用应用FineReport报表的数据模型,由于是通过单元格绑定数据列扩展,来实现数据的读取和展现。设计模板时,若某个单元格尚未进行扩展,但是实际计算需求,往往需对其扩展后的单元格进行运算。这时候一般的计算方法无法满足。————通过层次坐标的方法对扩展后的每个单元格进行精确定位,得到某个单元格扩展后的其他多条数据。较为常见的应用:对扩展出的数据进行编号,数据排名,同期比与环比,占比,累计等。第25页层次坐标及应用——绝对层次坐标绝对层次坐标:精确定位扩展后某一位置上的值。Eg:C1[A1:1]:表示父格A1的第一个扩展单元格下的所有B1扩展格下所对应的C1单元格。——返回值:[5,6,7]Eg:C1[A1:1,B1:2]:表示A1单元格扩展出来的第一个单元格所对应的B1单元格扩展出来的第二个单元格所对应的的C1单元格的值。——返回值:6第26页层次坐标及应用——相对层次坐标相对层次坐标:能够获取上一行、下一行、上一列、下一列等与当前位置有一定偏移的位置上的值。Eg:C1[A1:-1],则返回的是当前A1扩展出来的上一格,对应C1扩展出来的值。——返回值:如截图所示。1)A1[!0]或者A1[!0]{}:公式用法是相同的,都表示A1单元格扩展出来的所有单元格的值,它是无任何条件限制的。注:A1[!0]{},其大括号中是加入条件内容的,就是指在A1扩展出来的所有单元格基础上,再根据括号中所选单元格的条件,展示出对应的单元格内容。2)C1[A1:-1,B1:+0]:表示A1单元格往前偏移一个位置的单元格A1,所对应的B1单元格,。所对应的C1单元格中的值。3)B1[A1:!-1]:表示单元格A1扩展出来的最后一个单元格对应的B1单元格的值。4)&A1:是表示根据其A1单元格中的值的个数对应编号。5)$C1:代表当前单元格的值。6)C1[!0]{B1=$B1&&C1$C1}:表示当前单元格(即C1),所属的B1分组格扩展出来的,C1单元格扩展出来的值中大于当前单元格的值。特殊格式的说明:第27页层次坐标及应用——相对层次坐标——应用举例排名—组内排名排名—组间排名排序—组内排序排序—组间排序条件汇总如需更多实例说明,请打开下属文件夹根据demo进行学习:%FR_HOME%\WebReport\WEB-INF\reportlets\doc\Advanced\Cacuate_Between_Cells文件夹。第28页图表——图表制作流程图表制作流程准备数据:1)数据集数据:图表的数据来源于数据集。2)单元格数据:如果数据集中的无法直接用于图表,需要经过计算或者图表需要跟随数据扩展时,可以使用单元格数据。图表插入的2种方式及各自优势:1)单元格插入:可以通过单元格的父子关系,跟随主格的扩展自动生成相应的图表,常用于跟随扩展的图表。2)悬浮元素插入:没有单元格的限制,可以图表位置固定,也可以随意拖放到任何位置,大小设置后不会改变,没有父格,不会因为其他单元格的扩展而受影响。图表类型:FineReport报表支持多种统计图表,每类图表又包含多种样式风格。定义图表数据:图表是通过选择图表的分类轴、系列名称及系列值来定义图表数据的。1)分类轴:就是图表的横轴,即x轴,表示数据是按照什么分类显示的;2)系列名称:系列就是图表的纵轴,即y轴,系列名称表示每个分类下数据是按照什么顺序显示的;如:X轴上有个点是班级,该班级的记录下有5门课程,那么这五门课程就是系列。3)系列值:就是每个系列的值。可以改变汇总方式,包括:求和,平均,最大,最小,个数,无,即可选择不同的汇总方式使用不同
本文标题:FineReport培训(一)
链接地址:https://www.777doc.com/doc-4868123 .html