C# 在Excel中添加、应用或删除筛选器 (日期筛选、文本筛选、数字筛选)

自动筛选器是 Excel 中的一个基本但极其有用的功能,它可以让你根据特定的条件来自动隐藏和显示你的数据。当有大量的数据需要处理时,这个功能可以帮你快速找到你需要的信息,从未更加有效地分析和处理相关数据。

下面将介绍如何使用免费.NET Excel库在Excel中添加、应用和删除自动筛选器。包含以下五个示例:

  1. C# 在Excel中添加自动筛选器
  2. C# 在Excel中执行日期筛选
  3. C# 在Excel中执行自定义数字筛选
  4. C# 在Excel中执行自定义文本筛选
  5. C# 删除Excel中的筛选器

本文用到的免费.NET Excel库为 Free Spire.XLS for .NET。该库可以通过Nuget直接安装,或者下载后手动添加Dll到项目中。

(下载链接:https://www.e-iceblue.cn/Downloads/Free-Spire-XLS-NET.html

C# 在Excel中添加自动筛选器

复制代码
using Spire.Xls;
 
namespace ExcelAutoFilter
{
    class Program
    {
        static void Main(string[] args)
        {
            //加载Excel文档
            Workbook workbook = new Workbook();
            workbook.LoadFromFile("库存.xlsx");
 
            //获取第一张工作表
            Worksheet sheet = workbook.Worksheets[0];
 
            //在指定单元格区域的标题行创建自动筛选器
            sheet.AutoFilters.Range = sheet.Range["A1:H1"];
 
            //保存生成文件
            workbook.SaveToFile("添加筛选器.xlsx", ExcelVersion.Version2016);
        }
    }
}

添加了自动筛选器后,每个被选中的列标题旁边都会出现一个箭头图标。点击这些箭头将会显示与该列相关的所有不同值的列表。效果图如下:

C# 在Excel中执行日期筛选

复制代码
using Spire.Xls;
using Spire.Xls.Core;
using Spire.Xls.Core.Spreadsheet.AutoFilter;
 
namespace DateAutoFilter
{
    class Program
    {
        static void Main(string[] args)
        {
            //加载Excel文档
            Workbook workbook = new Workbook();
            workbook.LoadFromFile("库存.xlsx");
 
            //获取第一张工作表
            Worksheet sheet = workbook.Worksheets[0];
 
            //在工作表中添加自动筛选器,并指定要筛选的范围
            sheet.AutoFilters.Range = sheet.Range["A1:A25"];
 
            //获取要筛选的列
            IAutoFilter filtercolumn = sheet.AutoFilters[0];
 
            //添加日期筛选器,筛选与2023年3月相关的数据
            sheet.AutoFilters.AddDateFilter(filtercolumn, DateTimeGroupingType.Month, 2023, 3, 0, 0, 0, 0);
 
            //执行筛选
            sheet.AutoFilters.Filter();
 
            //保存生成文件
            workbook.SaveToFile("日期筛选.xlsx", ExcelVersion.Version2016);
        }
    }
}

如果需要对表格中某些日期的数据进行查看和处理,可以借助日期筛选来完成。以下是筛选与2023年3月相关的数据的效果图:

C# 在Excel中执行自定义数字筛选

复制代码
using Spire.Xls;
using Spire.Xls.Core.Spreadsheet.AutoFilter;
 
namespace NumberAutoFilter
{
    class Program
    {
        static void Main(string[] args)
        {
            //加载Excel文档
            Workbook workbook = new Workbook();
            workbook.LoadFromFile("库存.xlsx");
 
            //获取第一张工作表
            Worksheet sheet = workbook.Worksheets[0];
 
            //在工作表中添加自动筛选器,并指定要筛选的范围
            sheet.AutoFilters.Range = sheet.Range["G1:G25"];
 
            //获取要筛选的列
            FilterColumn filtercolumn = (FilterColumn)sheet.AutoFilters[0];
 
            //添加自定义筛选器,筛选150-200之间的数值
            sheet.AutoFilters.CustomFilter(filtercolumn, FilterOperatorType.GreaterOrEqual, 150, true, FilterOperatorType.LessOrEqual, 200);
 
            //执行筛选
            sheet.AutoFilters.Filter();
 
            //保存生成文件
            workbook.SaveToFile("数字筛选.xlsx", ExcelVersion.Version2016);
        }
    }
}

使用自定义筛选来筛选数字可以设置大于、小于、介于等条件。以下是筛选出介于150-200之间的数值的效果图:

C# 在Excel中执行自定义文本筛选

复制代码
using Spire.Xls;
using Spire.Xls.Core.Spreadsheet.AutoFilter;
 
namespace CustomAutoFilter
{
    class Program
    {
        static void Main(string[] args)
        {
            //加载Excel文档
            Workbook workbook = new Workbook();
            workbook.LoadFromFile("库存.xlsx");
 
            //获取第一张工作表
            Worksheet sheet = workbook.Worksheets[0];
 
            //在工作表中添加自动筛选器,并指定要筛选的范围
            sheet.AutoFilters.Range = sheet.Range["B1:B25"];
 
            //获取要筛选的列
            FilterColumn filtercolumn = (FilterColumn)sheet.AutoFilters[0];
 
            //添加自定义筛选器,筛选以"Q型"开头的数据
            string strCrt = "Q型*";
            sheet.AutoFilters.CustomFilter(filtercolumn, FilterOperatorType.Equal, strCrt);
 
            //执行筛选
            sheet.AutoFilters.Filter();
 
            //保存生成文件
            workbook.SaveToFile("文本筛选.xlsx", ExcelVersion.Version2016);
        }
    }
}

自定义筛选还可以用来筛选指定文本,以下是筛选开头是"Q型"的文本的效果图:

C# 删除Excel中的筛选器

复制代码
using Spire.Xls;
 
namespace RemoveAutoFilter
{
    class Program
    {
        static void Main(string[] args)
        {
            //加载Excel文档
            Workbook workbook = new Workbook();
            workbook.LoadFromFile("添加筛选器.xlsx");
 
            //获取第一张工作表
            Worksheet sheet = workbook.Worksheets[0];
 
            //移除该工作表中的筛选器
            sheet.AutoFilters.Clear();
 
            //保存生成文件
            workbook.SaveToFile("删除Excel筛选器.xlsx", ExcelVersion.Version2016);
        }
    }
}

以上是在Excel中添加、删除自动筛选器,以及应用日期筛选、自定义数字和文本筛选的示例代码。除此之外,Free Spire.XLS for .NET免费库还提供了 AddFillColorFilter() 方法用于筛选单元格填充颜色、以及 AddFontColorFilter() 方法用于筛选字体颜色。

API文档:
https://www.e-iceblue.com/apireference/net/Spire.XLS/html/T_Spire_Xls_Collections_AutoFiltersCollection.htm

想了解Free Spire.XLS for .NET提供的其他操作Excel文档的功能,可点击其中文教程查看更多示例。

相关推荐
薄荷撞~可乐15 小时前
C#拆箱/装箱(性能优化)
性能优化·c#
胖咕噜的稞达鸭15 小时前
C++中的父继子承(2)多继承菱形继承问题,多继承指针偏移,继承组合分析+高质量习题扫尾继承多态
c语言·开发语言·数据结构·c++·算法·链表·c#
喵叔哟15 小时前
7. 从0到上线:.NET 8 + ML.NET LTR 智能类目匹配实战--反馈存储与数据治理:MongoDB 设计与运维
运维·mongodb·.net
Dm_dotnet16 小时前
WPF应用绑定系统快捷键
c#
.NET修仙日记16 小时前
SQL Server实战指南:从基础CRUD到高并发处理的完整面试题库
面试·职场和发展·c#·.net·sql server·.net全栈经典面试题库
武文斌7718 小时前
项目学习总结:CAN总线、摄像头、STM32概述
linux·arm开发·stm32·单片机·嵌入式硬件·学习·c#
sali-tec18 小时前
C# 基于halcon的视觉工作流-章46-不匀面划痕
人工智能·算法·计算机视觉·c#
数字化顾问19 小时前
从 DAG 到 Shuffle:掌握 Spark RDD 宽窄依赖的调优密码
c#·linq
Happy coder21 小时前
【avalonia教程】11字符串格式化、avalonia自带绑定值的转换
c#·avalonia
Panda__Panda1 天前
docker项目打包演示项目(数字排序服务)
运维·javascript·python·docker·容器·c#