C#借助Spire.XLS for .NET实现一键移除Excel条件格式

 更新时间:2026年03月18日 08:33:17   作者:缺点内向  
在日常开发中,我们经常会遇到需要处理 Excel 文件的场景,本文将介绍如何借助 Spire.XLS for .NET 在 C# 中高效地移除这些条件格式,有需要的可以了解下

在日常开发中,我们经常会遇到需要处理 Excel 文件的场景,比如数据清洗、报表导出或批量处理。然而,有些 Excel 文件中包含复杂的条件格式(Conditional Formatting) ,可能会影响数据展示,甚至干扰后续处理逻辑。

那么,如何在 C# 中高效地移除这些条件格式呢?本文将介绍一种无需依赖 Microsoft Office 的方法,借助 Spire.XLS for .NET 快速实现。

为什么需要删除条件格式

在实际项目中,删除条件格式通常有以下几种场景:

  • 导出标准化报表,避免颜色或样式干扰
  • 减少文件复杂度,提高处理性能
  • 防止条件格式影响数据读取或解析
  • 清理用户上传的 Excel 文件(常见于 Web 应用)

相比手动操作,使用代码批量处理更高效、更稳定。

Spire.XLS for .NET 简介

Spire.XLS for .NET 是一款功能强大的 Excel 处理组件,支持在 C# / VB.NET 中创建、读取、编辑和转换 Excel 文件。它的优势在于:

  • 无需安装 Microsoft Excel
  • 支持 .NET Framework 和 .NET Core
  • API 简洁,易于上手
  • 适用于服务器环境(如 ASP.NET、Docker)

实现思路

在 Spire.XLS 中,条件格式是通过 ConditionalFormats 集合来管理的。要删除条件格式,本质上就是清空指定单元格区域中的条件格式规则。

我们可以按以下步骤实现:

  • 加载 Excel 文件
  • 获取工作表
  • 定位目标单元格区域
  • 清除条件格式
  • 保存文件

示例代码

下面是一个完整的示例,演示如何删除指定区域的条件格式:

using Spire.Xls;

class Program
{
    static void Main(string[] args)
    {
        // 创建 Workbook 对象
        Workbook workbook = new Workbook();

        // 加载 Excel 文件
        workbook.LoadFromFile("input.xlsx");

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

        // 获取指定单元格区域
        CellRange range = sheet.Range["A1:D20"];

        // 删除该区域内的所有条件格式
        range.ConditionalFormats.Clear();

        // 保存文件
        workbook.SaveToFile("output.xlsx", ExcelVersion.Version2016);
    }
}

删除整张表的条件格式

如果你希望清除整个工作表的条件格式,可以直接遍历所有条件格式集合:

sheet.ConditionalFormats.Clear();

这种方式适合需要彻底清理格式的场景,比如数据导出或模板重置。

知识扩展

C# 设置Excel条件格式

应用条件格式用于高亮重复、唯一数值

using Spire.Xls;
using System.Drawing;
namespace HightDuplicateData_XLS
{
    class Program
    {
        static void Main(string[] args)
        {
            //实例化Workbook类,加载测试文档
            Workbook workbook = new Workbook();
            workbook.LoadFromFile("test.xlsx");
            //获取第一个工作表
            Worksheet sheet = workbook.Worksheets[0];
            //应用条件格式1到指定数据范围,高亮重复数值的单元格
            ConditionalFormatWrapper format1 = sheet.Range["A3:A13"].ConditionalFormats.AddCondition();
            format1.FormatType = ConditionalFormatType.DuplicateValues;
            format1.BackColor = Color.Cyan;
            //应用条件格式2到指定数据范围,高亮唯一值的单元格
            ConditionalFormatWrapper format2 = sheet.Range["A3:A13"].ConditionalFormats.AddCondition();
            format2.FormatType = ConditionalFormatType.UniqueValues;
            format2.BackColor = Color.Yellow;
            //保存文档并打开            
            workbook.SaveToFile("result.xlsx", ExcelVersion.Version2013);
            System.Diagnostics.Process.Start("result.xlsx");
        }
    }
}

应用条件格式用于高亮峰值(最高、最低)

using Spire.Xls;
using System.Drawing;
namespace HighlightTopData_XLS
{
    class Program
    {
        static void Main(string[] args)
        {
            //实例化workbook类
            Workbook workbook = new Workbook();
            //加载测试文档
            workbook.LoadFromFile("test.xlsx");
            //获取第一个工作表
            Worksheet sheet = workbook.Worksheets[0];
            //应用条件格式1到指定范围,并高亮最高(依次排序)的两个数值
            ConditionalFormatWrapper format1 = sheet.Range["B17:B24"].ConditionalFormats.AddCondition();
            format1.FormatType = ConditionalFormatType.TopBottom;
            format1.TopBottom.Type = TopBottomType.Top;
            format1.TopBottom.Rank = 2;
            format1.BackColor = Color.Green;
            //应用条件格式2到指定范围,并高亮最低(依次排序)的两个数值
            ConditionalFormatWrapper format2 = sheet.Range["B17:B24"].ConditionalFormats.AddCondition();
            format2.FormatType = ConditionalFormatType.TopBottom;
            format2.TopBottom.Type = TopBottomType.Bottom;
            format2.TopBottom.Rank = 2;
            format2.BackColor = Color.RosyBrown;
            //保存并打开文档
            workbook.SaveToFile("output.xlsx", ExcelVersion.Version2013);
            System.Diagnostics.Process.Start("output.xlsx");
        }
    }
}

