2012-06-26 2 views
1

Je veux obtenir une sortie à deux puces listes comme sur l'image: la peaula création de deux listes à puces dans Word 2007 par OpenXML

enter image description here

Mais ce que je reçois est à la fois les listes ont le deuxième (cercle noir) .

Mon code:

private static void AddNumberingDefinition(WordprocessingDocument docx) 
     { 
      NumberingDefinitionsPart numberingPart = 
    docx.MainDocumentPart.AddNewPart<NumberingDefinitionsPart>(); 

      Numbering element = 
       new Numbering(
       //  new Nsid(){ Val="FFFFFF80"}, 
       new AbstractNum(new Nsid() { Val = "FFFFFF80" }, 
        new MultiLevelType() { Val = MultiLevelValues.HybridMultilevel }, 
       new TemplateCode() { Val = "4970B4E6" }, 
        new Level(
        new NumberingFormat() { Val = NumberFormatValues.Bullet }, 
        new LevelText() { Val = "°" },//char.ConvertFromUtf32(61616) } 
        new LevelJustification() { Val = LevelJustificationValues.Left }//, 
       // new RunProperties() { RunFonts = new RunFonts() { Hint = FontTypeHintValues.Default, Ascii = "Symbol", 
//HighAnsi = "Symbol" } } 
       ) { LevelIndex = 0 } 
       ) { AbstractNumberId = 0 }, 
       new NumberingInstance(
        new AbstractNumId() { Val = 0 } 
       ) { NumberID = 1 }, 

      // element.Save(numberingPart); 

     // element = new Numbering(
      new AbstractNum(new Nsid() { Val = "FFFFFF89" }, 
       new MultiLevelType() { Val = MultiLevelValues.HybridMultilevel }, 
       new TemplateCode() { Val = "4970B4E6" }, 
        new Level(
        new NumberingFormat() { Val = NumberFormatValues.Bullet }, 
        new LevelText() { Val = "•" },//char.ConvertFromUtf32(61616) } 
        new LevelJustification() { Val = LevelJustificationValues.Left }//, 
       // new RunProperties() { RunFonts = new RunFonts() { Hint = FontTypeHintValues.Default, Ascii = "Symbol", 
// HighAnsi = "Symbol" } } 
       ) { LevelIndex = 0 } 
       ) { AbstractNumberId = 1 }, 
       new NumberingInstance(
        new AbstractNumId() { Val = 1 } 
       ) { NumberID = 2 }); 

      element.AddNamespaceDeclaration("ve", "http://schemas.openxmlformats.org/markup-compatibility/2006"); 
      element.AddNamespaceDeclaration("o", "urn:schemas-microsoft-com:office:office"); 
      element.AddNamespaceDeclaration("r", "http://schemas.openxmlformats.org/officeDocument/2006/relationships"); 
      element.AddNamespaceDeclaration("m", "http://schemas.openxmlformats.org/officeDocument/2006/math"); 
      element.AddNamespaceDeclaration("v", "urn:schemas-microsoft-com:vml"); 
      element.AddNamespaceDeclaration("wp", "http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing"); 
      element.AddNamespaceDeclaration("w10", "urn:schemas-microsoft-com:office:word"); 
      element.AddNamespaceDeclaration("w", "http://schemas.openxmlformats.org/wordprocessingml/2006/main"); 
      element.AddNamespaceDeclaration("wne", "http://schemas.microsoft.com/office/word/2006/wordml"); 

      element.Save(numberingPart); 
     } 

     private static Paragraph GenerateParagraph() 
     { 
      return new Paragraph(
      new ParagraphProperties(
      new NumberingProperties(
       new NumberingLevelReference() { Val = 0 }, 
       new NumberingId() { Val = 1 })), 
      new Run(
      new RunProperties(), 
      new Text("Hello, Wordl!")) 
      ); 
     } 

     private static Paragraph GenerateParagraph2() 
     { 
      return new Paragraph(
      new ParagraphProperties(
      new NumberingProperties(
       new NumberingLevelReference() { Val = 0 }, 
       new NumberingId() { Val = 2 })), 
      new Run(
      new RunProperties(), 
      new Text("Hello, Wordl!")) 
      ); 
     } 

Je ne sais pas où est le problème caché? J'ai utilisé l'outil de productivité pour Open XML pour comparer mon fichier généré et celui créé manuellement, mais je n'arrive pas à le faire fonctionner. Merci d'avance pour tout conseil.

Répondre

7

Après quelques heures, je trouve que l'ordre d'insertion des objets AbstractNum et NumberingInstance est important ..

Open XML SDK 2.0 Outils de productivité a une méthode qui Valider m'a montré l'erreur de validation.

Code de travail:

 private static void AddNumberingDefinition(WordprocessingDocument docx) 
     { 
      NumberingDefinitionsPart numberingPart = 
    docx.MainDocumentPart.AddNewPart<NumberingDefinitionsPart>(); 

      var a = new AbstractNum(new Nsid() { Val = "FFFFFF80" }, 
        new MultiLevelType() { Val = MultiLevelValues.HybridMultilevel }, 
       new TemplateCode() { Val = "4970B4E6" }, 
       new Level(
        new NumberingFormat() { Val = NumberFormatValues.Bullet }, 
        new LevelText() { Val = "°" }, 
        new LevelJustification() { Val = LevelJustificationValues.Left } 
       ) { LevelIndex = 0 } 
      ) { AbstractNumberId = 0 }; 

      var a1 = new NumberingInstance(
       new AbstractNumId() { Val = 0 } 
       ) { NumberID = 1 }; 

      var b = new AbstractNum(new Nsid() { Val = "FFFFFF89" }, 
        new MultiLevelType() { Val = MultiLevelValues.HybridMultilevel }, 
        new TemplateCode() { Val = "4970B4E6" }, 
        new Level(
         new NumberingFormat() { Val = NumberFormatValues.Bullet }, 
         new LevelText() { Val = "•" }, 
         new LevelJustification() { Val = LevelJustificationValues.Left } 
        ) { LevelIndex = 0 } 
       ) { AbstractNumberId = 1 }; 
      var b1 = new NumberingInstance(
       new AbstractNumId() { Val = 1 } 
       ) { NumberID = 2 }; 

      Numbering element = new Numbering(); 

      element.AddNamespaceDeclaration("ve", "http://schemas.openxmlformats.org/markup-compatibility/2006"); 
      element.AddNamespaceDeclaration("o", "urn:schemas-microsoft-com:office:office"); 
      element.AddNamespaceDeclaration("r", "http://schemas.openxmlformats.org/officeDocument/2006/relationships"); 
      element.AddNamespaceDeclaration("m", "http://schemas.openxmlformats.org/officeDocument/2006/math"); 
      element.AddNamespaceDeclaration("v", "urn:schemas-microsoft-com:vml"); 
      element.AddNamespaceDeclaration("wp", "http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing"); 
      element.AddNamespaceDeclaration("w10", "urn:schemas-microsoft-com:office:word"); 
      element.AddNamespaceDeclaration("w", "http://schemas.openxmlformats.org/wordprocessingml/2006/main"); 
      element.AddNamespaceDeclaration("wne", "http://schemas.microsoft.com/office/word/2006/wordml"); 

      element.Append(a); 
      element.Append(b); 
      element.Append(a1); 
      element.Append(b1); 
      element.Save(numberingPart); 
     } 
Questions connexes