遇到此问题,首先想到的就是各种百度。结果度娘了一会并没有发现有用的有效的解决方法,哎,看来还得靠自己啊。
首先整理了下手头上的资源,一是HtmlAgilityPack,专门解析Html文本用的;二是我有ASPOSE.Word。
再整理下思路:在Word中插入Html,首先有一点是肯定的,Word跟Html都是Document结构,这点应该是没啥怀疑的。如此的话就感觉好办多了,无非就是Document上插入几个节点,在Html插入节点的方式完全可以运用到此地方。
那么第一种解决方法就是:首先把Word转换为Html,然后在指定位置插入当前要插入的Html代码,然后再保存成Word格式的文档。
第二种方式就是:把Html解析出有效的文本,利用Word增加段落的方式添加从Html中解析出来的文本。
HtmlAgilityPack.HtmlDocument hd = new HtmlAgilityPack.HtmlDocument()
hd.LoadHtml(txtContent.Value)
hd.DocumentNode.Elements("p");
通过此方式就可以获取到富文本域里面的所有文本信息。但是此种方式获取到的节点在ASPOSE类里面不识别。
再继续折腾吧,回到ASPOSE上面。找帮助文档,寻百度。
Document doc = new Document(Server.MapPath("~/tem_body.doc"))
DocumentBuilder docBuilder = new DocumentBuilder(doc)
docBuilder.InsertHtml(txtContent.Value)
doc.Save(Server.MapPath("~/") + "/TestWord121.doc")
打开保存后的文件,My God,这样就可以了。再试试带图片的,也很不错,图片也可以正常在Word里面正常显示。看来此插件确实很强大啊,不过到目前还并没有解决我的问题。就是插入的位置问题。目前它是插入的头部,即Body的Paragraph 0 处。
接下来就是解决如何把HTML文本插入到指定位置,想了想得首先知道要插入的位置,度娘了一会发现了东东。DocumentExplorer,它可以查看Word文档里面的Doc结构。
速度找了一个,打开后就可以清晰地看到Word文档:
这样的话就知道自己要插入的位置在那个地方。最简单的就是设置好模板,找到要插入的位置节点。
Document temdoc = new Document(Server.MapPath("~/tem.doc"))
Document doc = new Document()
DocumentBuilder docBuilder = new DocumentBuilder(doc)
docBuilder.InsertHtml(txtContent.Value)
docBuilder.ParagraphFormat.Alignment = ParagraphAlignment.Left
temdoc.AppendDocument(doc, ImportFormatMode.KeepSourceFormatting)
DocumentBuilder temdocBuilder = new DocumentBuilder(temdoc)
var temParas = temdocBuilder.Document.Sections[1].Body.Paragraphs
//int intIndexer = 0
foreach (Paragraph para in temParas)
{
// 这里面随便指定了一个位置,在Paragraphs的第六个节点处
temdocBuilder.Document.Sections[0].Body.InsertAfter(para.Clone(true), temdocBuilder.Document.Sections[0].Body.Paragraphs[5 + intIndexer - 1].NextSibling)
intIndexer++
}
temdocBuilder.Document.Sections.RemoveAt(1)
temdoc.Save(Server.MapPath("~/") + "/TestWord1212.doc")
再次保存后打开测试Word文档,符合自己的预期,解决了把HTML文本插入到Word文档的指定位置。再试试带图片的,结果发现Word文档里面有没有图片,回头想想,之前是可以正常保存且显示图片的,现在不显示图片而只显示一个叉叉,看来是因为图片路劲出问题了。
我的电脑上只有WORD2003,刚刚试了一下。 *** 作如下:1、准备一个html格式的文件;
2、把文件扩展名(.html)改成 .xls 。确实完成;
3、用EXCEL2003打开;
4、打开WORD;
5、在EXCEL中,全选所有文字(CTRL+A),复制文字,粘贴到WORD中,如有提示,点确定。保存,即可。
可以先复制到记事本,然后从记事本复制过去,再将此文本选择转换成表格。直接复制没有问题,采用嵌入方式,excel表格单元格属性 *** 作为:格式----单元格----边框----外边框,就ok乐
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)