如何在C#中将htm文件生成的word文档写入富文本

时间:2013-07-18 09:26:53

标签: c# asp.net openxml openxml-sdk

我正在尝试使用Open XML库从保存的HTML文件生成word文档。 如果HTML文件不包含图像,我可以使用下面的代码并将文本内容写入word doc。

HtmlDocument doc = new HtmlDocument();
doc.Load(fileName); //fileName is the Htm file
string Detail = string.Empty;
string webData = string.Empty;
HtmlNode hcollection = doc.DocumentNode.SelectSingleNode("//body");
Detail = hcollection.InnerText;

但是如果HTML文件包含嵌入的图像,我很难将该图像包含在单词doc中。

使用hcollection.InnerText仅写入文本部分并排除图像。

当我使用

HtmlNode hcollection = doc.DocumentNode.SelectSingleNode("//body");
Detail = hcollection.InnerHtml;

所有HTML标记都会与标记

中的Image路径一起写入doc文档
<table border='0' width='100%' cellpadding='0' cellspacing='0' align='center'>
<tr><td valign='top' align="left">
<div style='width:100%'><div id="div_img">
<div>
 <img src="http://www.myweb.com/web/img/2013/07/18/img_1.jpg">
 <span>Sample Text</span></div></div><br><br>Sample Text Content here<br><br>                         </div></td></tr></table>

如何删除html标记,而不是像

那样显示的路径
<img src="http://www.myweb.com/web/img/2013/07/18/img_1.jpg">

相应的图片被加载。

请帮忙。

2 个答案:

答案 0 :(得分:1)

实际上将HTML文档转换为MS Word是一项非常复杂的任务,除了需要解决的IMAGE标签之外还有很多其他情况。 Open XML和HTML格式之间的区别绝对是决定性的。

如果我是你,我会寻找第三方工具。支付费用比花费数周时间调查和学习任务的各个方面,编写代码,然后修复多个错误一样是明智的。

Personaly我使用了Aspose.Words库。它工作得很好,但也许你想尝试另一个。

答案 1 :(得分:1)

您需要查看HTML并以某种方式将其转换为OpenXML。

我使用过HtmlToOpenXml开源库(license),而且运行良好。它应该处理图像(内联,本地或远程)并正确地将它们插入OpenXML文档。我最近提交了一个被接受的补丁,所以该项目仍然有点活跃。

但是图书馆有一些限制:

  

Javascript(&lt; script&gt;),CSS&lt; style&gt;,&lt; meta&gt;和其他不支持的标签不会产生错误,但忽略

它确实处理内联样式信息,但它完全忽略了其他CSS,这是我需要的东西。我最后使用jsonfx集成了来自另一个开源项目(MIT license)的单个<style>元素的简单解析。

注意:处理多个<style>元素,下载CSS文件,整理出哪些样式规则优先 - 这些都是我没有解决的问题。