zoukankan      html  css  js  c++  java
  • 轻松实现跨表取数之自动计算

    使用类 excel 的多 sheet 报表进行数据采集填报是很常见的情况,而且多 sheet 间互相取数计算也是非常常见的。大家都知道,多报表之间是可以通过参数或超链接等传递数据,但同一个模板中多个 sheet 间是无法用参数和超级链接传值的。那么,我们该如何在一个 sheet 中取另外一个 sheet 某个单元格的值来做计算呢?

    我们通过下面的这个例子来看一下,在润乾报表工具里面是如何实现的 ~

    需求:

    通过输入订单 ID 查询订单的用户信息和明细信息,在订单信息中获取订单明细中包含几条数据,同时在订单明细表中计算总金额:总金额 = 订单金额 + 订单表中的运货费。效果如下:

    实现工具:

    润乾报表 V2018

    实现步骤:

    1、 新建填报表

    1) 数据处理–- 设置报表的取数来源(例子中使用 demo 数据源中的订单表)

    然后工具栏点击【填报】–【参数】,在弹出的参数编辑框中增加参数:arg1,跟数据来源的 sql 里的参数名称一致。

    2)设置表样,如下图所示:

    1、 对填报表增加 sheet 页

    在报表的下方,选中【sheet1】,然后右击,在弹出的列表中选择【追加表格】,会出现 sheet2。

    2、 修改 sheet 页的名称。

    在报表的下方,选中【sheet1】,然后右击,在弹出的列表中选择【页属性】,然后在弹出的页属性中修改 页名称为”订单”,sheet2 同样的操作,将页名称改为”订单明细”。

    3、 设置【订单明细】表的表样

    1) 增加订单明细表的取数来源对象。(例子中使用 demo 数据源中的订单明细表)

    2)设计表样,如下图所示:

    好了,下面重点来喽,如何做到在订单表中获取订单明细表中的数据的条数,以及在订单明细表中获取订单表中的运货费做总金额的计算呢?这时候就用到我们的跨表计算了,快捷简单,一起来看一下吧。

    4、 自动计算

    首先,我们在订单表的 G11 单元格输入表达式:=count({订单明细!C3}) , 然后在订单明细表中,在 H3 单元格输入表达式:= 订单!D4+G3

    5、 保存报表,名称为 test.sht

    6、 建立参数模板

    1) 新建参数模板

    2) 设置参数模板样式如下图,并且设置 C1 单元格的变量名称为 arg1,跟填报表的参数名称保持一致。

    3)保存参数模板,名称为 test_arg.rpx

    8、启动服务器发布报表预览

    9、 在参数模板中输入订单 ID:10345

    在下面的预览图中可以看到,跨表取数的自动计算表达式 OK!

    如果我们在订单明细中增加一条数据并提交,在订单表中,相应的包含多少类产品的数量也会自动 +1。

    噔噔噔噔噔 ~ 效果轻松完美的实现啦 ~ 是不是很方便呢?除了这个相加的操作,还可以获取到订单表的值做加减乘除等计算,有兴趣的小伙伴可以自己尝试一下。

    拓展:

    在使用这种填报表组的时候,我们可能还会遇到想要两个 sheet 中的某个值保持一致的需求。拿上面的示例来说,想要订单明细表中增加数据行的时候,和订单表中的订单 ID 的值保持一致,如不一致,则给一个提示。

    我们可以这样做:

    选中订单中的 B2 单元格,然后在工具栏点击【填报】-【格间校验】,在弹出的单元格校验框中增加一个校验表达式:

    这样当我们新增的雇员 ID 不一致的时候就会给一个提示:

    关于校验的这些需求我不做详细说明了,有需要的话,大家可以看一下我们的另外一篇文章:报表工具之数据校验竟可以如此简单

    小提示:

    1、 如果想要获取 sheet1 输入的字符串,写法也是一样的。

    2、 自动计算的单元格值不可编辑。

    3、 目前只能获取其他 sheet 中非扩展单元格的值,即固定单元格的值。

  • 相关阅读:
    【BZOJ 2124】【CodeVS 1283】等差子序列
    【BZOJ 1036】【ZJOI 2008】树的统计Count
    【BZOJ 1901】【ZJU 2112】Dynamic Rankings
    【BZOJ 3924】【ZJOI 2015】幻想乡战略游戏
    【BZOJ 4103】【THUSC 2015】异或运算
    【BZOJ 4513】【SDOI 2016】储能表
    【HDU 3622】Bomb Game
    【BZOJ 3166】【HEOI 2013】Alo
    【BZOJ 3530】【SDOI 2014】数数
    【BZOJ 4567】【SCOI 2016】背单词
  • 原文地址:https://www.cnblogs.com/IBelieve002/p/10097714.html
Copyright © 2011-2022 走看看