当前位置: 代码网 > it编程>编程语言>Asp.net > 使用C#在Excel工作表中查找与替换数据的操作指南

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

2025年11月24日 Asp.net 我要评论
在日常业务中,excel 常用于保存产品清单、客户信息、销售记录等结构化数据。当表格数据量较大时,手动查找与替换内容不仅效率低,还容易出错。此时借助c# 程序自动化处理可以快速完成数据的批量查找和更新

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

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com