数据智慧: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.mzph.cn/news/583515.shtml

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

相关文章

Vue使用Element table表格格式化GMT时间为Shanghai时间

Vue使用Element表格格式化GMT时间为Shanghai时间 说明 阿里巴巴java开发规范规定,数据库必备gmt_create、gmt_modified字段,使用的是GMT时间,在中国使用必然要转换我中国时间。 在阿里巴巴的Java开发规范中,要求每个表都必备三…

智能写作辅助工具有哪些,这4款强烈推荐

智能写作辅助工具是现代写作过程中的必备利器,它们能够提供语法纠错、词汇替换、文本优化等功能,帮助我们提高写作效率和质量。在众多智能写作辅助工具中,以下是四款强烈推荐的中文软件。 推荐一:爱制作AI 一、什么是爱制作AI 爱…

VD6283TX环境光传感器(2)----移植闪烁频率代码

VD6283TX环境光传感器----2.移植闪烁频率代码 闪烁定义视频教学样品申请源码下载参考代码硬件准备开发板设置生成STM32CUBEMX串口配置IIC配置X-CUBE-ALSADC使用定时器触发采样KEIL配置FFT代码配置app_x-cube-als.c需要添加函数演示结果 闪烁定义 光学闪烁是指人造光源产生的光…

什么是骨传导耳机?骨传导能保护听力吗?

骨传导耳机是一种非常特殊的蓝牙耳机,它通过骨传导技术将声音直接传送到内耳。这种技术不同于传统耳机,它不通过空气传送声音,而是通过头骨的振动来传送声音。 并且骨传导耳机能够在一定程度上起到保护听力的作用,主要是因为它们不…

UniApp小程序使用vant引入vant weapp

HBuilder X里新建项目指路 HBuilderX新建项目 安装node.js指路 安装node.js 1.通过npm安装 查看npm环境 //打开终端输入命令查看版本 npm -version 1.1.右键打开外部终端窗口 1.2.输入npm init -y命令 1.3.通过命令安装 npm i vant/weapp1.3.3 -S --production 1.4.打开工具…

Hive讲课笔记:内部表与外部表

文章目录 一、导言二、内部表1.1 什么是内部表1.1.1 内部表的定义1.1.2 内部表的关键特性 1.2 创建与操作内部表1.2.1 创建并查看数据库1.2.2 在park数据库里创建student表1.2.3 在student表插入一条记录1.2.4 通过HDFS WebUI查看数据库与表 三、外部表2.1 什么是外部表2.2 创建…

鸿蒙开发(二)- 鸿蒙DevEco3.X开发环境搭建

上篇说到,鸿蒙开发目前势头旺盛,头部大厂正在如火如荼地进行着,华为也对外宣称已经跟多个厂商达成合作。目前看来,对于前端或客户端开发人员来说,掌握下鸿蒙开发还是有些必要性的。如果你之前是从事Android开发的&…

idea 插件开发之 HelloWorld

