Добавить существующий стиль в абзац в OpenXML

Мне нужно добавить стиль к абзацу с помощью OpenXML. У меня есть следующий код, и он работает, но стиль не тот, который я пытаюсь добавить.

var file = WordprocessingDocument.Open(fileName, true); 

var text = new Text("Hello world");
var run = new Run(text);
var paragraph = new Paragraph(run);
paragraph.ParagraphProperties = new ParagraphProperties(
new ParagraphStyleId() { Val = "Body Text" });            

file.MainDocumentPart.Document.Body.AppendChild(paragraph);
file.MainDocumentPart.Document.Save();

Есть ли что-то, что я делаю неправильно??? Как добавить некоторые из существующих стилей к абзацу с помощью OpenXML.


person Yanet Francisco    schedule 05.06.2017    source источник
comment
Как вы определяете шаблон "Body Text"?   -  person FortyTwo    schedule 05.06.2017
comment
У меня нет определения для основного текста, я думал, что стили похожи на шрифт, в котором вы просто вводите имя нужного шрифта. У меня есть дизайн в Word, и мне нужно создать код в том же формате, поэтому я пытался использовать в каком-то абзаце стиль, который абзац имеет в исходном документе.   -  person Yanet Francisco    schedule 05.06.2017
comment
Проверьте этот сообщение.   -  person FortyTwo    schedule 05.06.2017
comment
Этот пост может быть пригодится и вам.   -  person petelids    schedule 05.06.2017


Ответы (1)


Как показано здесь

private static void AddNewStyle(StyleDefinitionsPart styleDefinitionsPart, 
    string styleid, string stylename)
{
    // Get access to the root element of the styles part.
    Styles styles = styleDefinitionsPart.Styles;

    // Create a new paragraph style and specify some of the properties.
    Style style = new Style() { Type = StyleValues.Paragraph, 
        StyleId = styleid, 
        CustomStyle = true };
    StyleName styleName1 = new StyleName() { Val = stylename };
    BasedOn basedOn1 = new BasedOn() { Val = "Normal" };
    NextParagraphStyle nextParagraphStyle1 = new NextParagraphStyle() { Val = "Normal" };
    style.Append(styleName1);
    style.Append(basedOn1);
    style.Append(nextParagraphStyle1);

    // Create the StyleRunProperties object and specify some of the run properties.
    StyleRunProperties styleRunProperties1 = new StyleRunProperties();
    Bold bold1 = new Bold();
    Color color1 = new Color() { ThemeColor = ThemeColorValues.Accent2 };
    RunFonts font1 = new RunFonts() { Ascii = "Lucida Console" };
    Italic italic1 = new Italic();
    // Specify a 12 point size.
    FontSize fontSize1 = new FontSize() { Val = "24" };
    styleRunProperties1.Append(bold1);
    styleRunProperties1.Append(color1);
    styleRunProperties1.Append(font1);
    styleRunProperties1.Append(fontSize1);
    styleRunProperties1.Append(italic1);

    // Add the run properties to the style.
    style.Append(styleRunProperties1);

    // Add the style to the styles part.
    styles.Append(style);
}
person Tacy Nathan    schedule 06.06.2017