导出过程,把整个HTML中的一个DIV控件作为System.Web.UI.Control,转化为一长串string。然后进行导出,加上word的头,也就是样式,之后加上尾就能拼一个word文件出来。
在导出的过程中,div的样式也不是完全无效的,并且用js做的效果是不改变原先的html代码,特别是某些需要隐藏的div或者tr,虽然在页面上可以显示出看不到,可是导出的时候还是按照源html导出,所以先前被js隐藏过后的div等,导出的时候还会存在。这个处理方法比较简单的。只需要把我们的控件做成服务端的,触发事件,对需要隐藏的控件设置为visible=false,这样就可以解决了。之前的盖章无法导出也是因为我刚开始就写上了display:none,所以就算用js让它显示了,也是无法导出的。
虽然现在导出盖章是没有问题了,可是导出的图片还不能浮在文字上方,需要自己修改。
其实一切都是有关word的头样式,我也找了很多时间,比如“p.MsoHeader, li.MsoHeader, div.MsoHeader”就是页眉的样式,我加上后,发现还缺少样式。再把做好页眉的word上面,另存为html后看源码(其实导出的时候会出现一个文件夹,里面有页眉的资料),发现在页眉之外还有个div代码如:“<div style='mso-element:header' id=eh1>”,这个样式在网上找了点时间没能找到。
在我们的系统中,word导出的关键的"ToExcelFacade.cs"中"ToWordByString"方法已经加了很多的word样式头。比较复杂。要完全掌握导出的话,还需要找全所有的word样式,才有可能。有待研究。。。