我一直在使用OOXML api来更新.docx中的自定义xml部分。代码更新文档中的自定义xml部分。我的问题是,当我在控制台应用程序中使用时,相同的代码替换并生成完美的.docx,但在ASP.NET应用程序中使用时,它不会替换或生成.docx。有问题的代码段如下:
string tmp = string.Format("{0}.docx", Guid.NewGuid());
File.Copy(FileName, tmp);
_xml = ReadXML(XmlPath);
using (WordprocessingDocument wordDoc = WordprocessingDocument.Open(tmp, true)) {
var mainPart = wordDoc.MainDocumentPart;
mainPart.DeleteParts<CustomXmlPart>(mainPart.CustomXmlParts);
//Add a new customXML part and then add content
var customXmlPart = mainPart.AddCustomXmlPart(CustomXmlPartType.CustomXml);
//copy the XML into the new part...
using (var ts = new StreamWriter(customXmlPart.GetStream())) {
ts.Write(_xml);
ts.Flush();
}
}
我在广场为什么会发生这种情况。任何帮助表示赞赏 感谢
答案 0 :(得分:0)
更好的方法可能是有选择地仅更新您有兴趣替换的XML部件。
将我的回答here检查为基本相同的问题。
我目前在控制台中使用相同代码启动后在MVC应用中执行此操作,因此我不确定控制台/网络之间可能/会导致什么问题。
看起来WordProcessingDocument.Open()
的签名也发生了变化,因此AutoSave可能无法正常工作。此外,是否有可能抛出一个异常被调用者吞没的异常?也许把一个try / catch扔到外面using(...){...}
。