1

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

我很清楚为什么会发生这种情况。感谢任何帮助谢谢

4

1 回答 1

0

一个更好的方法可能是选择性地只更新您有兴趣替换的 XML 部分。

在这里检查我对基本相同问题的回答。

在控制台中使用相同的代码开始后,我目前正在 MVC 应用程序中执行此操作,所以我不确定是什么可能/将导致控制台/web.xml 之间出现问题。

看起来签名也已更改,WordProcessingDocument.Open()因此 AutoSave 可能不起作用。此外,是否有可能抛出异常被调用者以某种方式吞下?也许将 try/catch 扔进外部using(...){...}

于 2014-10-20T16:59:43.057 回答