如何使用 C# 取代 Word 文件中的文本

This article was translated from English: Does it need improvement?
Translated
View the article in English

IronWord 可讓 C# 開發人員在不需要 Microsoft Office Interop 的情況下,以程式化的方式尋找和取代 Word 文件中的文字,提供自動化文件更新、個人化範本和大量內容管理的解決方案。

無論是個人化範本、更新報告或大量管理內容,在 Word 文件中自動更換文字都是常見的需求。IronWord 是一個 C# 函式庫,可讓這項任務簡單直接,從簡單的尋找與取代操作到複雜的文件處理工作流程,都能處理。

IronWord 可直接操作 Word 文件,而無需依賴 Microsoft Office Interop。這表示您不需要在伺服器上安裝 Word,進而為後端程序和 Web 應用程式提供更快速、可靠且可擴充的解決方案。 這種獨立於 Microsoft Office 的特性,讓 IronWord 對雲端部署、容器化應用程式和自動化文件處理管道特別有價值。

在本操作指南中,我們將通過全面的程式碼範例,向您展示如何在任何 Word 文件中查找和替換文字。 無論您是處理簡單的文字替換,或是需要處理複雜的多段落與格式的文件結構,IronWord 都能提供您所需的工具。

快速入門:輕鬆替換 Word 文件中的文字

本指南示範如何使用 IronWord 取代 Word 文件中的文字。 只需幾行 C# 程式碼,即可載入 DOCX 文件,取代指定文本,並儲存更新後的文件。 此流程無需 Microsoft Office Interop 即可運作,因此非常適合後端流程和 Web 應用程式。

Nuget Icon立即開始使用 NuGet 建立 PDF 檔案:

  1. 使用 NuGet 套件管理器安裝 IronWord

    PM > Install-Package IronWord

  2. 複製並運行這段程式碼。

    IronWord.Document doc = new IronWord.Document("sample.docx");
    doc.ReplaceText("oldText", "newText");
    doc.SaveAs("updated.docx");
  3. 部署到您的生產環境進行測試

    立即開始在您的專案中使用 IronWord,免費試用!
    arrow pointer

如何替換 Word 文件中的文字?

使用 IronWord 取代 Word 文件中的文字非常直觀。 首先,我們使用 WordDocument 建構器載入一個現有的文件。 然後,我們存取 Paragraphs 屬性,並在特定段落上使用 ReplaceText 方法。 此方法可讓您精細控制要修改文件的哪些部分。

ReplaceText方法接受兩個字串參數:要尋找的文字和要替換為的文字。 此方法會完全取代選取段落中的所有匹配實例,因此非常適合更新產品名稱、變更日期或個人化客戶資訊等情況。

ReplaceText方法區分大小寫,並將所選段落中所有出現的字串替換為匹配項。

在使用 Paragraphs 集合時,瞭解 IronWord 如何結構化文件內容非常重要。 Word 文件中的每個段落都會在集合中表示為個別元素,讓您可以精確地針對文件中的特定部分進行翻譯。

本範例中使用的所有物件清單均採用從零開始的索引。

輸入的文件是什麼樣子?

在這個範例中,我們將採用這個 範例 Word 文件,其中包含兩個段落,文字都是"舊文字"。 這個簡單的結構展示了文字替換在段落層級的運作方式。

示範 Word 文件,顯示取代前的

如何撰寫替代程式碼?

以下是用 "新文字 "取代第一段 "舊文字 "的程式碼。 請注意我們如何使用索引符號來針對特定段落,讓我們可以精確控制哪些內容會被修改:

:path=/static-assets/word/content-code-examples/how-to/replace-words.cs
using IronWord;

// Open existing Word
WordDocument doc = new WordDocument("sample.docx");

// Replace the first paragraph's old text with new text
doc.Paragraphs[0].ReplaceText("old text", "new text");

// Save updated Word Document
doc.SaveAs("updated.docx");
Imports IronWord

' Open existing Word
Dim doc As New WordDocument("sample.docx")

' Replace the first paragraph's old text with new text
doc.Paragraphs(0).ReplaceText("old text", "new text")