应用条件格式用于高亮低于、高于平均值的数值

using System.Drawing;
using Spire.Xls;
using Spire.Xls.Core;
using Spire.Xls.Core.Spreadsheet.Collections;
namespace Average_Condition
{
    class Program
    {
        static void Main(string[] args)
        {
            //实例化workbook类
            Workbook workbook = new Workbook();
            //加载文档
            workbook.LoadFromFile("test.xlsx");
            //获取第一个工作表
            Worksheet sheet = workbook.Worksheets[0];
            //添加条件格式1并应用到指定数据范围
            XlsConditionalFormats format1 = sheet.ConditionalFormats.Add();
            format1.AddRange(sheet.Range["B17:B24"]);
            //高亮低于平均数值的单元格
            IConditionalFormat cf1 = format1.AddAverageCondition(AverageType.Below);
            cf1.BackColor = Color.SkyBlue;
            //添加条件格式2并应用到指定数据范围
            XlsConditionalFormats format2 = sheet.ConditionalFormats.Add();
            format2.AddRange(sheet.Range["B17:B24"]);
            //高亮高于平均数值的单元格
            IConditionalFormat cf2 = format1.AddAverageCondition(AverageType.Above);
            cf2.BackColor = Color.Orange;
            //保存并打开文档
            workbook.SaveToFile("result.xlsx", ExcelVersion.Version2013);
            System.Diagnostics.Process.Start("result.xlsx");
        }
    }
}

注意事项

在实际使用中,有几个细节值得注意:

  • 条件格式和普通单元格样式是分开的,清除条件格式不会影响已有数据或静态样式
  • 如果 Excel 文件较大,建议只清理必要区域以提升性能
  • 在服务器环境中运行时,确保使用 .NET Core 版本以避免 GDI+ 依赖问题

总结

通过 Spire.XLS for .NET,我们可以用非常简洁的代码实现 Excel 条件格式的删除,无需依赖 Office 组件,非常适合自动化处理和服务器端应用。

无论是批量清洗数据,还是规范化导出报表,这种方式都能大大提高开发效率。

如果你正在处理复杂的 Excel 文件,不妨试试这种方法,通常几行代码就能解决问题。

到此这篇关于C#借助Spire.XLS for .NET实现一键移除Excel条件格式的文章就介绍到这了,更多相关C#移除Excel条件格式内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • C#遍历文件夹及子目录下所有图片

    C#遍历文件夹及子目录下所有图片

    这篇文章主要为大家详细介绍了C# 遍历文件夹及子目录下所有图片的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-01-01
  • C#中TransactionScope的使用小结

    C#中TransactionScope的使用小结

    本篇文章主要是对C#中TransactionScope的使用方法进行了详细的介绍,需要的朋友可以过来参考下,希望对大家有所帮助
    2014-01-01
  • 深入学习C#网络编程之HTTP应用编程(下)

    深入学习C#网络编程之HTTP应用编程(下)

    这篇文章主要介绍了深入学习C#网络编程之HTTP应用编程的相关知识,文中讲解的非常详细,帮助大家更好的学习c#网络编程,感兴趣的朋友可以了解下
    2020-06-06
  • 基于WPF实现验证码控件

    基于WPF实现验证码控件

    这篇文章主要介绍了如何利用WPF实现一个简单的验证码控件,文中的示例代码讲解详细,对我们学习或工作有一定帮助,需要的可以参考一下
    2022-08-08
  • C#中数组Array,ArrayList,泛型List详细对比

    C#中数组Array,ArrayList,泛型List详细对比

    关于数组Array,ArrayList,泛型List,简单的说数组就是值对象,它存储数据元素类型的值的一系列位置.Arraylist和list可以提供添加,删除,等操作的数据. 具体如何进行选择使用呢,我们来详细探讨下
    2016-06-06
  • C#使用winform简单导出Excel的方法

    C#使用winform简单导出Excel的方法

    这篇文章主要介绍了C#使用winform简单导出Excel的方法,结合实例形式分析了WinForm操作Excel文件的写入导出等相关技巧,需要的朋友可以参考下
    2016-06-06
  • c#抽签系统的实现示例

    c#抽签系统的实现示例

    本文主要介绍了c#抽签系统的实现示例,一个基于c#的简单抽签系统,可以重新导入数据,清空数据。文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-10-10
  • 基于使用递归推算指定位数的斐波那契数列值的解决方法

    基于使用递归推算指定位数的斐波那契数列值的解决方法

    本篇文章介绍了,基于使用递归推算指定位数的斐波那契数列值的解决方法。需要的朋友参考下
    2013-05-05
  • c# HttpClient设置超时的步骤

    c# HttpClient设置超时的步骤

    这篇文章主要介绍了c# HttpClient设置超时的步骤,帮助大家更好的理解和学习使用c#,感兴趣的朋友可以了解下
    2021-03-03
  • C#实现FTP传送文件的示例

    C#实现FTP传送文件的示例

    这篇文章主要介绍了C#实现FTP传送文件的示例,帮助大家更好的理解和学习c#的使用,感兴趣的朋友可以了解下
    2020-12-12

最新评论