前言 本文使用的 idea 2023.3 版本进行插件入门开发,首先要说明的是 idea 2023 版本及以后的 idea,对插件开发进行了一定程度的变动: 1、创建项目时不再支持 maven 选项 2、必须是 jdk17 及以后版本(点击查看官网版本对应关系&…

【微服务核心】MyBatis Plus

MyBatis Plus 文章目录 MyBatis Plus1. 简介2. 入门使用3. 核心功能3.1 CRUD 接口3.1.1 Mapper CRUD 接口3.1.2 Service CRUD 接口 3.2 条件构造器3.3 分页插件3.4 Mybatis-Plus 注解 4. 拓展4.1 逻辑删除4.2 MybatisX快速开发插件 5. 插件5.1 [分页插件](#page)5.2 乐观锁插件…

五轴机床测头:高精度曲面检测的得力工具

五轴机床测头广泛应用于制造业中的高精度加工领域。它能够准确、快速地检测出曲面的形状、尺寸和特征,为生产过程中的质量控制提供了重要支持。 五轴机床测头是一款具有3维5向探测功能的红外触发机床测头,广泛应用于 3 轴、5 轴加工中心,以及…

大数据前馈神经网络解密:深入理解人工智能的基石

文章目录 大数据前馈神经网络解密:深入理解人工智能的基石一、前馈神经网络概述什么是前馈神经网络前馈神经网络的工作原理应用场景及优缺点 二、前馈神经网络的基本结构输入层、隐藏层和输出层激活函数的选择与作用网络权重和偏置 三、前馈神经网络的训练方法损失函…

最优化方法Python计算:无约束优化应用——逻辑回归模型

S型函数 sigmoid ( x ) 1 1 e − x \text{sigmoid}(x)\frac{1}{1e^{-x}} sigmoid(x)1e−x1​将全体实数 R \text{R} R映射到 ( 0 , 1 ) (0,1) (0,1),称为逻辑函数。其图像为 该函数连续、有界、单调、可微,性质量好。拟合函数为 F ( w ; x ) sigmoi…

探索Apache Commons Imaging处理图像

第1章:引言 大家好,我是小黑,咱们今天来聊聊图像处理。在这个数字化日益增长的时代,图像处理已经成为了一个不可或缺的技能。不论是社交媒体上的照片编辑,还是专业领域的图像分析,图像处理无处不在。而作为…

盘点 | 飞凌嵌入式这5款100%全国产核心板值得推荐

近期,飞凌嵌入式有5款核心板产品通过了中国赛宝实验室的权威认证,实现了100%的电子元器件国产化率,本篇文章小编就带大家盘点一下这5款产品。 一、FET3568-C系列核心板 FET3568-C和FET3568J-C核心板基于Rockchip RK3568系列处理器开发设计&am…

three.js绘制网波浪

无图不欢&#xff0c;先上图 使用方法&#xff08;以vue3为例&#xff09; <template><div class"net" ref"net"></div> </template><script setup> import { ref, onMounted } from vue import NetAnimation from /utils…

EBDP:解锁大数据的奥秘✨

大数据时代已经来临&#xff0c;你是否也想掌握这门“显学”&#xff1f;&#x1f31f; EBDP&#xff0c;这个让众多专业人士趋之若鹜的认证&#xff0c;究竟有何魅力&#xff1f;今天就带你一探究竟&#xff01; &#x1f31f;EBDP&#xff1a;大数据的“敲门砖”&#x1faa…

Koordinator 助力云原生应用性能提升:小红书混部技术实践

作者&#xff1a;宋泽辉&#xff08;小红书&#xff09;、张佐玮&#xff08;阿里云&#xff09; 编者按&#xff1a; Koordinator 是一个开源项目&#xff0c;是基于阿里巴巴内部多年容器调度、混部实践经验孵化诞生&#xff0c;是行业首个生产可用、面向大规模场景的开源混…

CNAS中兴新支点——源代码审计对企业有哪些好处?

源代码扫描&#xff0c;对应用程序进行静态漏洞扫描&#xff0c;分析源代码中存在的安全风险&#xff0c;运行应用于模拟器中对应用进行实时漏洞攻击检测。 你是否了解源代码扫描对企业的好处&#xff1f; 一、源代码扫描&#xff0c;通常能够帮助企业解决这些问题&#xff1…

BDD - Python Behave 配置文件 behave.ini

BDD - Python Behave 配置文件 behave.ini 引言behave.ini配置参数的类型配置项 behave.ini 应用feature 文件step 文件创建 behave.ini执行 Behave查看配置默认值 behave -v 引言 前面文章 《BDD - Python Behave Runner Script》就是为了每次执行 Behave 时不用手动敲一长串…

VSCode Python开发环境配置

目录 1 插件安装2 Debug和测试配置常见问题 1 插件安装 1.1 基础编译插件&#xff0c;Python、Pylance 1.2 修改语言服务器类型&#xff0c;进入用户配置页面搜索Python: Language Server&#xff0c;选择Pylance&#xff08;一定要修改可以提供很多语法提示&#xff09; 1…