' Save updated Word Document
doc.SaveAs("updated.docx")
$vbLabelText   $csharpLabel

上面的程式碼展示了 IronWord 取代文字的簡易性。 透過載入文件、瞄準特定段落並呼叫 ReplaceText ,您只需要幾行程式碼就可以修改文件內容。 這種方法比傳統的 Office Interop 方法更直接。

輸出是什麼樣子?

Word文檔輸出,顯示第一段中的

輸出檔可以看到,只有第一段的文字被更改了,而第二段的文字保持不變。 當您需要在不影響整個文件的情況下更新特定部分時,這種選擇性替換的能力是非常重要的。

如何取代多個文字出現的位置?

若要取代整個文件中出現的每個字詞,請迴圈 Paragraphs 集合,並應用 ReplaceText 方法到每個字詞。 此方法可確保不會遺漏任何目標文字,無論它出現在文件的哪個部分。

我們將繼續使用先前的範例檔案 sample.docx。 如果在段落中找不到要替換的文字,則不會執行任何操作,循環會繼續到下一個段落。 這種故障安全行為意味著您不需要擔心在嘗試替換之前檢查文字是否存在。

如果找不到要替換的文本,則不會執行任何操作。

多重替換需要哪些程式碼?

以下是用 "新文本 "取代整個文件中所有出現的 "舊文本 "的代碼:

:path=/static-assets/word/content-code-examples/how-to/replace-words-multiple.cs
using IronWord;

// Open existing Word
WordDocument doc = new WordDocument("sample.docx");

// Loop through each paragraph to find and replace text
for (int i = 0; i < doc.Paragraphs.Count; i++)
{
    // Replace all occurrences of "old text" with "new text" in the current paragraph
    doc.Paragraphs[i].ReplaceText("old text", "new text");
}

// Save updated Word Document
doc.SaveAs("updated.docx");
Imports IronWord

' Open existing Word
Dim doc As New WordDocument("sample.docx")

' Loop through each paragraph to find and replace text
For i As Integer = 0 To doc.Paragraphs.Count - 1
    ' Replace all occurrences of "old text" with "new text" in the current paragraph
    doc.Paragraphs(i).ReplaceText("old text", "new text")
Next

' Save updated Word Document
doc.SaveAs("updated.docx")
$vbLabelText   $csharpLabel

這種循環的方式可完整涵蓋您的文件。 透過反覆檢查每個段落,您可以確保目標文字的所有實例都被取代。 此方法對於批量更新特別有用,例如更改公司名稱、更新術語或在整個文件中應用一致的格式。

多次替換之後的文件會是什麼樣子?

Word 文件輸出顯示多文字取代操作後的兩行

您可以從這個 更新的 Word 文件中看到,這兩個段落都已經以"新文字"取代。 這證明了循環方法對於全面文字替換的有效性。

在替換之前,如何驗證文字是否存在?

如果您需要在執行操作之前驗證文字是否存在,請使用 FindText 方法。 此方法會搜尋整個文檔,並傳回第一個與搜尋查詢相符的TextElement 。 當您需要在進行變更之前確認特定內容是否存在,或根據文件內容建立條件邏輯時,此驗證步驟將非常有用。

FindText 方法在下列情況下尤其有價值:

  • 您需要記錄哪些文件包含特定文字
  • 您希望根據是否找到文字來執行不同的動作
  • 您正在建立一個文件驗證系統
  • 您需要就文件內容產生報告

以下舉例說明如何在上面提到的 Word 文件中搜尋舊文字。

我使用什麼程式碼來尋找文字?

:path=/static-assets/word/content-code-examples/how-to/replace-words-find-text.cs
using IronWord;
using System;

// Open existing Word
WordDocument doc = new WordDocument("sample.docx");

// Returns the first TextContent element that contains the specified text.
Console.WriteLine(doc.FindText("old text"));
Imports IronWord
Imports System

' Open existing Word
Dim doc As New WordDocument("sample.docx")

' Returns the first TextContent element that contains the specified text.
Console.WriteLine(doc.FindText("old text"))
$vbLabelText   $csharpLabel

