2010-11-24 82 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語法的一些部分在版本之間發生了變化。 – 2011-01-05 16:53:22

回答

0

更好的方法是可能有選擇地更新您有興趣替換的XML部分。

查看我的回答here到基本相同的問題。

我目前正在做一個MVC應用程序後,在控制檯中啓動相同的代碼,所以我不知道什麼可能/會造成控制檯/網絡之間的問題。

它也看起來像簽名已更改爲WordProcessingDocument.Open()所以也許AutoSave不起作用。另外,是否有可能拋出異常被調用者吞噬?也許把一個try/catch扔進using(...){...}