历史版本14 :跨sheet联动填报 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

目录:

1. 概述编辑

1.1 应用场景

报表之间可以通过参数或超级链接等方式来传递数据,但是同一个模板中多个 sheet 之间是无法用参数和超级链接进行传值的。

那如何实现在一个 sheet 中取另外一个 sheet 中某个单元格的值呢?即如何实现跨 sheet 取数呢?下面将详细介绍。

如下图的例子,sheet1 中的订单成本是由 sheet2 中的单元格参与计算得来的,填报改变 sheet2 相关数据时,sheet1 订单成本也会跟着变化。

1621838345346013.gif

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,如下图所示:

1621839723717209.png

3)在参数面板给这个参数绑定控件,控件设置为下拉框,数据字典设置为订单表中的订单ID字段。

1621840053919795.png

4)新建一个 sheet2,如下图设计 sheet2 表格,将 ds2 中的字段拖拽到对应单元格中,A2 单元格添加过滤与模板参数完成绑定。

E2 单元格添加公式SUM(C2*D2),A2 单元格添加下拉框控件,B2~D2 添加文本控件,如下图所示:

1621840376737239.png

给 sheet2 设置填报属性,如下图所示:

1621840570176785.png

5)如下图设计 sheet1 表格,将 ds1 中的字段拖拽到对应单元格中,A2 单元格添加过滤与模板参数完成绑定。

C2 单元格添加公式sheet2!E2+B2,即取 sheet2 中 E2 单元格跟 sheet1 中 B2 单元格相加。

1621840793709251.png

2.2 效果预览

保存模板点击填报预览,修改 sheet2 中相关单元格,sheet1 中订单成本也会随之改变,效果见 1.1应用场景 中所示。

注:不支持移动端。

3. 模板下载编辑

已完成模板请参见:%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\Form\MultiSheetReport\

点击下载模板: