excel 中的切片器是一种简单易用的工具,可以帮助用户过滤数据,让数据分析变得更加直观,交互性更强。与传统的过滤方式不同,切片器以按钮的形式展示过滤选项,使得用户能够快速、轻松地调整数据视图。无论是在处理大型数据集还是创建动态仪表板,切片器都能通过实时反馈所选的过滤条件,提升用户体验。这篇文章将介绍如何使用 spire.xls for .net 在 c# 中添加、修改和删除 excel 切片器。
安装 spire.xls for .net
首先,您需要将 spire.xls for .net 包含的 dll 文件作为引用添加到您的 .net 项目中。dll 文件可以从此链接下载,也可以通过 安装。
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() 方法保存生成的文件。
- c#
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() 方法保存生成的文件。
- c#
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() 方法保存生成的文件。
- c#
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() 方法保存生成的文件。
- c#
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();
}
}
}
申请临时 license
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用javascript。获取有效期 30 天的临时许可证。