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

当Excel工作表中的数据十分庞大时,我们可以在某个选定的区域内添加“文本筛选器”、“数字筛选器”、“颜色筛选器”和“日期筛选器”等,对数据进行过滤。过滤后的工作表会显示所需数据并隐藏其余数据。

如下所示的工作表中,我们可以在“种类”所在的列添加文本筛选器,使工作表只显示一类的数据;我们可以在“数量”列添加数字筛选器,让工作表只显示80-100之间的数字所在的行;表中偶数行有背景色,我们可以添加颜色筛选器,来显示带有背景色的数据;我们还可以在“日期”列添加日期筛选器,来显示某个月份的数据。

下面的代码将分别演示这几种筛选器的添加方法。本方案需要引用Spire.Xls.dll,在编写代码前,请下载DLL文件并添加到程序。

1. 添加文本筛选器

//创建Workbook对象
Workbook wb = new Workbook();

//加载Excel文件
wb.LoadFromFile(@"C:\Users\Administrator\Desktop\data-filter.xlsx");

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

//获取AutoFilters对象
AutoFiltersCollection filters = sheet.AutoFilters;

//设置需要筛选的单元格区域
filters.Range = sheet.Range[2, 2, 16, 5];

//在所选区域的第二列添加筛选器,并设置过滤准则,即文本“C”
filters.AddFilter(1, "C");

//执行过滤
filters.Filter();

//保存文档
wb.SaveToFile("output.xlsx", ExcelVersion.Version2013);

结果:

2. 添加数字筛选器

//创建Workbook对象
Workbook wb = new Workbook();

//加载Excel文件
wb.LoadFromFile(@"C:\Users\Administrator\Desktop\data-filter.xlsx");

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

//获取AutoFilters对象
AutoFiltersCollection filters = sheet.AutoFilters;

//设置需要筛选的单元格区域
filters.Range = sheet.Range[2, 2, 16, 5];

//在所选区域的第三列添加自定义的筛选器,即“大于等于80,小于等于100”直接的数字
filters.CustomFilter(2, FilterOperatorType.GreaterOrEqual, 80, true, FilterOperatorType.LessOrEqual, 100);

//执行过滤
filters.Filter();

//保存文档
wb.SaveToFile("output.xlsx", FileFormat.Version2013);

结果:

3. 添加颜色筛选器

//创建Workbook对象
Workbook wb = new Workbook();

//加载Excel文件
wb.LoadFromFile(@"C:\Users\Administrator\Desktop\data-filter.xlsx");

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

//获取AutoFilters对象
AutoFiltersCollection filters = sheet.AutoFilters;

//设置需要筛选的单元格区域
filters.Range = sheet.Range[2, 2, 16, 5];

//在所选区域的第一列添加颜色筛选器,选择的颜色了单元格B4的背景色
filters.AddFillColorFilter(0, sheet.Range["B4"].Style.Color);

//执行过滤
filters.Filter();

//保存文档
wb.SaveToFile("output.xlsx", ExcelVersion.Version2013);

结果:

4. 添加日期筛选器

//创建Workbook对象
Workbook wb = new Workbook();

//加载Excel文件
wb.LoadFromFile(@"C:\Users\Administrator\Desktop\data-filter.xlsx");

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

//获取AutoFilters对象
AutoFiltersCollection filters = sheet.AutoFilters;

//设置需要筛选的单元格区域
filters.Range = sheet.Range[2, 2, 16, 5];


//在所选区域的第四列添加日期筛选器,以“2017年4月”作为筛选条件
filters.AddDateFilter(3, DateTimeGroupingType.Month, 2017, 4, 1, 0, 0, 0 );

//执行过滤
filters.Filter();

//保存文档
wb.SaveToFile("output.xlsx", ExcelVersion.Version2013);

结果:

  • 2
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值