原创|使用教程|编辑:吉炜炜|2025-03-19 10:41:42.680|阅读 20 次
概述:Excel 中的切片器是一种简单易用的工具,可以帮助用户过滤数据,让数据分析变得更加直观,交互性更强。这篇文章将介绍如何使用 Spire.XLS for .NET 在 C# 中添加、修改和删除 Excel 切片器。
# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>
相关链接:
Excel 中的切片器是一种简单易用的工具,可以帮助用户过滤数据,让数据分析变得更加直观,交互性更强。与传统的过滤方式不同,切片器以按钮的形式展示过滤选项,使得用户能够快速、轻松地调整数据视图。无论是在处理大型数据集还是创建动态仪表板,切片器都能通过实时反馈所选的过滤条件,提升用户体验。这篇文章将介绍如何使用 Spire.XLS for .NET 在 C# 中添加、修改和删除 Excel 切片器。
首先,您需要将 Spire.XLS for .NET 包含的 DLL 文件作为引用添加到您的 .NET 项目中。DLL 文件可以从此链接下载,也可以通过 安装。
PM> Install-Package Spire.XLS
Spire.XLS for .NET 提供了 Worksheet.Slicers.Add(IListObject table, string destCellName, int index) 方法,用于给 Excel 工作表中的表格添加切片器。具体步骤如下:
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 中的表格添加切片器,Spire.XLS for .NET 还提供了 Worksheet.Slicers.Add(IPivotTable pivot, string destCellName, int baseFieldIndex) 方法,支持给数据透视表添加切片器。具体步骤如下:
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(); } } }
你可以使用 XlsSlicer 类下的对应属性来修改切片器的样式、名称、标题等。具体步骤如下:
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(); } } }
你可以使用 Worksheet.Slicers.RemoveAt(index) 方法从 Excel 工作表中删除特定切片器,也可以使用 Worksheet.Slicers.Clear() 方法一次性删除所有切片器。具体步骤如下:
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(); } } }
————————————————————————————————————————
关于慧都科技:
慧都科技是专注软件工程、智能制造、石油工程三大行业的数字化解决方案服务商。在软件工程领域,我们提供开发控件、研发管理、代码开发、部署运维等软件开发全链路所需的产品,提供正版授权采购、技术选型、个性化维保等服务,帮助客户实现技术合规、降本增效与风险可控。慧都科技E-iceblue的官方授权代理商,提供E-iceblue系列产品免费试用,咨询,正版销售等于一体的专业化服务。E-iceblue是国产文档处理领域的优秀产品,支持国产化信创,帮助企业高效构建文档处理的应用程序。
欢迎下载|体验更多E-iceblue产品
获取更多信息请咨询 ;技术交流Q群(767755948)
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@dpuzeg.cn
文章转载自:慧都网