如何使用OpenXML查找并替换文档页脚字符串?我的解决方案
使用OpenXML实现Word文档页脚文本的查找替换
之前我找了好久都没找到用OpenXML实现Word页脚文本查找替换的靠谱方案,自己折腾出来后,想着分享出来帮下踩同样坑的人。
一开始我试了Microsoft.Office.Interop.Word,结果各种报错,而且看不少同行都建议别用Office Interop——不仅依赖本地Office环境,部署起来麻烦得很,果断转用OpenXML。
实现代码
要完成页脚的文本替换,核心是遍历文档里所有的页脚部分,再逐个处理其中的文本节点:
using DocumentFormat.OpenXml.Packaging; using DocumentFormat.OpenXml.Wordprocessing; using System.Linq; public static void ReplaceFooterText(string docPath, string oldText, string newText) { using (WordprocessingDocument doc = WordprocessingDocument.Open(docPath, true)) { // 遍历文档中所有的页脚部件 foreach (var footerPart in doc.MainDocumentPart.FooterParts) { var textElements = footerPart.Footer.Descendants<Text>() .Where(t => t.Text.Contains(oldText)); foreach (var textNode in textElements) { textNode.Text = textNode.Text.Replace(oldText, newText); } footerPart.Footer.Save(); } doc.MainDocumentPart.Document.Save(); } }
关键注意点
- 文档如果有分节设置,或是启用了首页不同、奇偶页不同的页脚,代码会自动遍历所有页脚部件,无需额外处理。
- 如果要替换的文本被格式拆分到多个
Text节点(比如部分文字加粗),需要额外处理节点合并逻辑,确保完整匹配目标文本。 - 记得先安装NuGet包:
DocumentFormat.OpenXml,建议用最新稳定版。
内容的提问来源于stack exchange,提问作者Nikolai 'Møller'
相关产品推荐
相关产品推荐

