返回顶部
分享到

C#实现在Excel中插入和操作切片器

C#教程 来源:互联网 作者:佚名 发布时间:2025-03-07 21:39:25 人浏览
摘要

切片器(Slicer)是Excel中的一个强大工具,它提供了直观且交互式的方式来过滤数据。通过切片器,用户可以轻松选择数据范围并快速查看特定数据。切片器通常与透视表(Pivot Table)或表格(

切片器(Slicer)是Excel中的一个强大工具,它提供了直观且交互式的方式来过滤数据。通过切片器,用户可以轻松选择数据范围并快速查看特定数据。切片器通常与透视表(Pivot Table)或表格(Table)结合使用,使数据分析更加高效。在这篇文章中,我们将探讨如何使用C# 实现在Excel中插入和操作切片器,主要内容包含以下几个方面:

  • C# 在Excel中插入切片器
    • 插入切片器到透视表
    • 插入切片器到表格
  • C# 在Excel中修改切片器
  • C# 删除Excel中的切片器

使用工具

要使用C# 在Excel中插入和操作切片器,需要用到合适的Excel文档处理库。本文所使用的是Spire.XLS for .NET库。该库主要用于在 .NET 应用程序中创建、读取、编辑、转换 和打印Excel 文档。

安装 Spire.XLS for .NET

你可以在 NuGet 包管理器中运行以下命令安装 Spire.XLS for .NET:

1

PM> Install-Package Spire.XLS

如果你已经安装了该库并希望升级到最新版本,可以使用以下命令:

1

PM> Update-Package Spire.XLS

C# 在Excel中插入切片器

在 Excel 中,切片器通常与数据透视表或表格相关联。下面我们将分别介绍如何将切片器插入到数据透视表和表格中。

插入切片器到透视表

在 Spire.XLS 中,可以使用 Worksheet.Slicers.Add(IPivotTable pivot, string destCellName, IPivotField baseField) 方法为数据透视表添加切片器,其中:

  • IPivotTable pivot 参数表示要插入切片器的数据透视表对象。
  • string destCellName 参数表示插入切片器的目标单元格位置。
  • IPivotField baseField 参数表示数据透视表的特定字段,切片器将基于该字段对数据透视表执行数据筛选。

在添加切片器到透视表时,你可以选择添加到现有透视表。如果没有现有透视表,也可以新建透视表然后为其添加切片器。

新建透视表并为其添加切片器

以下是新建数据透视表并为其添加切片器的实现代码:

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

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

using Spire.Xls;

using Spire.Xls.Core;

using Spire.Xls.Core.Spreadsheet.PivotTables;

  

namespace InsertSlicers

{

    internal class Program

    {

        static void Main(string[] args)

        {

            // 创建一个新的工作簿

            Workbook workbook = new Workbook();

  

            // 添加一个工作表

            Worksheet sheet = workbook.Worksheets[0];

  

            // 添加示例数据

            sheet.Range["A1"].Value = "产品";

            sheet.Range["B1"].Value = "一月";

            sheet.Range["C1"].Value = "二月";

            sheet.Range["D1"].Value = "三月";

            sheet.Range["A2"].Value = "产品A";

            sheet.Range["B2"].NumberValue = 500;

            sheet.Range["C2"].NumberValue = 300;

            sheet.Range["D2"].NumberValue = 400;

            sheet.Range["A3"].Value = "产品B";

            sheet.Range["B3"].NumberValue = 600;

            sheet.Range["C3"].NumberValue = 700;

            sheet.Range["D3"].NumberValue = 800;

  

            // 添加数据透视表

            CellRange dataRange = sheet.Range["A1:D3"];

            PivotCache cache = workbook.PivotCaches.Add(dataRange);

            PivotTable pivotTable = sheet.PivotTables.Add("PivotTable1", sheet.Range["A5"], cache);

  

            // 将字段拖动到行区域

            PivotField pivotField = pivotTable.PivotFields["产品"] as PivotField;

            pivotField.Axis = AxisTypes.Row;

  

            // 将字段拖动到数据区域

            pivotTable.DataFields.Add(pivotTable.PivotFields["一月"], "一月总计", SubtotalTypes.Sum);

            pivotTable.DataFields.Add(pivotTable.PivotFields["二月"], "二月总计", SubtotalTypes.Sum);

            pivotTable.DataFields.Add(pivotTable.PivotFields["三月"], "三月总计", SubtotalTypes.Sum);

  

            // 设置数据透视表的样式

            pivotTable.BuiltInStyle = PivotBuiltInStyles.PivotStyleLight16;

  

            // 刷新数据透视表

            pivotTable.CalculateData();

  

            // 添加切片器

            sheet.Slicers.Add(pivotTable, "F5", pivotField);

  

            // 保存文档

            workbook.SaveToFile("插入切片器到透视表.xlsx", ExcelVersion.Version2013);           

            workbook.Dispose();

        }

    }

}

为现有数据透视表添加切片器

以下是为现有数据透视表添加切片器的实现代码:

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

using Spire.Xls;

using Spire.Xls.Core.Spreadsheet.PivotTables;

  

namespace InsertSlicers

{

    internal class Program

    {

        static void Main(string[] args)

        {

            // 加载Excel文件

            Workbook workbook = new Workbook();

            workbook.LoadFromFile("数据透视表.xlsx");

  

            // 获取第一个工作表

            Worksheet sheet = workbook.Worksheets[0];

  

            // 获取第一个数据透视表

            XlsPivotTable pivotTable = sheet.PivotTables[0] as XlsPivotTable;

  

            // 获取数据透视表的特定字段

            PivotField pivotField = pivotTable.PivotFields["产品"] as PivotField;           

  

            // 添加切片器

            sheet.Slicers.Add(pivotTable, "F5", pivotField);

  

            // 保存文档

            workbook.SaveToFile("插入切片器到现有透视表.xlsx", ExcelVersion.Version2013);

            workbook.Dispose();

        }

    }

}

插入切片器到表格

如果要为表格添加切片器,可以使用 Worksheet.Slicers.Add(IListObject table, string destCellName, int index) 方法,其中:

  • IListObject table 参数表示要插入切片器的表格对象。
  • string destCellName 参数表示插入切片器的目标单元格位置。
  • int index 参数表示列的索引,切片器将基于该列对表格执行数据筛选。

同样地,你可以为现有表格添加切片器,也可以新建表格并为其添加切片器。

新建表格并为其添加切片器

以下是新建表格并为其添加切片器的实现代码:

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

41

42

43

44

45

using Spire.Xls;

using Spire.Xls.Core;

  

namespace InsertSlicers

{

    internal class Program

    {

        static void Main(string[] args)

        {

            // 创建一个新的工作簿

            Workbook workbook = new Workbook();

  

            // 添加一个工作表

            Worksheet sheet = workbook.Worksheets[0];

  

            // 添加示例数据

            sheet.Range["A1"].Value = "产品";

            sheet.Range["B1"].Value = "类别";

            sheet.Range["C1"].Value = "销量";

            sheet.Range["A2"].Value = "产品A";

            sheet.Range["B2"].Value = "电子产品";

            sheet.Range["C2"].NumberValue = 500;

            sheet.Range["A3"].Value = "产品B";

            sheet.Range["B3"].Value = "家电";

            sheet.Range["C3"].NumberValue = 600;

            sheet.Range["A4"].Value = "产品C";

            sheet.Range["B4"].Value = "电子产品";

            sheet.Range["C4"].NumberValue = 700;

            sheet.Range["A5"].Value = "产品D";

            sheet.Range["B5"].Value = "家电";

            sheet.Range["C5"].NumberValue = 800;

  

            // 将数据转换为表格

            CellRange tableRange = sheet.Range["A1:C5"];

            IListObject table = sheet.ListObjects.Create("Table1", tableRange);

            table.BuiltInTableStyle = TableBuiltInStyles.TableStyleMedium2;

  

            sheet.Slicers.Add(table, "E1", 0);

  

            // 保存文档

            workbook.SaveToFile("新建表格并插入切片器.xlsx", ExcelVersion.Version2013);

            workbook.Dispose();

        }       

    }

}

为现有表格添加切片器

以下是为现有表格添加切片器的实现代码:

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

using Spire.Xls;

using Spire.Xls.Core;

  

namespace InsertSlicers

{

    internal class Program

    {

        static void Main(string[] args)

        {

            // 加载Excel文件

            Workbook workbook = new Workbook();

            workbook.LoadFromFile("表格.xlsx");

  

            // 获取第一个工作表

            Worksheet sheet = workbook.Worksheets[0];

  

            // 获取第一个表格

            IListObject table = sheet.ListObjects[0];

             

            // 为表格添加切片器

            sheet.Slicers.Add(table, "E1", 0);

  

            // 保存文档

            workbook.SaveToFile("为现有表格插入切片器.xlsx", ExcelVersion.Version2013);

            workbook.Dispose();

        }       

    }

}

C# 在Excel中修改切片器

在某些情况下,你可能需要调整切片器的外观、名称或标题等属性。可以通过 Worksheet.Slicers[index] 获取指定切片器,并使用 XlsSlicer 类的 StyleType 属性更改样式,Name 属性修改名称,Caption 属性设置标题。此外,还可以调整其他设置,例如取消特定条目的选中状态等。

以下是具体实现代码:

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

41

42

43

using Spire.Xls;

using Spire.Xls.Core;

  

namespace ModifySlicers

{

    internal class Program

    {

        static void Main(string[] args)

        {

            // 创建 Workbook 类的实例

            Workbook workbook = new Workbook();

            // 加载 Excel 文件

            workbook.LoadFromFile("切片器.xlsx");

  

            // 获取第一个工作表

            Worksheet worksheet = workbook.Worksheets[0];

  

            // 获取工作表中的第一个切片器

            XlsSlicer slicer = worksheet.Slicers[0];

  

            // 更改切片器的样式、名称和标题

            slicer.StyleType = SlicerStyleType.SlicerStyleDark6;

            slicer.Name = "新名称";

            slicer.Caption = "新标题";

  

            // 在切片器中取消选择第一个项目

            XlsSlicerCacheItemCollection slicerCacheItems = slicer.SlicerCache.SlicerCacheItems;

            XlsSlicerCacheItem xlsSlicerCacheItem = slicerCacheItems[0];

            xlsSlicerCacheItem.Selected = false;

  

            // 修改切片器的列数

            slicer.NumberOfColumns = 2;

  

            // 修改切片器的宽度和高度

            slicer.Width = 200;

            slicer.Height = 200;

  

            // 保存工作簿为 Excel 文件

            workbook.SaveToFile("修改切片器.xlsx", ExcelVersion.Version2013);

            workbook.Dispose();

        }       

    }

}

C# 删除Excel中的切片器

如果要删除 Excel 工作表中的某个切片器,可以使用 Worksheet.Slicers.RemoveAt(int index) 方法。此外,你还可以使用Worksheet.Slicers.Clear()方法,删除工作表中所有的切片器。

以下是具体实现代码:

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

using Spire.Xls;

using Spire.Xls.Core;

  

namespace RemoveSlicers

{

    internal class Program

    {

        static void Main(string[] args)

        {

            // 打开Excel文件

            Workbook workbook = new Workbook();

            workbook.LoadFromFile("切片器.xlsx");

  

            // 获取第一个工作表

            Worksheet worksheet = workbook.Worksheets[0];

  

            // 删除第一个切片器

            worksheet.Slicers.RemoveAt(0);

  

            // 或者删除所有切片器

            // worksheet.Slicers.Clear();

  

            // 保存工作簿为 Excel 文件

            workbook.SaveToFile("删除切片器.xlsx", ExcelVersion.Version2013);

            workbook.Dispose();

        }

    }

}

以上就是使用 C# 在 Excel 中插入、修改和删除切片器的全部内容。


版权声明 : 本文内容来源于互联网或用户自行发布贡献,该文观点仅代表原作者本人。本站仅提供信息存储空间服务和不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权, 违法违规的内容, 请发送邮件至2530232025#qq.cn(#换@)举报,一经查实,本站将立刻删除。
原文链接 :
相关文章
  • C#实现在Excel中插入和操作切片器

    C#实现在Excel中插入和操作切片器
    切片器(Slicer)是Excel中的一个强大工具,它提供了直观且交互式的方式来过滤数据。通过切片器,用户可以轻松选择数据范围并快速查看特
  • C/C++ Windows SAPI实现文字转语音功能
    本文通过封装Windows SAPI(Speech Application Programming Interface),提供了一个现代化的C++接口实现文字转语音功能。主要特性包括支持同步/异步语
  • C#结合html2canvas切割图片并导出到PDF

    C#结合html2canvas切割图片并导出到PDF
    需求 html2canvas 是一个 JavaScript 库,它可以把任意一个网页中的元素(包括整个网页)绘制到指定的 canvas 中,适用于生成网截图或将指定元
  • C#使用录音并导出录音数据

    C#使用录音并导出录音数据
    一、枚举电脑录音设备,指定设备录音 1、使用Vs2019的Nuget包管理器安装NAudio包 NAudio包 如图所示: 2、创建录音对象并指定录音格式 1 2 3 4
  • C#播放short或者byte类型的音频

    C#播放short或者byte类型的音频
    一、通过Nuget安装NAudio包 开发工具:vs2019 点击VisualStudio 2019的工具-NuGet包管理器-》管理解决方案的NuGet的程序包-》浏览-》在搜索框中输入
  • C# winfrom异步加载数据不影响窗体UI的操作方法
    在数字浪潮汹涌澎湃的时代,程序开发宛如一座神秘而宏伟的魔法城堡,矗立在科技的浩瀚星空中。代码的字符,似那闪烁的星辰,按照特
  • 使用C#实现AES加密与解密
    1. AES 加密简介 AES(Advanced Encryption Standard,高级加密标准)是一种对称加密算法,意味着加密和解密使用相同的密钥。AES 支持不同的密钥长
  • 在idea中利用maven实现多环境配置自动打包的流程

    在idea中利用maven实现多环境配置自动打包的流程
    spring的多环境配置 spring提供了多环境配置文件的功能,只需要根据配置文件后缀即可加载对应的配置文件 1 2 3 4 spring: profiles: # 修改后缀即
  • Java实现自定义重试工具类介绍
    Spring-retry、guava的Retry都提供有重试工具,但二者均存在一个确缺点,即如果重试等待过程中会一直阻塞工作线程,这对于在生产环境使用是
  • C#中SetStyle的具体使用介绍
    在C#的Windows Forms应用程序中,SetStyle方法是Control类的一个成员,用于启用或禁用特定的控件样式。这些样式控制控件的不同行为和外观。以
  • 本站所有内容来源于互联网或用户自行发布,本站仅提供信息存储空间服务,不拥有版权,不承担法律责任。如有侵犯您的权益,请您联系站长处理!
  • Copyright © 2017-2022 F11.CN All Rights Reserved. F11站长开发者网 版权所有 | 苏ICP备2022031554号-1 | 51LA统计