如何把页面内容导出为word? (Java)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何把页面内容导出为word? (Java)相关的知识,希望对你有一定的参考价值。

现在有这样的需求:
需要把一个html页面导出为word,不知道谁有好的方法没?
暂时想到的有下面两种方法:

1.简单的用javascript获取页面内容,然后保存为.doc的后缀,这个方法似乎过于投机,并且不知道微软的word各个版本是否支持内容为html的word。
2.获取页面html后,用POI或JXL输出为word方式和方法一类似,并且好像wps不支持这样生成的文件。

希望能有更好的解决方法。
'qq240805747',是否回答的过于草率了点。
如果我只要页面中的一部分,或页面中的一个iframe你这样能行吗?再说了,我写这样的功能是为了用户考虑,不只是要一个结果而已。

目前主要是OFFICE03和07,都支持打开HTML格式的文档的,这个方法应该可行.
另外OFFICE源码是不公开的,所以不可能纯靠自己程序生成DOC,还是要靠OFFICE
参考技术A <html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>网页上内容导出到word</title>
<script language="javascript">
function OpenWord()

ExcelSheet = new ActiveXObject('word.Application');
ExcelSheet.Application.Visible = true;
var orgNum=ExcelSheet.Documents.Add('',0,1);
myRange =orgNum.Range(0,1)
sel=parent.document.body.createTextRange();
oTblExport = parent.document.getElementById("Layer1");
if (oTblExport != null)
sel.moveToElementText(oTblExport);
sel.execCommand('Copy');
parent.document.body.blur();
myRange.Paste();



</SCRIPT>
</head>
<body>
<div id="Layer1" >Happy New Year ! ! !
<input type=button name='button_export' title='导出到word' onclick=OpenWord() value=下载到word></div>
</div>

<p>this is a test!</p>
<table align="center" width="300" border="1" bordercolor="#2baeff" cellpadding="0" cellspacing="0" bgcolor="lightblue">
<Tr><Td>1</td><Td>2</td><Td>3</td></tr>
<Tr><Td>4</td><Td>5</td><Td>6</td></tr>
<Tr><Td>7</td><Td>8</td><Td>9</td></tr>
</table>
</body>
</html>

小demo自己测试过了,可以使用。你直接复制,保存成html,在你本地测试一下。
但是,上述demo中的只适合小于M的网页,大数据量,建议使用开源插件
POI,地址:
http://www.oschina.net/p/poi

开发语言: Ruby Java
项目主页: http://poi.apache.org/
文档地址: http://poi.apache.org/apidocs/index.html
下载地址: http://www.apache.org/dyn/closer.cgi/poi/release/
参考技术B 如果要好看的话,应该要安装控件了,一般的网页是可以用WORD来编辑的.
但是如果你没有安装控件,图片就不能显示.

参考资料:GO

参考技术C IE都有自带word输出!方法如下:
工具-Internt选项-程序-HTML编辑器-选择“Office Word”-单击“确定”
然后再要输出的页面中,选择“文件”-“使用Office Word编辑器”,
就可以看到word中的页面了,最后还要选择“保存”!
参考技术D 如果能保证运行这个代码的电脑上装有Word的话,可以通过Word的对象模型提供的相关API完成你需要的效果。大致代码如下:

var oApplication=new ActiveXObject("Word.Application");
oApplication.Visible=true; // 如果不想看到Word界面就把这句去掉
var oDoc = oApplication.Documents.Open("d:\\Temp\\test.html");
oDoc.SaveAs("d:\\Temp\\Teset.doc", 16);
oApplication.Quit(false);
第5个回答  2009-09-07 xiaoqiang2005提供的是一套好的解决方案,poi做很专业!

怎么把python输出为word

程序导出word文档的方法
将web/html内容导出为world文档,再java中有很多解决方案,比如使用Jacob、Apache POI、Java2Word、iText等各种方式,以及使用freemarker这样的模板引擎这样的方式。php中也有一些相应的方法,但在python中将web/html内容生成world文档的方法是很少的。其中最不好解决的就是如何将使用js代码异步获取填充的数据,图片导出到word文档中。
1. unoconv
功能:
1.支持将本地html文档转换为docx格式的文档,所以需要先将网页中的html文件保存到本地,再调用unoconv进行转换。转换效果也不错,使用方法非常简单。

?

\# 安装

sudo apt-get install unoconv
\# 使用
unoconv -f pdf *.odt
unoconv -f doc *.odt
unoconv -f html *.odt

缺点:
1.只能对静态html进行转换,对于页面中有使用ajax异步获取数据的地方也不能转换(主要是要保证从web页面保存下来的html文件中有数据)。

2.只能对html进行转换,如果页面中有使用echarts,highcharts等js代码生成的图片,是无法将这些图片转换到word文档中;

3.生成的word文档内容格式不容易控制。

2. python-docx
功能:
1.python-docx是一个可以读写word文档的python库。

使用方法:
1.获取网页中的数据,使用python手动排版添加到word文档中。
参考技术A 可以使用win32com或者python-docx模块

以上是关于如何把页面内容导出为word? (Java)的主要内容,如果未能解决你的问题,请参考以下文章

怎么把python输出为word

asp.net web页面导出word

如何用java导出一个很复杂的word文件,要求把输入的值显示到word文件?

java怎么实现把页面的表格另存为一个word文档,求各位大神指导

Java 用Freemarker完美导出word文档(带图片)

java如何操作word实现自动填表