反馈已提交

网络繁忙

跨sheet联动填报

  • 文档创建者:文档助手1
  • 编辑次数:21次
  • 最近更新:Catqiu 于 2022-11-14
  • 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

    1.3 注意事项

    当前 sheet 计算逻辑:
    1)sheet 内计算逻辑, 从左到右从上到下。
    2)sheet 间计算逻辑, 从左到右, 如果有引用先计算引用。

    问题描述:

    循环跨sheet取数可能会出现无法取数的情况,例如:sheet1 进行加载,先计算C1,C1引用的 sheet2,那现在计算中断,计算 sheet2,sheet2 先计算 D1,引用到了 sheet1 的 C2 和 C3。sheet1 的 C2 有值,C3 是引用的 sheet3,但这个时候没有去触发 sheet3 的计算,也就是 sheet1 引用 sheet2 触发了 sheet2 的计算,但是后面 sheet1 引用 sheet3 没有触发 sheet3 的加载,引用别的 sheet 触发该 sheet 的计算只发生了一次。C3没有触发 sheet3 的计算,就返回了空。

    解决思路:

    把一些需要被依赖的单元格统一放到一个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

    2.2 准备sheet2

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

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

    1621840376737239.png

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

    1621840570176785.png

    2.3 实现跨sheet联动

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

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

    1621840793709251.png

    2)给 sheet1 添加填报属性,如下图所示:

    1621843811796204.png

    2.4 效果预览

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

    注:不支持移动端。

    3. 模板下载

    已完成模板请参见:%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\Form\MultiSheetReport\跨sheet联动.cpt

    点击下载模板:跨sheet联动.cpt

    附件列表


    主题: 填报应用
    • 有帮助
    • 没帮助
    • 只是浏览

    售前咨询电话

    400-811-8890转1

    在线技术支持

    请前往「服务平台」,选择「在线支持」

    热线电话:400-811-8890转2

    总裁办24H投诉

    热线电话:173-1278-1526

    文 档反 馈

    鼠标选中内容,快速反馈问题

    鼠标选中存在疑惑的内容,即可快速反馈问题,我们将会跟进处理。

    不再提示

    10s后关闭