还在担心报表不好做?不用怕,试试这个方法(四)

系列文章:

《还在担心报表不好做?不用怕,试试这个方法》(一)

《还在担心报表不好做?不用怕,试试这个方法》(二)

《还在担心报表不好做?不用怕,试试这个方法》(三)

概要

在上一篇文章《还在担心报表不好做?不用怕,试试这个方法》(三)中,小编为大家分享了数据间的主从关系及单元格布局。主要讲解数据之间的主从关系,以及如何在单元格中表示这种关系。

在本期教程中,小编将为大家分享如何在模板中解决各种分组与扩展的情况。

模板中的扩展

模板引擎如何扩展单元格

在上一篇文章《还在担心报表不好做?不用怕,试试这个方法》(三)中,小编通过主从相关的属性(Context 以及 Range)为模板配置主从关系。以及提到了扩展相关的规则:

  1. 先扩展主单元格,后扩展从单元格。
  2. 主单元格扩展的时候,需要复制从单元格,并调整主从关系。
  3. 从单元格获取数据的时候要受主单元格的约束,扩展的时候要考虑调整主单元格的位置和大小。

这次我们举一个例子,让大家更好地理解如何进行数据填充的,假定现有如下的模板:

第一步:先扩展 A1 单元格,模板引擎从数据源 ds 中,获取销售公司的数据,得到两条数据。根据默认的扩展方向(向下),将数据跳至 A1 和 A2 中。同时,C1 的单元格因为主从关系,而被复制,实现结果如下:

第二步:扩展单元格 C1,模板引擎从数据源中获取销售公司为 【西安公司】的员工数据。得到三条数据,因此扩展C1,并填入数据。A1 也因为是 C1 的主单元格,从而也被复制扩展。结果如下:

第三步:继续扩展 C4 单元格。与第二步逻辑一样,结果如下:

扩展的方向

Excel作为结构化表格,本质是一个二维矩阵。因此扩展的方向,自然也只有水平,横向扩展和垂直,纵向扩展。

在刚才的例子中,A列和C列的数据扩展均是向下的。但是在有些报表中,数据是水平甚至是交叉扩展的。

因此,提供了属性 E,可以通过设置 E = H 来指定,横向扩展。

在大多数情况下,可以根据单元格主从关系来,选择扩展方向:

  • 当主从单元格为左右相邻,则向下扩展。
  • 当主从单元格为上下相邻,则向右扩展。

但是当主从单元格不相邻时,则可以使用 E 来指定方向。使用( E= V)向下或者向右( E= H)两个方向进行扩展,或者 E = N,不作扩展。

例子:交叉扩展

基于之前的数据表,如果希望生成的报表如下所示,是一个交叉表。那就需要合理利用扩展属性来解决问题。

为了能够生成如上的报表结果,模板应该如下设计:


ng)

在B2中,我们通过横向扩展商品类型,为系统增加了更多的选择。而A2则根据默认设置,实现了纵向扩展的功能。同时,在B2格子中,小编进行了显示指定,根据A2和B1的数据进行自动扩展。通过灵活的报表生成功能,小编能够获得之前期望的结果,提供更美观、直观的数据展示。

模板中的分组

在上述例子中,细心的读者可能已经注意到在数据源中,【销售公司】数据与【员工】数据相关联。然而,在导出后,公司名称却被自动分组去重。这正是模板填充时的一项智能功能,它能够自动为数据进行分组,从而提供更清晰、简洁的数据展示效果。这个特性使得数据处理更加美观和易于理解。

在模板属性中,可以通过分组属性 Group来处理各种分组的需求,Group 有四种属性值:

  • G=Normal: 对于列中的相应记录,不重复分组依据字段的值;而是每个数据组打印一次。
  • G=Merge (默认值): 行为与常规参数相同,不同之处在于它会合并每个组集的按字段分组的单元格。
  • G=Repeat: 对相应的记录重复分组依据字段的值。
  • G=List: 字段值针对相应的记录独立列出。

不同的属性应用在模板上会有如下效果:

Normal

模板修改如下:

生成的报表如下:

Normal 情况下,A1单元格会扩展,但是数据仅出现一次。

Merge (默认情况)

模板如下:

生成的报表如下:

Merge 即默认情况,A1单元格会扩展,数据仅出现一次,但会合并单元格。

Repeat

模板如下:

生成的报表如下:

Repeat情况下,A1单元格会扩展,且数据会被重复填充。

List

模板如下:

生成的报表如下:

在List情况下,A1单元格会自动扩展,并且数据会被重复填充。然而,这种情况下并没有进行分组,数据库中的数据被完整地列出。我们可以将List理解为不进行数据分组的方式,而其他三种情况则代表了经过分组后的不同展示方式。这种设计使得数据处理更加优雅和清晰。

总结

本章主要对模板语言中的扩展和分组进行讲解,扩展和分组是模板填充中重要且基础的概念。

本文所提到的所有内容均来自葡萄城公司的服务端表格控件产品GcExcel。如果您想了解更多信息,可以参考这篇产品文档Demo 网站。下一期,小编将为大家介绍数据展开等其他设置是如何在模板中使用的。下一期,小编将继续为大家讲解模板填充中的其他属性及设置。

扩展链接:

轻松构建低代码工作流程:简化繁琐任务的利器

数据驱动创新:以Java编程方式定制数据透视表

Java批量操作Excel文件实践

posted @ 2024-04-16 09:04  葡萄城技术团队  阅读(49)  评论(0编辑  收藏  举报