4

我知道已经有类似的问题,并建议使用 Open XML 等。

我正在使用 Open XMl,但它仅适用于内联样式。

除了 Open XML 之外,是否有任何解决方案或任何其他更好的方法将 html 转换为 docx。

谢谢!

4

1 回答 1

7

您可以使用此处描述的工具内联 CSS 文件。

然后,执行转换(改编自Eric White 的博客):

using (WordprocessingDocument myDoc =
    WordprocessingDocument.Open("ConvertedDocument.docx", true))
{
    string altChunkId = "AltChunkId1";
    MainDocumentPart mainPart = myDoc.MainDocumentPart;
    var chunk = mainPart.AddAlternativeFormatImportPart(
        AlternativeFormatImportPartType.Html, altChunkId);

    using (FileStream fileStream = File.Open("YourHtmlDocument.html", FileMode.Open))
    {
        chunk.FeedData(fileStream);
    }
    AltChunk altChunk = new AltChunk() {Id = altChunkId};

    mainPart.Document.Body.InsertAfter(
               altChunk, mainPart.Document.Body.Elements<Paragraph>().Last());
    mainPart.Document.Save();
}

这并不完全将 HTML 转换为 DOCX。它附加YourHtmlDocument.htmlConvertedDocument.docx. 如果ConvertedDocument.docx最初是空的,这种方法实际上是一种转换。

每当您使用AltChunk构建文档时,您的 HTML 都会嵌入到文档中,直到下次在 Word 中打开该文档。此时,HTML 被转换为WordProcessingML标记。如果文档无法在 MS Word 中打开,这实际上只是一个问题。如果您要上传到 Google 文档、在 OpenOffice 中打开或使用 COM 转换为 PDF,那么 OpenXML 就不够用了。在这种情况下,您可能需要使用像Aspose.Words这样的付费工具。

于 2013-06-11T19:06:04.683 回答