我知道已经存在类似的问题,并提出了Open XML等等.
我正在使用Open XMl,但它只适用于内联样式.
是否有任何解决方案,或任何其他更好的方式将HTML转换为除Open XML以外的docx.
谢谢!
小智 5
您可以使用此处描述的工具内联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();
}
Run Code Online (Sandbox Code Playgroud)
这并不完全是将HTML转换为DOCX.它是附加YourHtmlDocument.html到ConvertedDocument.docx.如果ConvertedDocument.docx最初为空,则此方法实际上是转换.
无论何时使用AltChunk构建文档,HTML都会嵌入到文档中,直到下次在Word中打开文档为止.此时,HTML将转换为WordProcessingML标记.如果不在MS Word中打开文档,这实际上只是一个问题.如果您要上传到Google文档,在OpenOffice中打开,或使用COM转换为PDF,OpenXML是不够的.在这种情况下,您可能需要使用像Aspose.Words这样的付费工具.