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 の間で何が問題を引き起こす可能性があるのか​​ わかりません。

また、署名が変更されたように見えるWordProcessingDocument.Open()ため、自動保存が機能していない可能性があります。また、何らかの形で呼び出し元に飲み込まれている例外がスローされている可能性はありますか? 多分 try/catch を outer に投げusing(...){...}ます。

于 2014-10-20T16:59:43.057 に答える