如何使用 C# 替换 Word 文档中的文本

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

IronWord 使 C# 开发人员能够以编程方式查找和替换 Word 文档中的文本,而无需 Microsoft Office Interop,为文档自动更新、个性化模板和批量内容管理提供了解决方案。

无论是个性化模板、更新报告还是批量管理内容,自动替换 Word 文档中的文本都是一种常见需求。IronWord 是一个 C# 库,可以让这项任务变得简单明了,从简单的查找和替换操作到复杂的文档处理工作流,它都可以处理。

IronWord 可直接操作 Word 文档,而无需依赖 Microsoft Office Interop。这意味着您无需在服务器上安装 Word,从而为后端流程和网络应用程序提供更快、更可靠和可扩展的解决方案。 这种独立于 Microsoft Office 的特性使得 IronWord 对云部署、容器化应用和自动化文档处理管道特别有价值。

在本指南中,我们将通过全面的代码示例向您展示如何在任何 Word 文档中查找和替换文本。 无论您是处理简单的文本替换,还是需要处理具有多个段落和格式的复杂文档结构,IronWord 都能为您提供所需的工具。

快速入门:轻松替换 Word 文档中的文本

本指南演示了如何使用 IronWord 替换 Word 文档中的文本。 只需几行 C# 代码,即可加载 DOCX 文件,替换指定文本,并保存更新后的文档。 该流程无需使用 Microsoft Office Interop,因此非常适合后端流程和网络应用程序。

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 对物联网 (IoT) 有浓厚的兴趣,探索将硬件和软件集成的新方法。在空闲时间,他喜欢玩游戏和构建 Discord 机器人,将他对技术的热爱与创造力相结合。

准备开始了吗?
Nuget 下载 32,629 | 版本: 2026.2 刚刚发布