动态

详情 返回 返回

使用 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 的文件,替換前後內容如下:

C#查找替換Excel工作表數據


關鍵類與方法總結

為了更直觀地理解本文示例所用的核心 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,不僅節省時間,還能有效減少人工錯誤,提升整體數據處理質量。

user avatar patsy324df_banks901rn 头像 clay1925 头像 AmazingFreeSpace 头像 haikuopingyuyue 头像
点赞 4 用户, 点赞了这篇动态!
点赞

Add a new 评论

Some HTML is okay.