OpenXML更新customXMLPart

时间:2010-11-24 13:42:49

标签: .net openxml openxml-sdk

我一直在使用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();
            }
        }

我在广场为什么会发生这种情况。任何帮助表示赞赏 感谢

1 个答案:

答案 0 :(得分:0)

更好的方法可能是有选择地仅更新您有兴趣替换的XML部件。

将我的回答here检查为基本相同的问题。

我目前在控制台中使用相同代码启动后在MVC应用中执行此操作,因此我不确定控制台/网络之间可能/会导致什么问题。

看起来WordProcessingDocument.Open()的签名也发生了变化,因此AutoSave可能无法正常工作。此外,是否有可能抛出一个异常被调用者吞没的异常?也许把一个try / catch扔到外面using(...){...}