此程式碼展示了使用 IronWord 搜尋文字的簡易性。 如果找到文字,FindText 方法會返回一個 TextElement 物件,如果找不到,則返回 null,這使得根據搜尋結果實作條件邏輯變得容易。

尋找文字結果會顯示什麼?

Visual Studio 調試控制台顯示 FindText 操作的 'old_text' 輸出

如您所見,它傳回了符合的文字,確認搜尋詞彙存在於文件中。 此驗證能力對於建立需要處理各種內容情境的強大文件處理應用程式來說是不可或缺的。

[{w:( 如果FindText沒有傳回任何內容,表示該文字在文件中不存在。 請確保搜尋字詞拼字正確,並且大小寫與文件中的文字一致。

文字替換的最佳實務

在 Word 文件中使用文字替換時,請考慮這些最佳實務:

1.大小寫敏感性ReplaceText 對大小寫敏感。將文字轉換為一致的大小寫,以進行不區分大小寫的替換。

2.效能最佳化:批次取代並儲存一次,以減少 I/O 作業並提昇效能。

3.錯誤處理:針對鎖定、損壞或意外的文件內容實施錯誤處理。

4.備份策略:在大量更換之前建立備份,尤其是在生產環境中。

5.記憶體管理:在處理多個文件時,適當地丟棄文件物件,以防止記憶體洩漏。

IronWord 直接的 API 讓這些最佳實務的實作變得簡單,讓您可以放心地建立強大的文件處理解決方案。

常見問題解答

如何使用 C# 替換 Word 文件中的文字?

IronWord 讓使用 C# 來取代 Word 文件中的文字變得簡單。使用 WordDocument 構建程式載入您的文件,然後使用 ReplaceText 方法找出並取代文字。該方法需要兩個參數:要尋找的文字和替換的文字。此功能不需要 Microsoft Office Interop,因此非常適合伺服器端應用程式。

我可以在沒有安裝 Microsoft Office 的情況下取代文字嗎?

是的,IronWord 可以直接操作 Word 文件,而不需要 Microsoft Office Interop。這表示您不需要在伺服器上安裝 Word,因此可提供更快速、更可靠的解決方案,非常適合雲端部署、容器化應用程式以及自動化文件處理管道。

在 DOCX 檔案中尋找和取代文字的最簡單方法是什麼?

最快速的方法是使用 IronWord 的三行方法:以檔案路徑建立 Document 物件,以新舊文字呼叫 ReplaceText 方法,然後再使用 SaveAs 儲存。這個最小的工作流程可以處理從載入到儲存更新後的文件的所有工作。

文字替換是否區分大小寫?

是的,IronWord 中的 ReplaceText 方法預設是區分大小寫的。它會取代選取段落或文件中所有匹配的實例,確保精確控制哪些文字會根據準確的大小寫匹配而被取代。

我可以只取代特定段落的文字嗎?

絕對可以。IronWord 透過段落屬性提供細粒度的控制。您可以從集合中存取個別段落,並只在特定段落上呼叫 ReplaceText,以進行有針對性的取代,而非整個文件的變更。

程式化文字替換的常見用例有哪些?

IronWord 常用於個人化範本、更新報告、大量內容管理以及自動化文件更新。它特別適用於更新產品名稱、變更日期、個人化客戶資訊等情境,或任何需要自動化文件處理的情況。

Curtis Chau
技術撰稿人

Curtis Chau 擁有電腦科學學士學位(卡爾頓大學),專長於前端開發,精通 Node.js、TypeScript、JavaScript 和 React。Curtis 對製作直覺且美觀的使用者介面充滿熱情,他喜歡使用現代化的架構,並製作結構良好且視覺上吸引人的手冊。

除了開發之外,Curtis 對物聯網 (IoT) 也有濃厚的興趣,他喜歡探索整合硬體與軟體的創新方式。在空閒時間,他喜歡玩遊戲和建立 Discord bots,將他對技術的熱愛與創意結合。

準備好開始了嗎?
Nuget 下載 32,629 | 版本: 2026.2 剛剛發布