1. 概述编辑
1.1 应用场景
报表之间可以通过参数或超级链接等方式来传递数据,但是同一个模板中多个 sheet 之间是无法用参数和超级链接进行传值的。
那如何实现在一个 sheet 中取另外一个 sheet 中某个单元格的值呢?即如何实现跨 sheet 取数呢?下面将详细介绍。
如下图的例子,sheet1 中的订单成本是由 sheet2 中的单元格参与计算得来的,填报改变 sheet2 相关数据时,sheet1 订单成本也会跟着变化。
1.2 实现思路
可以使用公式sheetname!cellname来实现跨 sheet 取值。例如在 sheet1 某个单元格中取 sheet2 中 A2 单元格的值,就可以添加公式:sheet2!A2
如果 sheetname 中包含中划线、下划线等特殊字符就需要给 sheetname 加上单引号,则公式应写成:'sheetname'!cellname
注:若前面的 sheet 中使用跨 sheet 公式取后面 sheet 中的值,且公式要用在超链接、公式形态、条件属性中时,必须要在前面 sheet 的单元格中使用跨 sheet 公式。
2. 示例编辑
2.1 准备模板
1)首先新建 2 个数据集,ds1 用于 sheet1 中,ds2 用于 sheet2 中,SQL 语句如下:
ds1:SELECT * FROM 订单
ds2:SELECT * FROM 订单明细
2)添加一个模板参数,设置默认值为 10001,如下图所示:
3)在参数面板给这个参数绑定控件,控件设置为下拉框,数据字典设置为订单表中的订单ID字段。
4)新建一个 sheet2,如下图设计 sheet2 表格,将 ds2 中的字段拖拽到对应单元格中,A2 单元格添加过滤与模板参数完成绑定。
E2 单元格添加公式SUM(C2*D2),A2 单元格添加下拉框控件,B2~D2 添加文本控件,如下图所示:
给 sheet2 设置填报属性,如下图所示:
5)如下图设计 sheet1 表格,将 ds1 中的字段拖拽到对应单元格中,A2 单元格添加过滤与模板参数完成绑定。
C2 单元格添加公式sheet2!E2+B2,即取 sheet2 中 E2 单元格跟 sheet1 中 B2 单元格相加。
2.2 效果预览
保存模板点击填报预览,修改 sheet2 中相关单元格,sheet1 中订单成本也会随之改变,效果见 1.1应用场景 中所示。
注:不支持移动端。
3. 模板下载编辑
已完成模板请参见:%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\Form\MultiSheetReport\
点击下载模板: