1

写真のような2つの箇条書きリストを出力したい:

ここに画像の説明を入力

しかし、私が得たのは、両方のリストに 2 番目の (黒い円) スキンがあることです。

私のコード:

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!"))
             );
        }

わかりません、問題はどこに隠されていますか?Productivity Tool for Open XML を使用して、生成したファイルと手動で作成したファイルを比較しましたが、うまくいきません。ヒントをお寄せいただきありがとうございます。

4

1 に答える 1

7

数時間後、AbstractNum オブジェクトと NumberingInstance オブジェクトを挿入する順序が重要であることがわかりました。

Open XML SDK 2.0 Productivity Tools には Validate メソッドがあり、検証エラーが表示されました。

作業コード:

        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);
        }
于 2012-06-26T12:40:50.843 に答える