zoukankan      html  css  js  c++  java
  • C# 操作Excel数据透视表

    一、概述

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

    1. 创建透视表

         (1)创建数据缓存

         (2)创建数据透视表

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

         (4)添加值字段

         (5)设置样式

    2.  设置行折叠、展开

    3.  设置字段升序、降序

    4.  删除透视表

    二、准备工具

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

    三、示例操作

    1.创建透视表

    C#

                //创建一个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. 设置行折叠、展开

    C#

                //创建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. 设置字段排序

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

     

    C#

                //创建一个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);

    测试结果:

    以上内容为本次关于“Excel数据透视表的示例操作”的全部内容,欢迎转载(转载请注明出处)

    感谢阅读!

  • 相关阅读:
    Android组件界面设计工具 DroidDraw
    ExtAspNet官方示例网站和官方论坛速度归来!
    [原创]FineUI秘密花园(四) — 页面级别的配置
    [翻译]OAuth入门指南 2. 协议工作流
    ExtAspNet v2.3.4 发布了
    [翻译]JavaScript秘密花园 Type Casting,undefined,eval,setTimeout,Auto Semicolon Insertion 全部完成PDF打包下载
    [原创]祝贺《JavaScript 秘密花园》中文翻译被官方正式采纳
    [原创]使用 Google Chart 在线服务实现软件版本发布时间线图
    [原创]ExtAspNet新春贺岁版 文件上传控件、复选框列表控件、完善布局管理、表格的行扩展列、完整的100多个中文示例、30多处BUG修正与功能增强、《ExtAspNet秘密花园》系列文章
    ExtAspNet v2.3.5 发布了
  • 原文地址:https://www.cnblogs.com/Yesi/p/8715318.html
Copyright © 2011-2022 走看看