使用OpenXML从HTML文件生成docx文件

新手

我正在使用这种方法来生成docx文件:

public static void CreateDocument(string documentFileName, string text)
{
    using (WordprocessingDocument wordDoc =
        WordprocessingDocument.Create(documentFileName, WordprocessingDocumentType.Document))
    {
        MainDocumentPart mainPart = wordDoc.AddMainDocumentPart();

        string docXml =
                    @"<?xml version=""1.0"" encoding=""UTF-8"" standalone=""yes""?>
                 <w:document xmlns:w=""http://schemas.openxmlformats.org/wordprocessingml/2006/main"">
                 <w:body><w:p><w:r><w:t>#REPLACE#</w:t></w:r></w:p></w:body>
                 </w:document>";

        docXml = docXml.Replace("#REPLACE#", text);

        using (Stream stream = mainPart.GetStream())
        {
            byte[] buf = (new UTF8Encoding()).GetBytes(docXml);
            stream.Write(buf, 0, buf.Length);
        }
    }
}

它的工作原理就像一种魅力:

CreateDocument("test.docx", "Hello");

但是,如果我要放置HTML内容而不是该Hello怎么办?例如:

CreateDocument("test.docx", @"<html><head></head>
                              <body>
                                    <h1>Hello</h1>
                              </body>
                        </html>");

或类似这样的东西:

CreateDocument("test.docx", @"Hello<BR>
                                    This is a simple text<BR>
                                    Third paragraph<BR>
                                    Sign
                        ");

两种情况都为创建了无效的结构document.xml任何的想法?如何从HTML内容生成docx文件?

马里奥Z

您不能仅将HTML内容插入“ document.xml”中,这部分仅需要WordprocessingML内容,因此您必须将该HTML转换为WordprocessingML,请参见this

您可以使用的另一件事是altChunk元素,通过它您可以将HTML文件放置在DOCX文件中,然后将该HTML内容引用到文档中某个特定的位置,请参见this

最后,作为替代方案,使用GemBox.Document库可以完全完成所需的操作,请参见以下内容:

public static void CreateDocument(string documentFileName, string text)
{
    DocumentModel document = new DocumentModel();
    document.Content.LoadText(text, LoadOptions.HtmlDefault);
    document.Save(documentFileName);
}

或者,您实际上可以直接将HTML内容转换为DOCX文件:

public static void Convert(string documentFileName, string htmlText)
{
    HtmlLoadOptions options = LoadOptions.HtmlDefault;
    using (var htmlStream = new MemoryStream(options.Encoding.GetBytes(htmlText)))
        DocumentModel.Load(htmlStream, options)
                     .Save(documentFileName);
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用OpenXML替换DOCX文件中的文本-奇怪的内容

来自分类Dev

.docx文件生成

来自分类Dev

.docx文件生成

来自分类Dev

使用OpenXML SDK用换行符(换行符)替换docx文件上的文本

来自分类Dev

如何使用OpenXML SDK修改DocX文件并将其保存到其他位置?

来自分类Dev

生成的docx文件已损坏

来自分类Dev

使用OpenXML读取Excel文件

来自分类Dev

使用OpenXML读取Excel文件

来自分类Dev

openxml无法通过sharepoint rest打开docx文件

来自分类Dev

如何使用“ docxtemplater”生成的多个docx文件创建一个zip文件?

来自分类Dev

使用python读写.docx文件

来自分类Dev

我可以使用DOCX库将DOCX文件另存为HTML吗?

来自分类Dev

Pandoc不使用RStudio生成HTML文件

来自分类Dev

如何使用Plotly Kotlin生成HTML文件

来自分类Dev

vbscript 将 html 文件转换为 docx

来自分类Dev

自动更新使用OpenXML SDK生成的DOCX中目录的页码

来自分类Dev

如何通过C#通过OpenXML从Word(.Docx)中提取OLE文件

来自分类Dev

垂直合并的单元格后,OpenXml无法打开docx文件,

来自分类Dev

在MS Word文件(.docx)上呈现HTML代码-文件损坏

来自分类Dev

使用docx4j在docx文件中编辑图表

来自分类Dev

使用 Docx4j 从 Docx 文件中读取文本

来自分类Dev

使用javascript / jquery获取docx文件内容

来自分类Dev

使用python查找图像当前docx文件

来自分类Dev

使用Apache POI读取.docx文件

来自分类Dev

Word无法使用表打开DOCX文件

来自分类Dev

无法使用C#下载docx文件

来自分类Dev

使用php编辑上传的.docx文件

来自分类Dev

使用Emacs编辑.docx文件吗?

来自分类Dev

使用PHP上传pdf或doc或docx文件