Chinaunix首页 | 论坛 | 博客
  • 博客访问: 117499
  • 博文数量: 45
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 372
  • 用 户 组: 普通用户
  • 注册时间: 2017-10-27 10:00
  • 认证徽章:
文章分类

全部博文(45)

文章存档

2018年(36)

2017年(9)

我的朋友

分类: C#/.net

2018-04-27 15:48:30

一、概述

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

1. 创建透视表

     (1)创建数据缓存

     (2)创建数据透视表

     (3)添加行字段和列字段

     (4)添加值字段

     (5)设置样式

2.  设置行折叠、展开

3.  设置字段升序、降序

4.  删除透视表

二、准备工具


PS:安装后,注意在项目中引用Spire.XLS.dll再进行代码操作,dll文件在安装路径下的Bin文件夹中获取。

三、示例操作

1.创建透视表

C#


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

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

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

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

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

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

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

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

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

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

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

  27.             //保存并打开文档
  28.             workbook.SaveToFile("数据透视表.xlsx", ExcelVersion.Version2013);
  29.             System.Diagnostics.Process.Start("数据透视表.xlsx");
创建结果:

2. 设置行折叠、展开


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

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

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

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

  12.             //保存并打开文档
  13.             workbook.SaveToFile("折叠、展开行.xlsx", ExcelVersion.Version2013);
  14.             System.Diagnostics.Process.Start("折叠、展开行.xlsx");
测试结果:

3. 设置字段排序

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


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

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

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

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

测试结果:



4. 删除透视表

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

  •  根据透视表名称删除
  •  根据透视表索引删除

  1.             //创建一个工作簿,并加载Excel文档
  2.             Workbook workbook = new Workbook();
  3.             workbook.LoadFromFile("数据透视表.xlsx");

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

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

  8.             //保存文档
  9.             workbook.SaveToFile("删除数据透视表.xlsx", ExcelVersion.Version2013);
测试结果:







阅读(92) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~
评论热议
请登录后评论。

登录 注册