1. 概述
1.1 版本
FineReport 版本 | 功能变动 |
---|---|
11.0 | - |
11.0.1 | 公式编辑框增加「输入提示」和「关闭前检查」选项 公式搜索优化 |
11.0.3 | 新增了自动补全功能:使用公式编辑面板编写公式时,若输入的内容只有一个补全公式的选择,此时取消补全的提示(例如打一个空格再删除这个空格),再输入任何一个英文字母,直接补全为之前的选择 |
11.0.4 | 公式编辑框最外层支持调整大小 |
1.2 功能简介
在设计模板时用户需要频繁的使用公式函数,例如:求和、求个数、做判断等等。本文介绍函数的计算组成和语法。
1.3 视频教程
2. 计算语法
2.1 概览
组成部分 | 语法 | 示例 |
---|---|---|
函数 | 函数语法详情查看对应函数: | SUM(合同金额)、SUM(A1) |
数据列 | 可输入有数据列的单元格名称 | A1(黑色) |
运算符 | 详情参见:计算操作符说明 | +、-、*、/ |
文本表达式 | 数字文本写为数字。 字符串文本和日期文本带有引号。 布尔文本写为 true 或 false。 Null 文本写为 null。 | 2000 "大订单"、“2020-07-15” true 或者 false null |
2.2 函数语法
在 FineReport 中,函数是计算的主要组成部分。
1)函数在 FineReport 计算中显示为蓝色,每个函数都有特定的语法。
例如:在 FineReport 中新建模板,在单元格中输入「=」,然后双击单元格,将出现「公式编辑框」,如下图所示:
注1:数据集函数不支持模拟计算。
位置 | 说明 |
---|---|
A | 写入公式位置 注:若计算后结果小数位超过4位,计算结果会自动四舍五入,因此可能与实际数据产生微小差距。 如需精确显示数据,可使用 Round 函数调整数据精度:Round函数 |
B | 函数搜索框 搜索结果包括「函数」和「参数」两种类型 前缀为f(x),表示此项为函数 前缀为$,表示此项为参数。 |
C | 输入公式会进行自动识别显示 支持显示参数(包括全局变量;系统变量;已经定义全局参数、模板参数、数据集参数)和函数。 前缀为f(x),表示此项为函数 前缀为$,表示此项为参数。 注1:用户自定义公式与报表自带公式显示方式一致。 注2:函数显示位置优先级高于参数,即所有相关函数显示完成后再显示参数。 注3:不同类型的同名参数仅显示一个。 |
D | 选择函数类型 |
E | 选择需要使用的函数 |
F | 选择是否引用参数 |
G | 查看公式用法 |
H | 检查公式合法性,详情可参见本文 3.3 节 |
I | 关闭前检查,详情可参见本文 3.3 节 |
J | 模拟计算,详情参见本文 3.4 节 |
11.0.4 版本公式编辑框最外层支持调整大小,如下图所示:
2)可以在计算中使用多个函数。例如:IF(SIGN(A2)=1,B2,0)
该计算中有两个函数:IF、SIGN。
函数包括在另一个函数中(即嵌套),上面示例就是这种情况。在这种情况下,将在计算 IF 函数之前先计算「A2」单元格的 SIGN 函数,因为后者在括号内部。
2.3 数据列语法
可以在计算中插入数据列。函数的语法通常会指明应在计算中的何处插入数据列。例如:COUNT(value1,value2,…)。
例如:如果要计算销售员数量,在单元格中输入公式:=count(B2),B2 即销售员数据列,如下图所示:
2.4 运算符语法
若要创建计算,需要了解支持的运算符。运算符在 FineReport 计算中显示为浅黑色。
详情参见:计算操作符说明
2.5 文本表达式语法
此部分描述在 FineReport 计算中使用文本表达式的正确语法。
文本表达式「按原样」表示常量值。使用函数时,有时需要使用文本表达式表示数字、字符串、日期等。
3. 示例
函数计算由四个内容组成:
内容 | 说明 | 报表中显示 |
---|---|---|
函数 | 用于对字段中的值或成员进行转换的语句 | 报表设计器中显示为蓝色 |
数据列 | 数据表中的数据列 | 报表设计器中显示为黑色 |
运算符 | 运算的符号 | 报表设计器中显示为浅黑色 |
文本表达式 | 按照写入内容表示的常量值 | 报表设计器中 文本类型、时间类型(有双引号)显示为粉色 数值类型显示为紫色 |
3.1 设计报表
例如,使用内置数据集「销量」创建数据集ds1,对不同地区销量高低做判断。
将「地区」字段拖入 A2,将「销量」字段拖入B2,并设置「销量」展示方式为求和,然后对不同地区的销量情况进行求和,如下图所示:
3.2 输入公式
选择「单元格元素>插入公式」,弹出公式定义框,输入公式:if(B2>8000,"高销量","低销量"),即进行判断,如果销量大于 8000,则定义为高销量,否则定义为低销量,如下图所示:
输入的计算内容说明如下所示:
内容 | 说明 |
---|---|
函数 | IF |
数据列 | B2 |
运算符 | 详情参见:操作符 |
文本表达式 | 字符串文本:"高销量"、"低销量" 数字文本:8000 |
3.3 公式校验
有两种公式校验方案:
方案一:点击「检查合法性」进行公式校验,如下图所示:
方案二:
勾选「关闭前检查」,然后点击「确定」,自动对公式进行校验,如果公式正确,则直接关闭公式编辑框,如果公式错误,则会给出报错提示,如下图所示:
3.4 根据模拟计算查看结果
完成后可点击「模拟计算」,输入公式中的参数 B2 需要验证的数据,例如输入 400,即可实时查看计算结果为「低销量」,如下图所示:
注1:数据集函数、层次坐标函数、GETUSERDEPARTMENTS()和GETUSERJOBTITLES()获取部门角色的部门和职位函数、WEBIMAGE函数、TOIMAGE 函数、文件函数、treelayer函数、不支持模拟计算。
注3:需要扩展后才能进行计算的参数不支持模拟计算。