主要问题是使用的版本太低,jacobBin_17,jacobBin_16是我使用的两个版本,但是都调不通 。所以强烈建议下在最近的稳定版本,到官方网站上
http://sourceforge.net/projects/jacob-project/
我下载的是jacob_1.12。
用的例子是http://www.blogjava.net/galaxyp/archive/2007/06/21/125529.html给出来的,原文及代码如下。
这个是csdn的编辑转发的一篇文章。
jacob是java和windows下的com桥,通过它我们可以在java程序中调用COM组件。如果你的JDK是1.4,那你需要下载jacob1.9的jni库才能正常运行,早期版本在JDK1.4下有些问题。
package com;
/**
* <p>Title:Word文档转html类</p>
* <p>Description: </p>
* <p>Copyright:() 2002</p>
* @author 舵手
* @version 1.0
*/
import com.jacob.com.*;
import com.jacob.activeX.*;
public class WordtoHtml {
/**
*文档转换函数
*@param docfile word文档的绝对路径加文件名(包含扩展名)
*@param htmlfile 转换后的html文件绝对路径和文件名(不含扩展名)
*/
public static void change(String docfile, String htmlfile) {
ActiveXComponent app = new ActiveXComponent("Word.Application");// 启动word
try {
app.setProperty("Visible", new Variant(false));
//设置word不可见
Object docs = app.getProperty("Documents").toDispatch();
Object 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]);
// 作为html格式保存到临时文件
Variant f = new Variant(false);
Dispatch.call(doc, "Close", f);
} catch (Exception e) {
e.printStackTrace();
} finally {
app.invoke("Quit", new Variant[]{});
}
}
public static void main(String[] strs){
WordtoHtml.change("c:\\a\\运输管理调度系统总体方案.doc", "c:\\a\\t");
}
}
由于开始使用的16,17两个版本支持的jdk过低,所以总抱错,我用的是jdk1.6,所以下载最新的jacom,
16,17应该是4,5年前的版本了。仅支持jdk1.3,当然有很多问题。
错误1(16版本的报的错):com.jacob.com.comfailexception
com.jacob.com.comfailexception: a com exception has been encountered:
at invoke of: documents
description: an unknown com error has occured.
at com.jacob.com.dispatch.invokev(native method)
at com.jacob.com.dispatch.get(dispatch.java)
at struts_temp.wordbean.createnewdocument(wordbean.java:29)
at struts_temp.wordtest.main(wordtest.java:12)
错误2(17版本的报的错):com.jacob.com.ComFailException: Invoke Failed: Documents at com.jacob.com.Dispatch.invokev(Native Method) at
com.jacob.activeX.ActiveXComponent.getProperty(ActiveXComponent.java) at wordtohtml.change(wordtohtml.java:62)
at wordtohtml.main(wordtohtml.java:104)
com.jacob.com.ComFailException: Invoke Failed: Quit
at com.jacob.com.Dispatch.invokev(Native Method)
at com.jacob.activeX.ActiveXComponent.invoke(ActiveXComponent.java) at wordtohtml.change(wordtohtml.java:77) at wordtohtml.main(wordtohtml.java:104)
Exception in thread "main"
换成最新的之后,两个错误就没有了,看到许多文章给出来的解决方法是使用以前的jdk1.3,简直就是倒退。
不过使用最新的jacom上面例子中的代码会报错:将Object改为Dispatch 即可解决。
public class WordToHtml {
/**
*文档转换函数
*@param docfile word文档的绝对路径加文件名(包含扩展名)
*@param htmlfile 转换后的html文件绝对路径和文件名(不含扩展名)
*/
public static void change(String docfile, String htmlfile) {
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]);
// 作为html格式保存到临时文件
Variant f = new Variant(false);
Dispatch.call(doc, "Close", f);
} catch (Exception e) {
e.printStackTrace();
} finally {
app.invoke("Quit", new Variant[]{});
}
}
public static void main(String[] strs){
WordToHtml.change("D:\\ghr\\jacob\\test.doc", "D:\\ghr\\jacob\\t");
}
}
配置问题,
jacob_1.12\x86\jacom.dll文件拷到C:\WINDOWS\system32下面即可,当然也需要将jar包放进去
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/g089h515r806/archive/2007/06/23/1662763.aspx
分享到:
相关推荐
本书使用的是jacob1.7,从如下网址可下载得到: http://danadler.com/jacob/ 但是使用JACOB可以先编写COM组件,再在Java中调用,这在许多遗留在系统中COM组件是常用的,因此,使用JACOB对于系统的集成是比较实用的...
关于使用jacob使用介绍,使用jacob实现word、pdf、excel之间的转换
jacob.jar1.19及使用方法 解压后获得3个文件 jacob.jar jacob-1.17-x64.dll jacob-1.17-x86.dll jacob.jar 放到项目的lib目录 win7 jacob-1.17-x64.dll 放到C:\Windows\System32 jacob-1.17-x86.dll 放到C:\...
使用方法: 1.将jacob-1.18.zip下载解压,在文件夹中找到jacob-1.18-x64.dll,jacob-1.18-x86.dll,jacob.jar 2.通过 pom.xml 新增 <groupId>com.hynnet</groupId> <artifactId>jacob <version>1.18 3. 如果...
使用jacob转换office为PDF文件,需要将jacob.dll放到jdk\bin目录下
jacob1.9 jacob1.12 jacob1.14内附使用说明和三个jar包,由于不同机器适应不同版本,所以打包三个任你选!
jacob.jar1.20及使用方法 解压后获得3个文件 jacob.jar jacob-1.20-x64.dll jacob-1.20-x86.dll 包含(32位,64位)以及文档 jacob(java com bradge) 通过调用MS OFFICE可以快捷的将word excel ppt等转换为pdf
他可以被转换成任何的类 如: 使用toDispatch();可以将Variant转化成Dispatch对象 ) com jacob com中还有其他的一些类不是建立在JacobObject之上的 如com jacob com ComThread(负责COM线程管理 ) ...
如果是jre-x64那么对应的就需要jacob-1.18-x64.dll安装了最新完整的WPS2016发生错误,无法将doc文档转换成pdf文件。FamilyI
Put the appropriate DLL ...jacob for 32 bit windows is located in /x86. jacob for 64 bit windows is located in /64. jacob.jar包引入到项目里 64位系统的就用jacob-1.20-x64的 32位系统的就用jacob-1.20-x86的
jacob使用入门,比较适合初学者学习!
jacob-1.17-M2jacob-1.17-M2jacob-1.17-M2jacob-1.17-M2jacob-1.17-M2jacob-1.17-M2jacob-1.17-M2jacob-1.17-M2jacob-1.17-M2jacob-1.17-M2jacob-1.17-M2jacob-1.17-M2jacob-1.17-M2jacob-1.17-M2jacob-1.17-M2jacob...
com.jacob.jacob_1.10jar包下载
jacob-1.18的资源包还有 jacob-1.18-x64.dll和jacob-1.18-x86.dll. 把对应的windows版本扔到 C...如果使用maven 则在pom.xml中添加 <groupId>com.hynnet</groupId> <artifactId>jacob <version>1.18 </dependency>
java调用ocx控件的方法,jacob技术调用ocx控件的步骤、流程,java项目调用具体代码,java调用ocx控件参数传递,jacob调用ocx控件常见bug解决办法,并且附上了java调用word控件的demo代码
配置jacob详细教程, 操作word ,解决jdk1.6与jacob版本冲突问题,附上workspace
jdk1.6 以上版本测试可用的 jacob_1.9使用Jacob转换Word,Excel为HTML 源码测试程序 及 工具,使用时 将 jacob.dll 放在 系统Java\jdk1.6.0_10\jre\bin目录下即可,jar 看项目需求放置添加到工程
java操作office的jar包,其中jacob.jar放在项目jar文件夹中,jacob.dll放在C:\Windows\System32文件夹下
jacob-1.14.3.dll及使用方法
jacob.dll,jacob.jar下载