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

 更新时间:2025年03月07日 17:16:25   作者:nuclear2011  
本文主要介绍了如何使用C#在Excel中插入和操作切片器,包括插入切片器到透视表和表格,修改切片器属性以及删除切片器,主要使用了Spire.XLSfor.NET库来实现这些功能,需要的朋友可以参考下

切片器(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:

PM> Install-Package Spire.XLS

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

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 参数表示数据透视表的特定字段,切片器将基于该字段对数据透视表执行数据筛选。

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

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

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

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();
        }
    }
}

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

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

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 参数表示列的索引,切片器将基于该列对表格执行数据筛选。

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

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

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

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();
        }        
    }
}

为现有表格添加切片器

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

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 属性设置标题。此外,还可以调整其他设置,例如取消特定条目的选中状态等。

以下是具体实现代码:

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()方法,删除工作表中所有的切片器。

以下是具体实现代码:

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 中插入、修改和删除切片器的全部内容。

到此这篇关于C#实现在Excel中插入和操作切片器的文章就介绍到这了,更多相关C# Excel插入和操作切片器内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Unity3d 使用Gizmos画一个圆圈

    Unity3d 使用Gizmos画一个圆圈

    这篇文章主要介绍了Unity3d 使用Gizmos画一个圆圈的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-04-04
  • c#发送请求访问外部接口的实例

    c#发送请求访问外部接口的实例

    这篇文章主要介绍了c#发送请求访问外部接口的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-01-01
  • C#中JSON转为实体类和List以及结合使用

    C#中JSON转为实体类和List以及结合使用

    开发中经常遇到将JSON字符串转换为List的需求,下面这篇文章主要给大家介绍了关于C#中JSON转为实体类和List以及结合使用的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-01-01
  • C#实现十进制数转换为十六进制的几种方式

    C#实现十进制数转换为十六进制的几种方式

    在C#中,十进制和十六进制转换非常简单,本文给大家介绍了C#实现十进制数转换为十六进制的几种方式,并通过代码示例讲解的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下
    2024-04-04
  • C# 如何调用C++ dll string类型返回

    C# 如何调用C++ dll string类型返回

    这篇文章主要介绍了C# 如何调用C++ dll string类型返回问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-11-11
  • C# 服务器发送邮件失败实例分析

    C# 服务器发送邮件失败实例分析

    在本篇文章里小编给大家带来一篇关于C# 服务器发送邮件失败实例内容,需要的朋友们可以学习下。
    2020-03-03
  • C#中WebBrowser.DocumentCompleted事件多次调用问题解决方法

    C#中WebBrowser.DocumentCompleted事件多次调用问题解决方法

    这篇文章主要介绍了C#中WebBrowser.DocumentCompleted事件多次调用问题解决方法,本文讲解了3种情况和各自情况的解决方法,需要的朋友可以参考下
    2015-01-01
  • WPF实现动画效果

    WPF实现动画效果

    这篇文章介绍了WPF实现动画效果的方法,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-01-01
  • C#多线程之线程绑定ThreadLocal类

    C#多线程之线程绑定ThreadLocal类

    这篇文章介绍了C#多线程之线程绑定ThreadLocal类的用法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-06-06
  • C#实现Stripe支付的方法实践

    C#实现Stripe支付的方法实践

    本文主要介绍了C#实现Stripe支付的方法实践,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02

最新评论