Excel处理控件Spire.XLS系列教程:C# 在 Excel 中添加、修改和删除切片器

Excel 中的切片器是一种简单易用的工具,可以帮助用户过滤数据,让数据分析变得更加直观,交互性更强。与传统的过滤方式不同,切片器以按钮的形式展示过滤选项,使得用户能够快速、轻松地调整数据视图。无论是在处理大型数据集还是创建动态仪表板,切片器都能通过实时反馈所选的过滤条件,提升用户体验。这篇文章将介绍如何使用**** Spire.XLS for .NET在 C# 中添加、修改和删除 Excel 切片器

  • 向 Excel 表格添加切片器
  • 向 Excel 数据透视表添加切片器
  • 修改 Excel 中的切片器
  • 从 Excel 中删除切片器

安装 Spire.XLS for .NET

E-iceblue的spire系列产品是国产文档处理领域的优秀产品,支持国产化信创 ,帮助企业高效构建文档处理的应用程序。首先,您需要将 Spire.XLS for .NET 包含的 DLL 文件作为引用添加到您的 .NET 项目中。DLL 文件可以从此链接下载,也可以通过 NuGet 安装。

Spire.XLS for .NET下载

复制代码
PM> Install-Package Spire.XLS 

向 Excel 表格添加切片器

Spire.XLS for .NET 提供了 Worksheet.Slicers.Add(IListObject table, string destCellName, int index) 方法,用于给 Excel 工作表中的表格添加切片器。具体步骤如下:

  • 创建 Workbook 类的对象。
  • 使用 Workbook.Worksheets[0] 属性获取第一个工作表。
  • 使用 Worksheet.Range[].Value 属性向工作表添加数据。
  • 使用 Worksheet.IListObjects.Create() 方法向工作表添加表格。
  • 使用 Worksheet.Slicers.Add(IListObject table, string destCellName, int index) 方法向表格添加切片器。
  • 使用 Workbook.SaveToFile() 方法保存生成的文件。
复制代码
using Spire.Xls;
using Spire.Xls.Core;

namespace AddSlicerToTable
{
    internal class Program
    {
        static void Main(string[] args)
        {   
            // 创建 Workbook 类的实例
            Workbook workbook = new Workbook();
            // 获取工作簿中的第一个工作表
            Worksheet worksheet = workbook.Worksheets[0];

            // 向工作表中填充数据
            worksheet.Range["A1"].Value = "产品";
            worksheet.Range["A2"].Value = "葡萄";
            worksheet.Range["A3"].Value = "蓝莓";
            worksheet.Range["A4"].Value = "猕猴桃";
            worksheet.Range["A5"].Value = "樱桃";
            worksheet.Range["A6"].Value = "葡萄";
            worksheet.Range["A7"].Value = "蓝莓";
            worksheet.Range["A8"].Value = "猕猴桃";
            worksheet.Range["A9"].Value = "樱桃";

            worksheet.Range["B1"].Value = "年份";
            worksheet.Range["B2"].Value2 = 2020;
            worksheet.Range["B3"].Value2 = 2020;
            worksheet.Range["B4"].Value2 = 2020;
            worksheet.Range["B5"].Value2 = 2020;
            worksheet.Range["B6"].Value2 = 2021;
            worksheet.Range["B7"].Value2 = 2021;
            worksheet.Range["B8"].Value2 = 2021;
            worksheet.Range["B9"].Value2 = 2021;

            worksheet.Range["C1"].Value = "销售额";
            worksheet.Range["C2"].Value2 = 50;
            worksheet.Range["C3"].Value2 = 60;
            worksheet.Range["C4"].Value2 = 70;
            worksheet.Range["C5"].Value2 = 80;
            worksheet.Range["C6"].Value2 = 90;
            worksheet.Range["C7"].Value2 = 100;
            worksheet.Range["C8"].Value2 = 110;
            worksheet.Range["C9"].Value2 = 120;

            // 创建一个表格
            IListObject table = worksheet.ListObjects.Create("产品销售数据", worksheet.Range["A1:C9"]);

            // 在单元格 "A11" 中添加一个切片器,以便根据表格的第一列过滤数据
            int index = worksheet.Slicers.Add(table, "A11", 0);
            // 设置切片器的名称和样式
            worksheet.Slicers[index].Name = "产品";
            worksheet.Slicers[index].StyleType = SlicerStyleType.SlicerStyleLight1;

            // 将工作簿保存为 Excel 文件
            workbook.SaveToFile("表格切片器.xlsx", ExcelVersion.Version2013);
            workbook.Dispose();
        }
    }
}

向 Excel 数据透视表添加切片器

