一、概述
数据透视表(pivot table)是一种交互式的表,可以进行某些计算,如求和与计数等,可动态地改变透视表版面布置,也可以重新安排行号、列标和页字段。当改变版面布置时,数据透视表也会按照新的布置来进行更新,可以说是一个功能强大的数据分析工具。因此,本篇文章将介绍在c# 中关于excel数据透视表的操作示例,示例内容主要包含以下要点:
1. 创建透视表
(1)创建数据缓存
(2)创建数据透视表
(3)添加行字段和列字段
(4)添加值字段
(5)设置样式
2. 设置行折叠、展开
3. 设置字段升序、降序
4. 删除透视表
二、准备工具
spire.xls for .net (可支持80余种excel内置的数据透视表样式)
ps:安装后,注意在项目中引用spire.xls.dll再进行代码操作,dll文件在安装路径下的bin文件夹中获取。
三、示例操作
1.创建透视表
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
//创建一个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. 设置行折叠、展开
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
//创建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. 设置字段排序
这里支持三种不同类型的排序,可根据需要选择相应的排序类型。
1
2
3
4
5
6
7
8
9
10
11
12
13
|
//创建一个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. 删除透视表
删除透视表可通过以下两种方法:
- 根据透视表名称删除
- 根据透视表索引删除
1
2
3
4
5
6
7
8
9
10
11
12
|
//创建一个工作簿,并加载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); |
测试结果:
以上内容为本次关于“excel数据透视表的示例操作”的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。
原文链接:https://www.cnblogs.com/Yesi/archive/2018/04/04/8715318.html