Используя OpenXML SDK, 2.0 CTP, я пытаюсь программно создать документ Word. В моем документе я должен вставить маркированный список, некоторые элементы списка должны быть подчеркнуты. Как я могу сделать это?
Списки в OpenXML немного запутаны.
Существует NumberingDefinitionsPart, который описывает все списки в документе. Она содержит информацию о том, как должны выглядеть списки (маркированные, пронумерованные и т.д.), а также присваивает каждому из них свой идентификатор.
Затем в MainDocumentPart, для каждого элемента списка, который вы хотите создать, вы добавляете новый пункт и присваиваете ему идентификатор списка, который вы хотите создать.
Таким образом, чтобы создать маркированный список, такой как:
Сначала нужно создать нумерационную часть:
NumberingDefinitionsPart numberingPart =
mainDocumentPart.AddNewPart<NumberingDefinitionsPart>("someUniqueIdHere");
Numbering element =
new Numbering(
new AbstractNum(
new Level(
new NumberingFormat() {Val = NumberFormatValues.Bullet},
new LevelText() {Val = "·"}
) {LevelIndex = 0}
){AbstractNumberId = 1},
new NumberingInstance(
new AbstractNumId(){Val = 1}
){NumberID = 1});
element.Save(numberingPart);
Затем создать MainDocumentPart, как обычно, за исключением свойств параграфа, присвоить идентификатор:
MainDocumentPart mainDocumentPart =
package.AddMainDocumentPart();
Document element =
new Document(
new Body(
new Paragraph(
new ParagraphProperties(
new NumberingProperties(
new NumberingLevelReference(){ Val = 0 },
new NumberingId(){ Val = 1 })),
new Run(
new RunProperties(),
new Text("Hello, "){ Space = "preserve" })),
new Paragraph(
new ParagraphProperties(
new NumberingProperties(
new NumberingLevelReference(){ Val = 0 },
new NumberingId(){ Val = 1 })),
new Run(
new RunProperties(),
new Text("world!"){ Space = "preserve" }))));
element.Save(mainDocumentPart);
Существует лучшее объяснение опций, доступных в Справочном руководстве по OpenXML в разделе 2.9.
.