2010-11-24 20 views
1

私はOOXML APIを使用して.docxのカスタムXML部分を更新しています。コードは、ドキュメント内のカスタムXML部分を更新します。私の問題は、コンソールアプリケーションで使用すると、同じコードが完全な.docxを置き換えて生成することですが、ASP.NETアプリケーションで使用された場合は.docxを置き換えたり生成したりしません。問題のコードスニペットは次のとおりです。OpenXMLアップデートcustomXMLPart

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

同じバージョンのOpenXml SDKを使用していますか?私はCustomXML構文を取り巻くいくつかの部分がバージョン間で変更されていることを知っています。 –

答えて

0

これより良いアプローチは、おそらく置き換えたいXMLパーツだけを選択的に更新することです。

私の答えを確認してくださいhereは基本的に同じ質問です。

私は現在、コンソールで同じコードで起動した後、MVCアプリケーションでこれをやっているので、コンソール/ Web間で何が問題になるかわかりません。

また、WordProcessingDocument.Open()のシグニチャが変更されたようで、自動保存が機能していない可能性があります。また、呼び出し側が何らかの理由で取り込まれている例外がスローされる可能性はありますか?外にusing(...){...}のトライ/キャッチを投げるかもしれない。