[]
        
(Showing Draft Content)

父子关系

概述

在报表中,不同的数据间会有父子关联。这种关联关系,一般由业务需求所体现,在 GcExcel 中,也可以支持这种父子关系。

例如,在下图中,team 和 name 是模板布局中的两个绑定字段,在A1中绑定了 team 字段,在A2 中绑定了 name 字段。图中的两个字段,使用到了隐式父子关系设置,其中 team 为父,name 为子。

在数据填充时,GcExcel 会 根据 team 的值对 name 字段的数据进行分组或筛选。此外,name 字段的扩展方向将也由 team 字段决定。

Cell context

概念定义

名词

说明

父子关系

当两个字段产生关联时,需要进行分组,筛选时。管这两个字段之间的关联称之为父子关系,也称之为主从关系。

父单元格

当两个字段产生父子关系。父单元格中的数据字段,会被用来对子单元格中的字段进行分组或筛选。

子单元格

当两个字段产生父子关系。子单元格中的数据的筛选,分组,排序,均会受到父单元格影响。

父子关系很类似数据库中的左关联。在模板布局中可能会使用到多个字段,每个字段都会对应数据源中的一列数据,当希望不同的字段所表示出一种关联的关系,同时指定到特定的某一行时,则需要再它们之间会建立一种关联关系,这种关联关系在 GcExcel 中被称为父子关系。在最终报告中展开时,将根据此关系对数据进行筛选或分组。

父子关系会产生两种影响:

过滤: 使用父单元格的数据作为过滤条件来过滤子单元格中的数据。

例如,在下图中,name单元格中的数据将根据其父单元格( team )中的数据进行过滤:

Filtering Relationship

扩展方向: 单元格中的数据根据父单元格中数据的扩展方向进行分组。

例如,在下图中,name单元格中的数据根据其父单元格进行分组和水平展开:

Following Relationship

单元格间的父子关系

在 GcExcel 模板中,有三种方式可以指定父子关系:

  • 隐式父子关系

  • 显示父子关系

  • 区域父子关系

当一个绑定字段同时被三种设置影响时,其优先级为:

显示父子关系 > 隐式父子关系 > 区域父子关系

隐式父子关系

隐式父子关系,是由 GcExcel 根据字段间的相互位置,自动为模板分析设置默认的父子关系。

  • 当两个字段上下相邻时,下面的单元格会基于上方的单元格进行过滤,展开方向为E = V垂直展开。

  • 当两个字段左右相邻时,右边的单元格会基于左侧的单元格进行过滤,展开方向为E = H水平展开。

示例:

在下图中,A1是父单元格,B1是子单元格,B1会根据A1的数据进行过滤,分组。A1和B1会延垂直方向展开。

Default-vertical

在下图中,A1是父单元格,A1是子单元格,A2会根据A1的数据进行过滤,分组。A1延水平方向展开,A2分组会跟随A1单元格水平方向展开。单个分组中,数据会延纵向方向展开。

Default-horizontal

显示父子关系

语法:

image

GcExcel 提供了Context (C) 属性,允许显示指定父子关系,显示父子关系的优先级高于隐式父子关系。当隐式父子关系无法满足需求时,可以通过显示父子关系重新制定关联关系。

示例:

使用 "C" 属性显式指定父单元格,下图中,B3与A1并不关联,没有默认父子关系。通过 C 属性,显示指定 A1 为父单元格, B3 为子单元格。

Custom

使用 "C" 属性显示移除父子关系 (C= None),在下面的例子中,会有默认的父子关系,但是当显示移除父子关系后,结果如下:

None

区域父子关系

语法:

image

对于复杂的布局,有时会有多个单元格并不相连,无法应用隐式父子关系。此时您可以选择给每个单元格设置显示父子关系,或者使用区域父子关系,设置在父单元格上,标记那一片区域属于子单元格。

区域父子关系的优先级低于其他两个,当使用区域父子关系时,请注意显示父子关系以及隐式父子关系对区域父子关系的影响。

示例:

下面的模板是为显示不同相机型号的销售详细信息,数据需要基于相机型号 (name) 进行分组及扩展。因此可以 name 字段的单元格定义 R=B11:F16,而无需为每个字段指定父单元格。Fallback context

生成的 Excel 报表,如下所示:

Excel report