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