C# Spire操作Excel数据透视表

news/2024/7/21 7:27:52 标签: c#, excel, java

一、概述

数据透视表(Pivot Table)是一种交互式的表,可以进行某些计算,如求和与计数等,可动态地改变透视表版面布置,也可以重新安排行号、列标和页字段。当改变版面布置时,数据透视表也会按照新的布置来进行更新,可以说是一个功能强大的数据分析工具。因此,本篇文章将介绍在C# 中关于Excel数据透视表的操作示例,示例内容主要包含以下要点:

  1. 创建透视表
  2. 创建数据缓存
  3. 创建数据透视表
  4. 添加行字段和列字段
  5. 添加值字段
  6. 设置样式
  7. 设置行折叠、展开
  8. 设置字段升序、降序
  9. 删除透视表

二、使用工具

  • Spire.XLS for .NET pack(可支持80余种Excel内置的数据透视表样式)

PS:安装后,注意在VS程序中引用Spire.XLS.dll,dll文件在安装路径下的Bin文件夹中获取。

三、示例操作

1.创建透视表

            //创建一个Workbook类实例,并加载Excel文档
            Workbook workbook = new Workbook();
            workbook.LoadFromFile("test.xlsx");

            //获取第一个工作表
            Worksheet sheet = workbook.Worksheets[0];

            //为需要汇总和分析的数据创建缓存
            CellRange dataRange = sheet.Range["A1:D10"];
            PivotCache cache = workbook.PivotCaches.Add(dataRange);

            //使用缓存创建数据透视表,并指定透视表的名称以及在工作表中的位置
            PivotTable pivotTable = sheet.PivotTables.Add("PivotTable", sheet.Range["A12"], cache);

            //添加行字段
            var r1 = pivotTable.PivotFields["月份"];
            r1.Axis = AxisTypes.Row;

            var r2 = pivotTable.PivotFields["厂商"];
            r2.Axis = AxisTypes.Row;

            //设置行字段的标题
            pivotTable.Options.RowHeaderCaption = "月份";

            //添加列字段
            var col1 = pivotTable.PivotFields["产品"];
            col1.Axis = AxisTypes.Column;          

            //设置列字段的标题
            pivotTable.Options.ColumnHeaderCaption = "产品";

            //添加值字段
            pivotTable.DataFields.Add(pivotTable.PivotFields["总产量"], "求和项:总产量", SubtotalTypes.Sum);

            //设置透视表的样式(Spire.XLS共支持80余种Excel内置的数据透视表样式)
            pivotTable.BuiltInStyle = PivotBuiltInStyles.PivotStyleDark13;

            //保存并打开文档
            workbook.SaveToFile("数据透视表.xlsx", ExcelVersion.Version2013);
            System.Diagnostics.Process.Start("数据透视表.xlsx");

测试结果:

2. 设置行折叠、展开

            //创建Workbook类对象,加载Excel文档  
            Workbook workbook = new Workbook();
            workbook.LoadFromFile("数据透视表.xlsx");

            //获取数据透视表  
            XlsPivotTable pivotTable = workbook.Worksheets[0].PivotTables[0] as XlsPivotTable;

            //计算数据  
            pivotTable.CalculateData();

            //展开”月份”字段下“2”的详细信息  
            (pivotTable.PivotFields["月份"] as Spire.Xls.Core.Spreadsheet.PivotTables.XlsPivotField).HideItemDetail("2", false);
            //折叠”月份”字段下“3”的详细信息
            (pivotTable.PivotFields["月份"] as Spire.Xls.Core.Spreadsheet.PivotTables.XlsPivotField).HideItemDetail("3", true);

            //保存并打开文档  
            workbook.SaveToFile("折叠、展开行.xlsx", ExcelVersion.Version2013);
            System.Diagnostics.Process.Start("折叠、展开行.xlsx");

测试结果:

3. 设置字段排序

