OpenXML Word - 将样式添加到标题

时间:2011-12-15 12:05:44

标签: c# html ms-word coding-style openxml

我正在使用this library将html文本转换为字格式。

一切都很完美。

我现在需要设置一些文字的样式。我现在正在使用生成文档的是我有一个标题和子标题和标题文本的列表,我用于每个循环获取标题和副标题及其文本并输出它们但我希望这些标题和副标题分配heading1到category和heading2到sub category。这是我到目前为止所得到的:

使用文本

获取catagories和子类别的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());

1 个答案:

答案 0 :(得分:0)

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