OpenXML Word - добавление стиля в заголовок - PullRequest
1 голос
/ 15 декабря 2011

Я использую эту библиотеку для преобразования html-текста в формат слова.

Все отлично работает.

Мне нужно оформить часть текста сейчас. то, что я сейчас использую для генерации документа, это то, что у меня есть список заголовков и подзаголовков и текст заголовка, который я использую для каждого цикла, чтобы получить заголовок и подзаголовок и его текст и вывести их, но я хочу, чтобы эти заголовок и подзаголовок были назначены заголовок1 в категорию и заголовок2 в подкатегорию. вот что я получил до сих пор:

Цикл Foreach для получения категорий и подкатегорий с текстом

foreach (var category in ct)
            {
                strDocumentText.Append(category.ParentCat.CategoryName);
                strDocumentText.Append("<br />");
                if(category.DocumentText != null)
                {
                    strDocumentText.Append(category.DocumentText);
                }

                if (category.Children != null)
                {
                    foreach (var subCategoreis in category.Children)
                    {
                        strDocumentText.Append("<p />");
                        strDocumentText.Append(subCategoreis.ParentCat.CategoryName);
                        strDocumentText.Append("<br />");
                        if (category.DocumentText != null)
                        {

                            strDocumentText.Append(subCategoreis.DocumentText);
                        }
                    }
                }

            }

Создать текстовый документ:

StringBuilder strDocumentText = new StringBuilder();

string html = strDocumentText.ToString();
 using (MemoryStream generatedDocument = new MemoryStream())
                {
                    BuildDocument(generatedDocument, html);
                    using (WordprocessingDocument wordDoc = WordprocessingDocument.Create(generatedDocument, WordprocessingDocumentType.Document))
                    {
                         MainDocumentPart mainPart = wordDoc.MainDocumentPart;
                       if (mainPart == null)
                       {
                           mainPart = wordDoc.AddMainDocumentPart();
                           new DocumentFormat.OpenXml.Wordprocessing.Document(new Body()).Save(mainPart);
                       }

                       HtmlConverter converter = new HtmlConverter(mainPart);
                       Body body = mainPart.Document.Body;

                        var paragraphs = converter.Parse(html);
                        for (int i = 0; i < paragraphs.Count; i++)
                       {
                            body.Append(paragraphs[i]);
                       }

                        mainPart.Document.Save();
                    }

                    fs.Close();
                    File.WriteAllBytes(saveFileDialog1.FileName, generatedDocument.ToArray());

1 Ответ

0 голосов
/ 23 декабря 2011

Сначала вам нужно добавить определения стилей в документ. Стили по умолчанию не включены при создании документа OpenXml. После определения стилей вы можете ссылаться на них в элементе свойств абзаца (сериализованном как «pPr») ИЛИ в свойствах элемента run. Взгляните на: http://msdn.microsoft.com/en-us/library/cc850838.aspx

...