1. 概述编辑
1.1 预期效果
设计器可以自由实现语言切换,但是报表内容是固定的,其语言并不会根据需求而发生改变.
在有些业务需求中,需要单页报表内容中英文切换,如下图所示:
1.2 实现思路
通过公式判断改变标签和文本内容中的字符串。
通过条件判断改变下拉框和报表字段内容中的数据源字段。
2. 示例编辑
2.1 准备数据
想要实现单页报表内容的中英文切换,需要在底层数据表中提前准备好中英文数据的对应字段。
新建内置数据集,命名为 ZHEN,数据集内容如下图所示:
注:本文方法不支持文件数据集,使用文件数据集无法通过公式获取到表中字段内容。
2.2 设置语言选择控件
在参数面板上拖入一个标签控件和一个下拉框控件。
2.2.1 下拉框控件
选中下拉框控件,控件名称改为 LAN ,即参数名为 LAN ;标签名称改为 LAN: ;数据字典类型为自定义。具体设置如下图所示:
2.2.2 标签控件
选中标签控件,控件值选择公式:IF($LAN == 'EN','LAN:','语言:'),如下图所示:
当用户选择中文时,标签变为语言:;当用户选择English时,标签变为LAN:。
2.3 设置地区选择控件
在参数面板上拖入一个标签控件和一个下拉框控件。
2.3.1 下拉框控件
选中下拉框控件,设置控件名称、标签名称、控件值、数据字典等,如下图所示:
具体设置值如下表所示:
属性 | 值 | 备注 |
---|---|---|
控件名称 | AREA | - |
标签名称 | =IF($LAN == 'EN','AREA:','地区:') | 当语言为中文,标签变为地区: 当语言为English,标签变为AREA: |
控件值 | 类型:公式 值:IF($LAN=='EN',ZHEN.FIND(AREA_EN,AREA_CN,$$$),$$$) | 当语言为中文,下拉框显示选中的AREA_CN列的值 当语言为English,下拉框显示选中的AREA_EN列的值 |
数据字典 | 类型:数据查询 数据集:ZHEN 实际值:AREA_CN 显示值:IF($LAN=='EN',ZHEN.FIND(AREA_EN,AREA_CN,$$$),$$$) | 当语言为中文,下拉框显示AREA_CN列的值 当语言为English,下拉框显示AREA_EN列的值 |
2.3.2 标签控件
选中标签控件,控件值选择公式:IF($LAN == 'EN','AREA:','地区:'),如下图所示:
当用户选择中文时,标签变为地区:;当用户选择English时,标签变为AREA:。
2.4 设置报表内容
在 B1、B2 单元格插入公式,如下图所示:
单元格具体内容如下表所示:
单元格 | 扩展方向 | 内容 | 解释 |
---|---|---|---|
B1 | 不扩展 | IF($LAN = 'EN', 'SALE_EN', '销售员') | 当语言为中文,单元格内容为销售员 当语言为English,单元格内容为SALE_EN |
B2 | 向下扩展 | IF($LAN = 'EN', ZHEN.SELECT(SALE_EN, AREA_CN = $AREA), ZHEN.SELECT(SALE_CN, AREA_CN = $AREA)) | 报表内容控制通过条件判断改变字段选择的方式来实现中英文切换。 当语言为中文,单元格显示选中的地区的销售员名称 当语言为English,单元格显示选中的AREA的SALE_CN名称 |
2.5 效果预览
保存模板,点击预览,效果如1.1 预期效果所示。
注:不支持移动端。
3. 已完成模板编辑
已完成模板请参见:%FR_HOME%\webroot\WEB-INF\reportlets\doc\Parameter\单张报表内中英文切换.cpt
点击下载模板:单张报表内中英文切换.cpt