2012-02-24 5 views
0

J'essaie de suivre le tutoriel this pour créer un modèle de document Word que je peux manipuler en utilisant C#. Mais je reçois toujours l'erreur suivante: "Le nom 'mainPart' n'existe pas dans le contexte actuel ouvert XML". J'utilise Open Xml 2.0.Open XML SDK 2.0

Une idée de ce qui me manque?

 using System; 
     using System.IO; 
     using DocumentFormat.OpenXml.Packaging; 

     .... 

     Console.WriteLine("Starting up Word template updater ..."); 

     //get path to template and instance output 
     string docTemplatePath = @"C:\Users\user\Desktop\Doc Offices XML\earth.docx"; 
     string docOutputPath = @"C:\Users\user\Desktop\Doc Offices XML\earth_Instance.docx"; 

     //create copy of template so that we don't overwrite it 
     File.Copy(docTemplatePath, docOutputPath); 

     Console.WriteLine("Created copy of template ..."); 

     //stand up object that reads the Word doc package 
     using (WordprocessingDocument doc = WordprocessingDocument.Open(docOutputPath, true)) 
     { 
      //create XML string matching custom XML part 
      string newXml = "<root>" + 
       "<Earth>Outer Space</Earth>" + 
       "</root>"; 

      MainDocumentPart main = doc.MainDocumentPart; 
      main.DeleteParts<CustomXmlPart>(main.CustomXmlParts); 

      //add and write new XML part 
      //CustomXmlPart customXml = main.AddNewPart<CustomXmlPart>(); 
      CustomXmlPart customXml = mainPart.AddCustomXmlPart(CustomXmlPartType.CustomXml); 
      using (StreamWriter ts = new StreamWriter(customXml.GetStream())) 
      { 

       ts.Write(newXml); 
      } 

      //closing WordprocessingDocument automatically saves the document 
     } 

     Console.WriteLine("Done"); 
     Console.ReadLine(); 

Répondre

2

Vous devez créer chaque pièce avant d'y accéder pour la première fois. Essayez ceci:

doc.AddMainDocumentPart() 
+0

Yeap, cela résout pratiquement le problème. Qu'est-ce que j'ai mis était: "MainDocumentPart mainPart = doc.AddMainDocumentPart();" Merci un million. :) –

Questions connexes