如何使用OpenXML搜索和替换Word文档中的文本

本文关键字:文档 文本 Word 替换 何使用 OpenXML 搜索 | 更新日期: 2023-09-27 18:11:05

我有一个.docx文件和Dictionary<string,string>。我需要浏览文档,并将Dictionary.Key的文本eqaul替换为其在Dictionary中的相应值。它将在服务器上,因为我不想使用生成COM对象的Microsoft.Office.Interopt库。对于这个解决方案,我更喜欢OpenXML,但在网上对我来说没有有效的解决方案。我找到了Eric White的这个解决方案。它对我不起作用。确切地说,我运行了方法SearchAndReplace,但文档中没有任何更改。我仔细研究了这些方法,发现问题出在方法PutXmlInDocument中,它通过获取流将XmlDocument保存到给定的OpenXmlPart。使用OpenXML还有其他解决方案吗?或者如何将XmlDocument保存到OpenXmlPart

就是这种保存不成功的方法:

public static void PutXmlDocument(OpenXmlPart part, XmlDocument xmlDoc)
    {
        using (Stream partStream = part.GetStream(FileMode.Create, FileAccess.Write))
        using (XmlWriter partXmlWriter = XmlWriter.Create(partStream))
            xmlDoc.Save(partXmlWriter);
    }

如何使用OpenXML搜索和替换Word文档中的文本

我联系了博主,询问了这个情况。最后我找到了这个解决方案。如果每个WordprocessingDocument的替换为1,则Eric White的解决方案非常有效。但是,如果它大于1,那么在完成所有替换之后,在使用WordprocessingDocument执行某些操作之前,必须调用以下方法。

WordprocessingDocument.Package.Close();