除了给 Excel 中的表格添加切片器,Spire.XLS for .NET 还提供了 Worksheet.Slicers.Add(IPivotTable pivot, string destCellName, int baseFieldIndex) 方法,支持给数据透视表添加切片器。具体步骤如下:

  • 创建 Workbook 类的对象。
  • 使用 Workbook.Worksheets[0] 属性获取第一个工作表。
  • 使用 Worksheet.Range[].Value 属性向工作表添加数据。
  • 使用 Workbook.PivotCaches.Add() 方法创建数据透视缓存。
  • 使用 Worksheet.PivotTables.Add() 方法基于数据透视缓存创建数据透视表。
  • 拖动数据透视字段到行、列和数据区域,并计算数据。
  • 使用 Worksheet.Slicers.Add(IPivotTable pivot, string destCellName, int baseFieldIndex) 方法向数据透视表添加切片器。
  • 设置切片器的名称、宽度、高度、样式和交叉过滤类型。
  • 计算数据透视表数据。
  • 使用 Workbook.SaveToFile() 方法保存生成的文件。
复制代码
using Spire.Xls;
using Spire.Xls.Core;

namespace AddSlicerToPivotTable
{
    internal class Program
    {
        static void Main(string[] args)
        {
            // 创建 Workbook 类的实例
            Workbook workbook = new Workbook();
            // 获取第一个工作表
            Worksheet worksheet = workbook.Worksheets[0];

            // 向工作表中添加数据
            worksheet.Range["A1"].Value = "产品";
            worksheet.Range["A2"].Value = "葡萄";
            worksheet.Range["A3"].Value = "蓝莓";
            worksheet.Range["A4"].Value = "猕猴桃";
            worksheet.Range["A5"].Value = "樱桃";
            worksheet.Range["A6"].Value = "葡萄";
            worksheet.Range["A7"].Value = "蓝莓";
            worksheet.Range["A8"].Value = "猕猴桃";
            worksheet.Range["A9"].Value = "樱桃";

            worksheet.Range["B1"].Value = "年份";
            worksheet.Range["B2"].Value2 = 2020;
            worksheet.Range["B3"].Value2 = 2020;
            worksheet.Range["B4"].Value2 = 2020;
            worksheet.Range["B5"].Value2 = 2020;
            worksheet.Range["B6"].Value2 = 2021;
            worksheet.Range["B7"].Value2 = 2021;
            worksheet.Range["B8"].Value2 = 2021;
            worksheet.Range["B9"].Value2 = 2021;

            worksheet.Range["C1"].Value = "销售额";
            worksheet.Range["C2"].Value2 = 50;
            worksheet.Range["C3"].Value2 = 60;
            worksheet.Range["C4"].Value2 = 70;
            worksheet.Range["C5"].Value2 = 80;
            worksheet.Range["C6"].Value2 = 90;
            worksheet.Range["C7"].Value2 = 100;
            worksheet.Range["C8"].Value2 = 110;
            worksheet.Range["C9"].Value2 = 120;

            // 从指定的数据范围创建一个数据透视缓存
            CellRange dataRange = worksheet.Range["A1:C9"];
            PivotCache cache = workbook.PivotCaches.Add(dataRange);

            // 从数据透视缓存创建一个数据透视表
            PivotTable pt = worksheet.PivotTables.Add("产品销售数据", worksheet.Range["A12"], cache);

            // 将字段拖动到行和列区域
            PivotField pf = pt.PivotFields["产品"] as PivotField;
            pf.Axis = AxisTypes.Row;
            PivotField pf2 = pt.PivotFields["年份"] as PivotField;
            pf2.Axis = AxisTypes.Column;

            // 将字段拖动到数据区域
            pt.DataFields.Add(pt.PivotFields["销售额"], "求和项:销售额", SubtotalTypes.Sum);

            // 设置数据透视表的样式
            pt.BuiltInStyle = PivotBuiltInStyles.PivotStyleMedium10;

            // 计算数据透视表数据
            pt.CalculateData();

            // 向数据透视表添加切片器
            int index_1 = worksheet.Slicers.Add(pt, "F12", 0);

            // 设置切片器的名称、宽度、高度和样式
            worksheet.Slicers[index_1].Name = "产品";
            worksheet.Slicers[index_1].Width = 100;
            worksheet.Slicers[index_1].Height = 120;
            worksheet.Slicers[index_1].StyleType = SlicerStyleType.SlicerStyleLight2;

            // 设置切片器的交叉过滤类型
            XlsSlicerCache slicerCache = worksheet.Slicers[index_1].SlicerCache;
            slicerCache.CrossFilterType = SlicerCacheCrossFilterType.ShowItemsWithNoData;

            // 计算数据透视表数据
            pt.CalculateData();

            // 保存工作簿为 Excel 文件
            workbook.SaveToFile("数据透视表切片器.xlsx", ExcelVersion.Version2013);
            workbook.Dispose();
        }
    }
}

