主要问题是使用的版本太低,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
分享到:
相关推荐
《Jacob使用手册》 Jacob(Java COM Bridge)是一款强大的Java库,它允许Java应用程序与COM(Component Object Model)组件进行交互。在Windows环境下,许多功能丰富的应用程序和库都是基于COM技术构建的,如...
标题中的“关于jacob的使用解决方案1”指出的是在Java环境中使用Jacob库遇到的问题及其解决方法。Jacob是一个Java到COM桥接库,允许Java应用程序访问和操作COM组件,如Microsoft Office套件,以便进行文件格式转换等...
**Jacob使用说明终极吐血版** Jacob(Java和COM Bridge)是一个开源的Java库,它提供了在Java应用程序中调用Windows COM组件的能力。这个库使得Java开发者能够利用大量的已有的COM对象,比如Microsoft Office组件,...
JACOB使用JNI技术,使Java程序可以直接调用COM接口和Win32 API,实现跨平台的交互。 1.2 **JACOB能做什么** JACOB主要应用于处理Microsoft Office文档,包括Word、Excel等。它可以读写Word文档,将Word文档转换成...
**Jacob配置及使用详解** Jacob(Java-COM Bridge)是一个开源Java库,它允许Java程序直接调用Windows上的COM组件,如Microsoft Office套件中的Word、Excel等。本教程将详细讲解如何配置Jacob并利用其在Java项目中...
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:\...
"使用jacob转换office为PDF"是解决这一问题的一种方法。JACOB(Java COM Bridge)是一个Java库,它允许Java应用程序与COM(Component Object Model)组件进行交互。在这个场景中,JACOB被用来调用Microsoft Office的...
3. Jacob 1.14:作为最新的版本,Jacob 1.14可能修复了之前版本中的已知问题,并增加了对新COM组件或API的支持。它可能引入了新的特性,例如多线程支持,或者提高了与64位系统和最新Java版本的兼容性。 在使用Jacob...
提供的三份文档《jacob操作文档.docx》、《jacob使用.docx》和《jacob介绍.docx》应该分别包含了Jacob的详细操作步骤、常见用法以及基础介绍。这些文档可以帮助开发者更好地理解和使用Jacob,例如,可能包含如何创建...
要使用JACOB,首先你需要下载并安装它。JACOB的最新版本可在其官方网站上获取,例如在描述中提到的http://danadler.com/jacob/。安装过程相对简单,主要包括两个步骤:将`jacob.dll`复制到Windows系统的`system32`...
然而,在使用Maven进行项目构建时,可能会遇到无法直接通过Maven中央仓库下载com.jacob:1.19的问题。本文将详细介绍如何解决这一问题,并探讨com.jacob的使用方法。 首先,让我们理解为何无法在Maven中央仓库中找到...
需要注意的是,由于Jacob是通过JNI调用本地资源,所以在使用过程中可能会遇到一些稳定性问题,比如内存泄漏、线程安全问题等。因此,在实际开发中,建议对Jacob的使用进行适当的封装和异常处理,以提高程序的健壮性...
描述中提到的"jar及相应的dll文件",这是Jacob使用的关键。Jacob的jar文件包含了Java代码,而dll文件则是实际调用COM组件的本地库。在不同的JDK版本下,可能需要特定版本的dll文件以确保兼容性。例如,如果使用的是...
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过程中,可能会遇到诸如找不到COM对象、权限问题或者版本不匹配等错误。这时需要检查COM组件的注册状态,确保Java进程有权限访问,以及检查Jacob和Java版本是否匹配。 总结来说,Jacob是一个强大的工具...
3. **性能问题**:由于Jacob依赖于本地库,它的性能可能不如原生的Java库,但在处理大量Office操作时仍然是实用的解决方案。 4. **许可证信息**:阅读`LICENSE.TXT`了解Jacob的使用许可条款,确保合法使用。 5. **...
使用Jacob时可能会遇到的问题包括但不限于:版本兼容性问题(如Jacob与COM组件版本不匹配)、64位/32位Java环境的适配、权限问题等。解决这些问题通常需要仔细阅读官方文档,理解COM原理,以及具备一定的Windows系统...
4. 使用Jacob进行自动化操作时,确保你的COM组件和操作系统设置允许这样的操作,否则可能会遇到权限问题。 总的来说,Jacob为Java开发者提供了一种与Windows COM组件交互的强大工具,但需要注意兼容性和系统配置...