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

news2025/3/17 3:44:23

系列文章:

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

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

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

概要

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

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

模板中的扩展

模板引擎如何扩展单元格

在上一篇文章《还在担心报表不好做?不用怕,试试这个方法》(三)中,小编通过主从相关的属性(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文件实践

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1598137.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

UE5学习日记——制作多语言版本游戏,同时初步学习UI制作、多语言化、控制器配置、独立进程测试、打包配置和快速批量翻译等

所有的文本类,无论变量还是控件等都能实现本地化,以此实现不同语言版本。 在这里先将重点注意标注一下: 所有文本类的变量、控件等都可以多语言;本地化控制板中收集、编译时,别忘了编译这一步;支持批量复制…

海思Hi3519 DV500 部署yolov5并加速优化

本项目代码已开源,见文末 导出onnx模型 yolov5官方地址 利用官方命令导出python export.py --weights yolov5n.pt --include onnx 或者自写代码导出 import os import sys os.chdir(sys.path[0]) import onnx import torch sys.path.append(..) from models.co…

ASP.NET MVC企业级程序设计 (EF+三层架构+MVP实现查询数据)

目录 效果图 实现过程 1创建数据库 2创建项目文件 3创建控制器,右键添加,控制器 ​编辑 注意这里要写Home​编辑 创建成功 数据模型创建过程之前作品有具体过程​编辑 4创建DAL 5创建BLL 6创建视图,右键添加视图 ​编辑 7HomeContr…

[计算机效率] 本地视频播放器:QQPlayer

3.26 本地视频播放器:QQPlayer QQPlayer是一款由腾讯公司开发的视频播放软件,它支持多种视频格式,包括MP4、AVI、FLV等,并且可以播放高清视频。 强大的播放功能:QQPlayer具有强大的解码功能,可以轻松播放…

GIS 数据格式转换

1、在线工具 mapshaper 2、数据上传 3、数据格式转换 导入数据可导出为多种格式:Shapefile、Json、GeoJson、CSV、TopJSON、KML、SVG

面试算法-174-二叉树的层序遍历

题目 给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。 示例 1: 输入:root [3,9,20,null,null,15,7] 输出:[[3],[9,20],[15,7]] 解 class Solut…

Antd:在文本框中展示格式化JSON

要想将对象转换为格式化 JSON 展示在文本框中,需要用到 JSON.stringify JSON.stringify 方法接受三个参数: value:必需,一个 JavaScript 值(通常为对象或数组)要转换为 JSON 字符串。replacer&#xff1a…

基于springboot+vue实现的疫情防控物资调配与管理系统

作者主页:Java码库 主营内容:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app等设计与开发。 收藏点赞不迷路 关注作者有好处 文末获取源码 技术选型 【后端】:Java 【框架】:spring…

【软考高项】二十一、政策法规之招投标法知识点学习

一、总则部分 必须招标的 社会公共利益、公众安全的;国有资金投资或者国家融资的;外国政府贷款、援助资金的原则 公开、公平、公正和诚实信用 不得将依法必须进行招标的项目化整为零或者以其他任何方式规避招标、不受地区或者部门的限…

【Go】原子并发操作

目录 一、基本概念 支持的数据类型 主要函数 使用场景 二、基础代码实例 开协程给原子变量做加法 统计多个变量 原子标志判断 三、并发日志记录器 四、并发计数器与性能监控 五、优雅的停止并发任务 worker函数 Main函数 应用价值 Go语言中,原子并发操…

ABAP MESSAGE 常用的类型

类型文本描述A终止处理终止,用户必须重启事务X退出与消息类型A 类似,但带有程序崩溃 MESSAGE_TYPE_XE错误处理受到干扰,用户必须修正输入条目,左下角提示!W警告处理受到干扰,用户可以修正输入条目,左下角提示!I信息处理受到干扰&a…

中断的设备树修改及上机实验(按键驱动)流程

写在前面的话:对于 GPIO 按键,我们并不需要去写驱动程序,使用内核自带的驱动程序 drivers/input/keyboard/gpio_keys.c 就可以,然后你需要做的只是修改设备树指定引脚及键值。 根据驱动文件中的platform_driver中的.of_match_tabl…

一套3种风格经典的wordpress免费主题模板

wordpress免费企业主题 https://www.wpniu.com/themes/39.html 免费wordpress企业模板 https://www.wpniu.com/themes/43.html 免费wordpress企业主题 https://www.wpniu.com/themes/44.html

图灵奖2023:Avi Wigderson的开创性贡献揭示计算中的随机性和伪随机性

文章目录 每日一句正能量前言背景什么是理论计算机科学?为什么随机性很重要?三篇影响深远的论文Avi Wigderson在计算复杂性理论方面的贡献及其对现代计算的影响Avi Wigderson对随机性和伪随机性在计算中作用的理解及其实际应用Avi Wigderson的学术生涯和…

超越GPT-4V!马斯克发布Grok-1.5 With Vision

在 Grok-1 开源后不到一个月,xAI 的首个多模态模型就问世了。Grok-1.5V是XAI的第一代多模态模型,除了其强大的文本处理能力之外,Grok现在还能够处理包括文档、图表、图形、屏幕截图和照片在内的各种视觉信息。相信Grok-1.5V将很快提供给现有的…

基于unity+c#的随机点名系统(简单UI界面+列表+数组)

目录 一、功能界面显示 二、UI 1、视频的使用 (1)渲染纹理 (2) 视频铺全屏 (3)视频的调用 2、 下拉文本框的使用(旧版) 3、输入文本框的使用(旧版) …

OneFlow深度学习简介

介绍 OneFlow是一个基于深度学习的开源框架,主要面向机器学习工程师和研究人员。它提供了类似于其他深度学习框架(如TensorFlow和PyTorch)的API,同时具有高性能和高效的特点。OneFlow专注于在大规模数据集和分布式环境下的训练和推理,以及在生产环境中的部署和优化。其设计…

冯诺依曼结构理解

冯诺依曼结构 存储器:内存 数据是要在计算机的体系结构中进行流动的,在流动过程中对数据加工处理 从一个设备到另一个设备,本质是一种拷贝 CPU的计算速度是很快的,所以数据设备间的拷贝效率,决定了计算机整体的基本效率…

vue3第十八节(diff算法)

引言: 上一节说了key的用途,而这个key属性,在vue的vnode 中至关重要,直接影响了虚拟DOM的更新机制; 什么场景中会用到diff算法 如:修改响应式属性需要重新渲染页面,会重新执行render渲染函数返…

Maven 项目 JDK 8、JDK 17 多版本 Java 编译依赖最佳实践

博主历时三年精心创作的《大数据平台架构与原型实现:数据中台建设实战》一书现已由知名IT图书品牌电子工业出版社博文视点出版发行,点击《重磅推荐:建大数据平台太难了!给我发个工程原型吧!》了解图书详情,…