这里支持三种不同类型的排序,可根据需要选择相应的排序类型。

            //创建一个Workbook类对象,并加载Excel文档  
            Workbook workbook = new Workbook();
            workbook.LoadFromFile("数据透视表.xlsx");

            //获取数据透视表  
            Spire.Xls.Core.Spreadsheet.PivotTables.XlsPivotTable pivotTable = workbook.Worksheets[0].PivotTables[0] as Spire.Xls.Core.Spreadsheet.PivotTables.XlsPivotTable;

            //对指定字段进行升序排序  
            pivotTable.PivotFields[2].SortType = PivotFieldSortType.Ascending;

            //保存并打开文档  
            workbook.SaveToFile("升序.xlsx", ExcelVersion.Version2013);
            System.Diagnostics.Process.Start("升序.xlsx");

测试结果:

4. 删除透视表

删除透视表可通过以下两种方法:

  • 根据透视表名称删除
  • 根据透视表索引删除
            //创建一个工作簿,并加载Excel文档
            Workbook workbook = new Workbook();
            workbook.LoadFromFile("数据透视表.xlsx");

            //删除第一张工作表上名称为“PivotTable”的数据透视表  
            workbook.Worksheets[0].PivotTables.Remove("PivotTable");

            //删除第一张工作表上索引为0即第一个数据透视表  
            //workbook.Worksheets[0].PivotTables.RemoveAt(0);  

            //保存文档  
            workbook.SaveToFile("删除数据透视表.xlsx", ExcelVersion.Version2013);

测试结果:

(本文完)


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

相关文章

Golang 模块版本管理与语义版本控制详解

目录 语义版本控制(SemVer) Go 模块版本 模块版本的选择和升级 go.mod 文件 版本管理最佳实践 小结 在 Golang 中,模块(module)是 Go 1.11 版本引入的依赖管理系统,帮助开发者管理项目的依赖。在 Go …

Hadoop——分布式计算MapReduce和资源调度Yarn

分布式计算 MapReduce YARN架构 YARN集群部署 一、Hadoop安装目录下/etc/hadoop修改mapred-env配置文件,mapred-site.xml文件 二、etc/hadoop文件内,修改yarn-env.sh,yarn-site.xml 三、将配置好的文件分发到其他服务节点 start-dfs.…

Siemens-NXUG二次开发-新建与保存prt文件[Python UF][20231204]

Siemens-NXUG二次开发-新建与保存prt文件[Python UF][20231204] 1.python uf函数1.1 NXOpen.UF.Part.New1.2 NXOpen.UF.Part.Save1.3 NXOpen.UF.Ui.OpenListingWindow1.4 NXOpen.UF.Ui.IsListingWindowOpen1.5 NXOpen.UF.Ui.WriteListingWindow1.6 NXOpen.UF.Ui.SaveListingWin…

prometheus|云原生|轻型日志收集系统loki+promtail的部署说明

一, 日志聚合的概念说明 日志------ 每一个程序,服务都应该有保留日志,日志的作用第一是记录程序运行的情况,在出错的时候能够记录错误情况,简单来说就是审计工作,例如nginx服务的日志,kuber…

ImportError: cannot import name ‘metadata‘ from ‘importlib‘

yolov8 编译问题 ImportError: cannot import name ‘metadata’ from ‘importlib’ 将 from importlib import metadata 更改为 import importlib_metadata as metadata

华为OD机试真题-找城市-2023年OD统一考试(C卷)

题目描述: 一张地图上有n个城市,城市和城市之间有且只有一条道路相连:要么直接相连,要么通过其它城市中转相连(可中转一次或多次)。城市与城市之间的道路都不会成环。 当切断通往某个城市 i 的所有道路后,地图上将分为多个连通的城市群,设该城市 i 的聚集度为 DPi(Deg…

solidity实现ERC20代币标准

文章目录 1、以太坊 - 维基百科2、IERC203、ERC204、Remix 编译部署 1、以太坊 - 维基百科 以太坊(Ethereum)是一个去中心化的开源的有智能合约功能的公共区块链平台。以太币(ETH 或 Ξ)是以太坊的原生加密货币。截至2021年12月&a…

Webgis学习总结

前言: 作者跟随视频学习了webgis内容进行如下学习复习总结 参考:新中地学习笔记 WebGIS第一课:测试高德API并通过: 注册申请高德API成为开发者,创建自己的项目和key进行项目初始化,可以使用JS API官方文…