数据智慧:C#中编程实现自定义计算的Excel数据透视表

news/2024/7/21 5:10:16 标签: c#, excel, 数据库

前言

数据透视表(Pivot Table)是一种数据分析工具,通常用于对大量数据进行汇总、分析和展示。它可以帮助用户从原始数据中提取关键信息、发现模式和趋势,并以可视化的方式呈现。

在数据透视表中,数据分析师通常希望进行自定义计算。 例如,组合“数量”和“单价”字段即可获得“销售额”。 但是在某些情况中,需要对一些数据进行合并,比如把所有”黑龙江“的数据、”吉林“的数据和”辽宁“的数据合并在一起,并起一个新的名字叫”东北“。

而数据透视表的计算项功能则可以满足这样的业务需求。 因此小编今天为大家介绍的是如何使用Java将计算项添加到数据透视表中,具体步骤如下:

  1. 加载工作簿
  2. 创建数据透视表
  3. 将计算项添加到数据透视表
  4. 隐藏重复的名称项
  5. 保存工作簿

使用案例

现在某公司的采购经理需要基于下图(消费数据表)来分析订单的状态,并把除了”完成“之外的状态全部归类为”未完成“,并根据产品名称将所有”未完成“的产品金额叠加起来。

步骤一 加载工作簿

首先,在 GcExcel 中,使用如下代码加载源数据 Excel 文件。

Workbook workbook = new Workbook();
workbook.Open("SalesData.xlsx");

步骤二 创建数据透视表

接下来,为订单数据添加数据透视表。 该数据可从 Excel 文件中的“销售数据”工作表中获取。 使用 IWorksheet 接口的 Add 方法将数据透视表添加到新工作表,如下面的代码所示:

//添加一个sheet
IWorksheet pivotSheet = workbook.Worksheets.Add();
pivotSheet.Name = "销售分析";

//添加透视表
IPivotCache pivotCache = workbook.PivotCaches.Create(workbook.Worksheets[0].Range["A1:G71"]);
IPivotTable pivotTable = pivotSheet.PivotTables.Add(pivotCache, pivotSheet.Range["A1"]);
pivotTable.PivotFields["产品"].Orientation = PivotFieldOrientation.RowField;
pivotTable.PivotFields["状态"].Orientation = PivotFieldOrientation.RowField;
pivotTable.PivotFields["分类"].Orientation = PivotFieldOrientation.ColumnField;
pivotTable.PivotFields["金额"].Orientation = PivotFieldOrientation.DataField;
pivotTable.DataFields["求和项:金额"].NumberFormat = "$#,##0_);($#,##0)";

显示效果如下所示:按照产品名将所有的消费订单进行分类。

步骤三 给透视表添加计算项

数据透视表准备就绪后,下一步是添加计算项。 通过ICalculatedItems 接口将计算项的集合添加到数据透视表字段。 添加名称和表达式,如下所示:

//基于状态字段创建计算项
ICalculatedItems statusCalcItems_lost = pivotTable.PivotFields["状态"].CalculatedItems();

//给计算项添加表达式
statusCalcItems_lost.Add("未完成", "=失败+退回+暂停");

此时的数据透视表将如下所示:已经出现了”未完成“状态的订单。

步骤四 隐藏不需要的项

添加计算项后,需要隐藏与计算项重复的项并避免重复计算:

//隐藏被归为“未完成”的字段
IPivotItems status = pivotTable.PivotFields["状态"].PivotItems;
status["失败"].Visible = false;
status["退回"].Visible = false;
status["暂停"].Visible = false;

包含计算项目的数据透视表在这一步将如下所示:

步骤五 保存为Excel

最后,对单元格应用样式和格式、调整列宽等并保存工作簿。 最终报告如下图所示:

workbook.Save("数据透视表自定义计算.xlsx");

总结

使用计算项,您可以对字段项进行几乎任何类型的计算,并使您的分析结果看起来更加组合和合理。 您可以对字段项进行计算,例如

  • 计算特定产品的折扣价格
  • 计算一个项目与其他项目相比的百分比份额
  • 使用备用名称引用字段项目等等

如果您想了解更多有关于计算项的资料,可以点击这里查看。

扩展链接:

Redis从入门到实践

一节课带你搞懂数据库事务!

Chrome开发者工具使用教程

从表单驱动到模型驱动,解读低代码开发平台的发展趋势

低代码开发平台是什么?

基于分支的版本管理,帮助低代码从项目交付走向定制化产品开发


http://www.niftyadmin.cn/n/5292575.html

相关文章

数据结构第1章 线性表

名人说:莫听穿林打叶声,何妨吟啸且徐行。—— 苏轼《定风波莫听穿林打叶声》 本篇笔记整理:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 目录 0、思维导图线性表1、顺序存储1)顺序表2&…

Java ArrayList在遍历时删除元素

文章目录 1. Arrays.asList()获取到的ArrayList只能遍历,不能增加或删除元素2. java.util.ArrayList.SubList有实现add()、remove()方法3. 遍历集合时对元素重新赋值、对元素中的属性赋值、删除元素、新增元素3.1 普通for循环3.2 增强for循环3.3 forEach循环3.4 str…

MCEWMDRMNDBootstrap.dll文件丢失,软件游戏无法启动,怎样下载修复

不少小伙伴反馈,在打开某些游戏或软件的时候,Windows会提示“MCEWMDRMNDBootstrap.dll文件丢失,软件无法启动”,不知道应该怎样办? 首先,我们先来了解“MCEWMDRMNDBootstrap.dll文件”是什么? …

springboot(ssm交通管理在线服务系统 交通管理平台 Java系统

springboot(ssm交通管理在线服务系统 交通管理平台 Java系统 开发语言:Java 框架:ssm/springboot vue JDK版本:JDK1.8(或11) 服务器:tomcat 数据库:mysql 5.7(或8.0&#xff09…

盘点2023年Sui游戏领域的五大亮点

在不断发展的Web3游戏领域中,Sui作为一个强大的平台,为游戏行业的转型之旅开辟了独特的道路。Sui独特的网络架构提供了可扩展性和高吞吐量,使得区块链环境下的游戏成为可能。Sui原生功能的应用,如赞助交易,显著简化了游…

Python 中 key 参数的含义及用法

哈喽大家好,我是咸鱼 我们在使用 sorted() 函数的时候,都会看到里面有一个 key 参数 其实这个 key 参数也存在于其他内置函数中(例如 min()、max() 等),那么我们今天就来了解一下 key 参数的含义以及用途吧&#xff…

中介者模式-Mediator Pattern-1

如果在一个系统中对象之间的联系呈现为网状结构, 对象之间存在大量的多对多联系,将导致系统非常复杂。 这些对象既会影响别的对象,也会被别的对象所影响。 这些对象称为同事对象,它们之间通过彼此的相互作用实现系统的行为。 在网…

JAVA进化史: JDK7特性及说明

JDK 7(Java Development Kit 7)是Java平台的一个重要版本,于2011年7月发布。这个版本引入了一系列的语言、库和虚拟机的改进,提升了Java的开发体验和性能。以下是JDK 7的一些主要特性,以及带有示例说明 字符串在switc…