为标题添加样式

本文关键字:样式 添加 标题 | 更新日期: 2023-09-27 18:18:01

我正在使用这个库将html文本转换为word格式。

一切都很完美。

我现在需要设置一些文本的样式。我现在用来生成文档的是,我有一个标题、副标题和标题文本的列表,我使用每个循环来获取标题、副标题及其文本并输出它们,但我希望这些标题和副标题将heading1分配给category, heading2分配给subcategory。以下是我目前得到的结果:

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

创建word文档:

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());

为标题添加样式

首先需要向文档添加样式定义。在构造OpenXml文档时不包括默认样式。定义样式之后,可以在段落属性元素(序列化为"pPr")或运行元素属性中引用它们。看看:http://msdn.microsoft.com/en-us/library/cc850838.aspx