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

时间:2013-04-26 13:59:08

标签: c# ms-word openxml

我有一个.docx文件和Dictionary<string,string>。我需要浏览文档,并将文本eqaul替换为Dictionary.Key中的Dictionary的相应值。它将在服务器上,因为我不想使用生成COM对象的Microsoft.Office.Interopt库。对于解决方案,我更喜欢OpenXML,但在网络上对我来说没有可行的解决方案。我找到了this solution of 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);

    }

1 个答案:

答案 0 :(得分:0)

我联系了博客,并询问了这种情况。最后,我达成了这个解决方案。如果每WordprocessingDocument替换为1,那么Eric White的解决方案效果很好。但如果它超过1,那么在完成所有替换之后,必须先调用以下方法,然后再使用WordprocessingDocument

WordprocessingDocument.Package.Close();