一、概述
数据透视表(Pivot Table)是一种交互式的表,可以进行某些计算,如求和与计数等,可动态地改变透视表版面布置,也可以重新安排行号、列标和页字段。当改变版面布置时,数据透视表也会按照新的布置来进行更新,可以说是一个功能强大的数据分析工具。因此,本篇文章将介绍在C# 中关于Excel数据透视表的操作示例,示例内容主要包含以下要点:
- 创建透视表
- 创建数据缓存
- 创建数据透视表
- 添加行字段和列字段
- 添加值字段
- 设置样式
- 设置行折叠、展开
- 设置字段升序、降序
- 删除透视表
二、使用工具
- 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);
测试结果:
(本文完)