在日常业务中,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工作表查找与替换数据的资料请关注代码网其它相关文章!
发表评论