【问题标题】:Open XML: Convert a Paragraph to simple HTMLOpen XML:将段落转换为简单的 HTML
【发布时间】:2012-08-13 20:44:12
【问题描述】:

我有一个 Paragraph 对象并希望将其包含的内部文本转换为 HTML 片段。

我使用 Microsoft 的 Open XML SDK 2.0。

【问题讨论】:

    标签: openxml openxml-sdk


    【解决方案1】:
        [Test]
        public void GetHTMLOutOfParagraphsWithoutHeadingInformation()
        {
    
            var paragraphs = new List<Paragraph>();
            StyleDefinitionsPart styles = null;
    
            // Open the file read-only since we don't need to change it.
            using (var wordprocessingDocument = WordprocessingDocument.Open(documentFileName, true))
            {
                paragraphs = wordprocessingDocument.MainDocumentPart.Document.Body
                    .OfType<Paragraph>().ToList();
                styles = wordprocessingDocument.MainDocumentPart.StyleDefinitionsPart;
    
                foreach (var p in paragraphs)
                {
                    using (var memoryStream = new MemoryStream())
                    {
                        var doc = WordprocessingDocument.Create(memoryStream, WordprocessingDocumentType.Document);
                        doc.AddMainDocumentPart().AddPart(styles);
                        doc.MainDocumentPart.Document = new Document();
                        doc.MainDocumentPart.Document.Body = new Body();
                        doc.MainDocumentPart.Document.Body.Append(p.CloneNode(true));
                        doc.MainDocumentPart.Document.Save();
                        Console.WriteLine(GetHTMLOfDoc(doc));
                    }
                }
            }
        }
    
        string GetHTMLOfDoc(WordprocessingDocument doc)
        {
    
            HtmlConverterSettings settings = new HtmlConverterSettings()
            {
                PageTitle = "Test Title",
                CssClassPrefix = "Pt",
                Css = "",
                ConvertFormatting = false,
    
            };
    
            XElement html = HtmlConverter.ConvertToHtml(doc, settings);
            var notNullAnyMore = html.XPathSelectElement("//*[local-name() = 'body']");
            return notNullAnyMore.ToStringNewLineOnAttributes();
        }
    }
    

    【讨论】:

    • 上述代码需要这些命名空间: using DocumentFormat.OpenXml.Packaging;使用 DocumentFormat.OpenXml.Wordprocessing;使用 System.IO;
    猜你喜欢
    • 2013-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-03
    • 1970-01-01
    相关资源
    最近更新 更多