使用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("未找到匹配项。");
}常见查找模式参数说明如下:
| 查找模式 | caseSensitive | wholeWord | regex | 示例 |
|---|---|---|---|---|
| 精确匹配 | true | true | false | 查找“Apple”,不会匹配“apple” |
| 模糊匹配 | false | false | false | 查找“apple”,会匹配“Apple Pie” |
| 全字匹配 | false | true | false | 查找“apple”,不会匹配“Apple Pie” |
| 正则表达式 | false | false | true | 查找 ^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,以下整理了常见类、方法与属性,供快速参考:
| 类 / 属性 / 方法 | 说明 |
|---|---|
Workbook | Excel 工作簿对象,用于加载、保存和管理多个工作表。 |
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工作表查找与替换数据的资料请关注脚本之家其它相关文章!
