文章出处:http://blog.csdn.net/chinapi_hzh/article/details/5798689
用jacob. 先到官方网站上去下载:http://sourceforge.net/project/showfiles.php?group_id=109543&package_id=118368 jacob.zip. 下载jacob_18.zip(1.8版本),下载之后解压,把jacob.jar放到项目/web-inf/lib下面。把jacob .dll放到c:/windos/system32/以及java/jdk*.*/jre/bin下面。这样就算是配置完成了。
package com.yigou.comm;
import com.jacob.activeX.ActiveXComponent;
import com.jacob.com.Dispatch;
import com.jacob.com.Variant;
public class WordUtil {
public static boolean ChageFormat(String FolderPath, String FileName) {
String FileFormat = "";
System.out.println(FolderPath);
FileFormat = FileName.substring(FileName.length() - 4, FileName
.length());
System.out.println(FileFormat);
if (FileFormat.equalsIgnoreCase(".doc")) {
String DocFile = FolderPath + "//" + FileName;
System.out.println("word文件路径:" + DocFile);
// word文件的完整路径
String HtmlFile = DocFile.substring(0, (DocFile.length() - 4))
+ ".htm";
System.out.println("htm文件路径:" + HtmlFile);
// html文件的完整路径
ActiveXComponent app = new ActiveXComponent("Word.Application");
// 启动word
try {
app.setProperty("Visible", new Variant(false));
// 设置word程序非可视化运行
Dispatch docs = app.getProperty("Documents").toDispatch();
Dispatch doc = Dispatch.invoke(
docs,
"Open",
Dispatch.Method,
new Object[] { DocFile, new Variant(false),
new Variant(true) }, new int[1]).toDispatch();
// 打开word文件
Dispatch.invoke(doc, "SaveAs", Dispatch.Method, new Object[] {
HtmlFile, new Variant(8) }, new int[1]);
// 作为htm格式保存文件
Dispatch.call(doc, "Close", new Variant(false));
// 关闭文件
} catch (Exception e) {
e.printStackTrace();
} finally {
app.invoke("Quit", new Variant[] {});
// 退出word程序
}
// 转化完毕
return true;
}
return false;
}
public static void main(String[] args) {
WordUtil.ChageFormat("D:/", "NETVIRSTV100R001 SIS_用户门户.doc");
}
}
FolderPath为word存放路径。FileName为word名称。通过这个方法就把word文件转成的htm文件。这时候就可以用流来读取htm文件了,读出来的既不是乱码。并且带有格式。
另外要强调的是jacob这个组件和jdk,以及windows版本都有关系。所以版本一定要匹配。否则会报错。版本的问题就要挨个去试了。没有捷径可走。
----------------------------------------------------------------------
我操作的环境:
win xp
jdk 1.6
下载的jar包:jacob_18.zip
----------------------------------------------------------------------
在main函数下运行没问题
通过页面一运行出现如下异常
org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1665) at java.lang.Thread.run(Thread.java:619) Caused by:
java.lang.NoClassDefFoundError: Could not initialize class com.jacob.activeX.ActiveXComponent at com.yigou.comm.WordUtil.ChageFormat(WordUtil.java:22)
at com.yigou.web.actions.CategoryAction.uploaddoc(CategoryAction.java:376) at com.yigou.web.actions.CategoryAction.uploadfile(CategoryAction.java:322)
... 74 more
解决办法:
将在放入jdk1.6.0_11\jre\bin/目录下,即可