C#教程

关注公众号 jb51net

关闭
首页 > 软件编程 > C#教程 > C# Excel工作表查找与替换数据

使用C#在Excel工作表中查找与替换数据的操作指南

作者:大丸子

在日常业务中,Excel 常用于保存产品清单、客户信息、销售记录等结构化数据,本文将介绍如何使用 C# 在 Excel 中高效完成查找与替换操作,并结合一个实际业务场景表格数据进行演示,示例涵盖从加载文件、查找目标数据到替换与保存完整流程,需要的朋友可以参考下

在日常业务中,Excel 常用于保存产品清单、客户信息、销售记录等结构化数据。当表格数据量较大时,手动查找与替换内容不仅效率低,还容易出错。此时借助 C# 程序自动化处理 可以快速完成数据的批量查找和更新,从而显著提升工作效率。

本文将介绍如何使用 C# 在 Excel 中高效完成查找与替换操作,并结合一个实际业务场景表格数据进行演示。示例涵盖从加载文件、查找目标数据到替换与保存完整流程。

本文所使用的方法需要用到 Free Spire.XLS for .NET,可通过 NuGet 安装:

Install-Package FreeSpire.XLS

加载 Excel 工作簿

在操作前,需要先将目标 Excel 文件加载到内存中。下面的示例展示了如何加载现有文件并获取第一个工作表:

using Spire.Xls;
using System.Drawing; // 用于设置单元格颜色

// 创建 Workbook 实例
Workbook workbook = new Workbook();

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

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

Console.WriteLine("Excel 文件加载成功!");

查找数据并定位

Spire.XLS 提供了多种查找模式:精确匹配、模糊匹配、全字匹配以及正则表达式查找。通过 FindAllString() 方法,我们可以一次性获取所有匹配单元格。

以下代码示例查找所有包含“ProductA”的单元格,并将结果高亮显示:

// 查找所有包含“ProductA”的单元格
CellRange[] ranges = worksheet.FindAllString("ProductA", false, false);

if (ranges.Length > 0)
{
    Console.WriteLine($"找到 {ranges.Length} 处匹配项:");
    foreach (CellRange range in ranges)
    {
        Console.WriteLine($" - 单元格: {range.RangeAddressLocal}, 内容: {range.Text}");
        // 高亮结果
        range.Style.Color = Color.Yellow;
    }
}
else
{
    Console.WriteLine("未找到匹配项。");
}

常见查找模式参数说明如下:

查找模式caseSensitivewholeWordregex示例
精确匹配truetruefalse查找“Apple”,不会匹配“apple”
模糊匹配falsefalsefalse查找“apple”,会匹配“Apple Pie”
全字匹配falsetruefalse查找“apple”,不会匹配“Apple Pie”
正则表达式falsefalsetrue查找 ^P.*tA$ (以 P 开头,以 tA 结尾)

替换与更新数据

在定位到数据后,可以直接修改单元格内容实现替换。以下示例演示将“旧产品代码”替换为“新产品代码”,并用绿色高亮替换过的单元格:

string searchText = "旧产品代码";
string replaceText = "新产品代码";

// 查找目标文本
CellRange[] foundRanges = worksheet.FindAllString(searchText, false, false);

if (foundRanges.Length > 0)
{
    Console.WriteLine($"正在替换 {foundRanges.Length} 处 '{searchText}'...");
    foreach (CellRange range in foundRanges)
    {
        range.Text = replaceText;
        range.Style.Color = Color.LightGreen;
        Console.WriteLine($" - 已将 {range.RangeAddressLocal} 替换为 '{replaceText}'。");
    }
}
else
{
    Console.WriteLine($"未找到 '{searchText}'。");
}

如果只想替换单元格中的部分文本,可以使用 TextPartReplace() 方法:

// 假设 A1 的内容为 "Hello World"
worksheet.Range["A1"].TextPartReplace("World", "Spire");
Console.WriteLine($"A1 新内容: {worksheet.Range["A1"].Text}"); // 输出:Hello Spire

保存修改结果

完成查找与替换后,需要保存 Excel 文件。可以保存为新文件,也可以覆盖原文件:

// 保存为新文件
workbook.SaveToFile("Modified_SampleData.xlsx", ExcelVersion.Version2016);
Console.WriteLine("文件已保存为 Modified_SampleData.xlsx");

// 释放资源
workbook.Dispose();

替换结果演示

运行上述代码后,将生成一个名为 Modified_SampleData.xlsx 的文件,替换前后内容如下:

关键类与方法总结

为了更直观地理解本文示例所用的核心 API,以下整理了常见类、方法与属性,供快速参考:

类 / 属性 / 方法说明
WorkbookExcel 工作簿对象,用于加载、保存和管理多个工作表。
Worksheet工作表对象,代表 Excel 中的单个工作表。
CellRange单元格范围对象,用于表示单个单元格或一组单元格。
Workbook.LoadFromFile()从指定路径加载 Excel 文件。
Workbook.SaveToFile()将工作簿保存为指定文件,可指定 Excel 版本。
Worksheet.FindAllString()在工作表中查找指定文本,支持大小写、全字匹配和正则表达式。
CellRange.Text获取或设置单元格文本内容。
CellRange.Style.Color设置单元格的背景颜色,用于高亮显示查找或替换结果。
CellRange.TextPartReplace()替换单元格中部分字符串,而不是整个内容。

总结

本文介绍了如何使用 C# 与 Spire.XLS for .NET 在 Excel 中实现高效的查找与替换操作。通过 FindAllString() 可以灵活查找单元格内容,TextPartReplace() 则支持局部替换。结合实际业务表格数据,开发者可以轻松扩展此功能,例如批量替换产品编码、更新库存信息或生成规范化报表。借助自动化方式处理 Excel,不仅节省时间,还能有效减少人工错误,提升整体数据处理质量。

以上就是使用C#在Excel工作表中查找与替换数据的操作指南的详细内容,更多关于C# Excel工作表查找与替换数据的资料请关注脚本之家其它相关文章!

您可能感兴趣的文章:
阅读全文