1. 概述
1.1 问题描述
在报表设计时有时会遇到如下需求:图片与文字说明分开并形成目录的形式,点击文字才能展示对应的图片。如下图所示:
1.2 解决思路
先通过添加「超级链接>动态参数」设置过滤,然后使用 TOIMAGE() 函数设置图片展示。
注:仅支持不分页的场景下使用。
注:本文示例仅以普通报表为例,在 FVS 或 决策报表中同样适用,详情可自行下载文末模板查看。
2. 示例
2.1 数据准备
新建普通报表,新建两个内置数据集分别为「问题」和「回答」。为了方便两个数据集之间建立联系,这里以 ID 字段作为唯一标识。如下图所示:
2.2 图片准备
点击下载图片资源包:picture.zip
将每个问题对应的图片按照回答的 ID 进行重命名,例如第一个回答对应的图片则以「1」来命名。
将所有准备好的图片放置本地路径,或者是服务器路径(请注意区分服务器为 Windows 还是 Linux ),因为在 TOIMAGE() 函数中,Windows 路径表示为 D:/1.png,在 Linux 中路径表示为 /u01/.../.../1.png。
本示例将解压后的图片文件夹 picture 放置在本地的报表工作目录下:D:\FineReport_11.0\webapps\webroot\WEB-INF\reportlets
2.3 报表设计
单元格内容设置如下表:
单元格 | 操作 |
---|---|
A1 | 插入图片,选择图片时插入方式选择「适应」 |
C1~E1 | 合并单元格,插入普通文本「问题描述」,调整字体样式为「华文琥珀」,字体大小为 19 |
G1~P1 | 合并单元格,插入图片,选择图片时插入方式选择「适应」 |
A2 | 拖入「问题」数据集的 ID 列 |
B2 | 输入文本「 . 」,表示序号与文字隔开的点 |
C2~E2 | 合并单元格,拖入「问题」数据集的 Q 列 |
G2~P2 | 合并单元格,拖入「回答」数据集的 A 列。设置扩展方向为「不扩展」,「左父格」为无 |
G3~P27 | 合并单元格以展示图片。设置「左父格」为无 |
单元格内容设置完成后,给标题行添加下边框,表格样式如下图所示:
注:第一行的文字与图片仅为装饰,可自行设计或在网络搜索下载免费资源。
2.4 设置动态参数
因为要通过点击问题文字达到展示图片的效果,所以要给问题文字所在单元格添加一个动态参数类型的 超级链接。
注:FVS 中超链类型可选择「当前页面对象」,决策报表中超链类型可选择「当前决策报表对象」。
选中 C2 单元格,点击右侧属性面板「超级链接」,添加「动态参数」,参数名称为「ID」,值类型为公式,输入 A2。如下图所示:
注:设置超链后字体为变成蓝色并带有下划线显示,手动调整字体设置取消下划线,字体颜色设为黑色即可。
2.5 设置过滤
双击回答所在单元格 G2,设置过滤,设置「回答」数据集中的 ID 字段等于参数 $ID。
注:此处的 $ID 也是对应每个图片名称的 ID。
2.6 设置图片展示
1)选中 G3 单元格,单击鼠标右键选择「单元格元素>插入公式」,TOIMAGE() 公式为:TOIMAGE("D:/FineReport_11.0/webapps/webroot/WEB-INF/reportlets/picture/" + $ID + ".png", false)
注:需要将文件目录路径中的 \ 都改为 / 。
注:因为图片的名称($ID)需要与「回答」数据集中的 ID 字段一一对应,所以只能放置一张图片。
2)G3 单元格展示图片时可能图片大小不一,会显示不全,设置「单元格属性>样式>对齐」的图片布局为「适应」即可。
2.7 效果预览
2.7.1 PC 端
保存报表,点击「分页预览」,效果如 1.1 节所示。
2.7.2 移动端
App 端和 HTML5 端均支持,效果如下图所示: