2013-05-01 26 views
9

Başlığı aldığım hatayı bildiriyor. Ben tüm metni OpenXml kullanarak bir kelime belgesinde gizlemek çalışıyorum. Şu anda Paragraf özelliklerini denediğimde ve eklediğimde yukarıdaki hatayı alıyorum. Bu hatayı online olarak fazla bulamıyorum. hatayıOpenXmlElement "newChild" eklenemiyor, çünkü bu ağacın bir parçası

 using (WordprocessingDocument wdDoc = WordprocessingDocument.Open(mDoc_copy, true)) 
     { 
      // Manage namespaces to perform XPath queries. 
      NameTable nt = new NameTable(); 
      XmlNamespaceManager nsManager = new XmlNamespaceManager(nt); 
      nsManager.AddNamespace("w", wordmlNamespace); 

      // Get the document part from the package. 
      // Load the XML in the document part into an XmlDocument instance. 
      XmlDocument xdoc = new XmlDocument(nt); 
      xdoc.Load(wdDoc.MainDocumentPart.GetStream()); 

      MainDocumentPart main = wdDoc.MainDocumentPart; 

      IEnumerable<OpenXmlElement> elem = main.Document.Body.Descendants().ToList(); 
      Paragraph p; 
      ParagraphProperties pp = new ParagraphProperties(); 
      ParagraphMarkRunProperties prmp = new ParagraphMarkRunProperties(); 
      Vanish v = new Vanish(); 
      apprmp.AppendChild<Vanish>(v); 
      pp.AppendChild<ParagraphMarkRunProperties>(apprmp); 


      foreach (Paragraph para in main.Document.Body.Descendants<Paragraph>().ToList()) 
      { 


        para.ParagraphProperties = pp; 

      } 
     } 
+0

Ayrıca efekti yapmak için Vanish 'Run' özelliklerine de eklemeniz gerekir. – Flowerking

+0

Tamam, her Run ilk önce Vanish, sonra her paragraf yoksundur? Ya da çalıştırma özelliklerini Paragraf nesnesine bir şekilde ekleyebilir miyim? – user1704863

cevap

25

döner

kodu normal olarak bu hata bu klonlanmış değeri sokulması ve sonra da istisna neden ve ne olursa olsun düğüm Klonlama ile tespit edilebilir. Böyle bir şey: Bu, bir Color örneği oluşturun ve daha sonra orijinal örneğini klonlama takarak bütün sınırları için aynı örneği kullanacak

LeftBorder leftBorder = new LeftBorder() { Style = BorderStyleValues.Thin }; 
TopBorder topBorder = new TopBorder() { Style = BorderStyleValues.Thin }; 
RightBorder rightBorder = new RightBorder() { Style = BorderStyleValues.Thin }; 
BottomBorder bottomBorder = new BottomBorder() { Style = BorderStyleValues.Thin }; 

Color color = new Color() { Auto = true, Rgb = rgbHexValue == string.Empty ? new HexBinaryValue("00000000") : new HexBinaryValue(rgbHexValue) }; 

leftBorder.Color = color; 
topBorder.Color = (Color)color.CloneNode(true); 
rightBorder.Color = (Color)color.CloneNode(true); 
bottomBorder.Color = (Color)color.CloneNode(true); 

.

+0

Tam olarak karşılaştığım sorun buydu ve bu mükemmel bir şekilde düzeltildi. Teşekkürler! –

+0

CloneNode! @amurra: Sen bir hayat kurtarıcısın! – slayernoah