修改 Excel 中的切片器

你可以使用 XlsSlicer 类下的对应属性来修改切片器的样式、名称、标题等。具体步骤如下:

  • 创建 Workbook 类的对象。
  • 使用 Workbook.LoadFromFile() 方法加载 Excel 文件。
  • 使用 Workbook.Worksheets[index] 属性获取特定工作表。
  • 使用 Worksheet.Slicers[index] 属性获取特定切片器。
  • 使用 XlsSlicer 类下的对应属性来修改切片器的属性,如样式、名称、标题、交叉过滤类型等。
  • 使用 Workbook.SaveToFile() 方法保存生成的文件。
复制代码
using Spire.Xls;
using Spire.Xls.Core;

namespace UpdateSlicer
{
    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.SlicerStyleDark4;
            slicer.Name = "切片器";
            slicer.Caption = "切片器";

            // 更改切片器的交叉过滤类型
            slicer.SlicerCache.CrossFilterType = SlicerCacheCrossFilterType.ShowItemsWithDataAtTop;

            // 在切片器中取消选择一个项目
            XlsSlicerCacheItemCollection slicerCacheItems = slicer.SlicerCache.SlicerCacheItems;
            XlsSlicerCacheItem xlsSlicerCacheItem = slicerCacheItems[0];
            xlsSlicerCacheItem.Selected = false;

            // 保存工作簿为 Excel 文件
            workbook.SaveToFile("修改切片器.xlsx", ExcelVersion.Version2013);
            workbook.Dispose();
        }
    }
}

从 Excel 中删除切片器

你可以使用 Worksheet.Slicers.RemoveAt(index) 方法从 Excel 工作表中删除特定切片器,也可以使用 Worksheet.Slicers.Clear() 方法一次性删除所有切片器。具体步骤如下:

  • 创建 Workbook 类的对象。
  • 使用 Workbook.LoadFromFile() 方法加载 Excel 文件。
  • 使用 Workbook.Worksheets[index] 属性获取特定的工作表。
  • 使用 Worksheet.Slicers.RemoveAt(index) 方法删除特定的切片器,或使用 Worksheet.Slicers.Clear() 方法删除所有切片器。
  • 使用 Workbook.SaveToFile() 方法保存生成的文件。
复制代码
using Spire.Xls;
using Spire.Xls.Core;

namespace RemoveSlicer
{
    internal class Program
    {
        static void Main(string[] args)
        {
            // 创建 Workbook 类的实例
            Workbook workbook = new Workbook();
            // 加载 Excel 文件
            workbook.LoadFromFile("表格切片器.xlsx");

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

            // 通过索引删除第一个切片器
            worksheet.Slicers.RemoveAt(0);

            // 或者删除所有切片器
            // worksheet.Slicers.Clear();

            // 保存工作簿为 Excel 文件
            workbook.SaveToFile("删除切片器.xlsx", ExcelVersion.Version2013);
            workbook.Dispose();
        }
    }
}
相关推荐
啊森要自信2 分钟前
【MySQL 数据库】MySQL索引特性(二)页目录&&(B和B+树)&&(非)聚簇索引 && 索引操作
android·数据库·sql·mysql·adb·数据库架构
2025年一定要上岸8 分钟前
【Django】-6- 登录用户身份鉴权
数据库·django·sqlite
R-G-B15 分钟前
【01】OpenCV C#——C#开发环境OpenCvSharp 环境配置 工程搭建 及代码测试
opencv·c#·opencvsharp·opencvsharp环境搭建·opencvsharp开发环境·opencv c#·opencvsharp代码测试
奋进的孤狼27 分钟前
【Java】在一个前台界面中动态展示多个数据表的字段及数据
java·数据库·oracle
极限实验室40 分钟前
IK 字段级别词典升级:IK reload API
数据库
中国lanwp1 小时前
Spring 全局异常处理机制:多个 @ControllerAdvice 与重复 @ExceptionHandler
java·数据库·spring
bing_1582 小时前
如何保护 Redis 实例的安全?
数据库·redis·安全
yh云想2 小时前
SQL 四大语言分类详解:DDL、DML、DCL、DQL
数据库·sql·oracle
三千道应用题2 小时前
WPF&C#超市管理系统(4)入库管理
c#·wpf
智者知已应修善业2 小时前
【c#窗体荔枝计算乘法,两数相乘】2022-10-6
经验分享·笔记·算法·c#·.net