我有一个.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);
}
答案 0 :(得分:0)
我联系了博客,并询问了这种情况。最后,我达成了这个解决方案。如果每WordprocessingDocument
替换为1,那么Eric White的解决方案效果很好。但如果它超过1,那么在完成所有替换之后,必须先调用以下方法,然后再使用WordprocessingDocument
。
WordprocessingDocument.Package.Close();