系列文章: 《还在担心报表不好做?不用怕,试试这个方法》(一) 《还在担心报表不好做?不用怕,试试这个方法》(二) 概要 在上一篇文章《还在担心报表不好做?不用怕,试试这个方法》(二)中,小编介绍了模板语言中的的一些基本概念和用法,今天小编将继续为大家介绍如何不同字段间的父子关系,是如何在模板语言中
系列文章:
《还在担心报表不好做?不用怕,试试这个方法》(一)
《还在担心报表不好做?不用怕,试试这个方法》(二)
概要
在上一篇文章《还在担心报表不好做?不用怕,试试这个方法》(二)中,小编介绍了模板语言中的的一些基本概念和用法,今天小编将继续为大家介绍如何不同字段间的父子关系,是如何在模板语言中定义的。
首先重新回顾一下,上一次使用到的数据表。如下所示:
可以看到,在数据表中,销售公司和员工两列数据拥有一个所属关系。
因此在某些情况下,我们可以将员工按照所属的公司关系进行分类,如下图所示:
这样就实现了一个基于数据间的主从关系的显示布局。
数据中的主从关系
在数据表中,刚提到了销售公司与员工有一个所属关系的存在,即数据本身存在逻辑关系。员工列的数据隶属于某一个销售公司。
同时,商品和商品类型,也有一个逻辑关系,商品隶属于某一种商品类型。通常这种所属或隶属的关系,会被称为主从关系,或者父子关系。
为了方便理解,这里举一个例子,让您更好的理解这种包含,或者主从的关系。其本身更像是一种树形结构,也有另一种说法,来称呼这种关系,叫做“一对多”,1:N 的关系。
以国家为例,一个国家,有多个省,每个省有多个市,每个市又有多个区,每个区又有多个街道。显示出来就是:
国家 -> 省 -> 市 -> 区
这样一来,国家和省,一对多,省对市,一对多。对于 1:N 的关系,通常我们会将【1】这一方称之为父或者主,将【N】一方称之为子或者从。
至此,我们已经了解到概要中提到的数据表,其中有两个主从关系,即 公司:员工,类型:商品。
报表模板中的主从关系
介绍完数据中的主从关系之后,我们现在再看下面这个报表的图片,我们可以看到 A 列绑定的是 “公司” 字段, C 列绑定的是 “员工” 字段。同时,A 列会将相同的数据合并成为一个单元格。
基于上一篇文章《还在担心报表不好做?不用怕,试试这个方法》(二)讲到的数据绑定,我们做一个如下的模板。
生成的结果为:
但是会发现这与期望的结果不同,A 列的数据虽然仅出现了一次,但是 A 列与 C 列数据间的关系丢失了,从行的角度看,数据是错误的。
因此为了适应数据内部的主从关系,我们可以使用 Context 属性 来实现,下面来介绍一下:
Context 属性
Context的概念是可以为一个单元格指定一个主单元格。Context 的简写是【C】,将模板改写如下图所示:
这样生成的结果如下所示:
可以看到,Context 属性为 A 列和 C 列构建了一种主从关系。在生成报表时,其遵循如下原则:
隐式主从关系
在报表中,数据的主从关系非常普遍。因此,在数据绑定后,需要为单元格指定主从关系的情况会很多。因此为了使得模板看起来更简洁,易读。我们需要实现隐式主从关系的设计,也就是说当两个单元格左右相邻时,这两个单元格会自动产生主从关系,且左边为主,右边为从。比如我们对模板进行如下修改时:
就会生成如下报表:
Range 属性
前面介绍了Context 属性和隐式主从关系,这两个都是在主从单元格的角度指定主单元格。但是在某些场合,还是需要我们手工设置 Context,例如:
这一步可以使用 Range 属性来解决这个问题。观察下面这个模板,除了总销量单元格,其它单元格都得显示设置 Context,因为它们左边的单元格用的函数,不具有扩展性,所以没有默认的主单元格。
通过使用 Range 属性,则仅通过一个单元格来制定主从关系,模板修改后如下:
Range 属性设置单元格时有以下规则:
这样根据上面的规则,我们就可以使用 Range 简化模板,如下例子:
通过为 A3 和 D1 设置 Range 属性,就可以轻松的给 B3,C3,D3,E3 指定了主单元格。
总结
本章主要对模板语言中数据和单元格之间主从关系进行讲解,本章的主要内容如下:
下一期,小编将为大家介绍数据展开等其他设置是如何在模板中使用的。
扩展链接:
轻松构建低代码工作流程:简化繁琐任务的利器
数据驱动创新:以Java编程方式定制数据透视表
Java批量操作Excel文件实践
真实飞行员模拟 中文版 1.0.4 91.17 MB
下载
湘ICP备2022002427号-10湘公网安备:43070202000427号
© 2013~2019 haote.com 好特网