`
kevin-qingzhan
  • 浏览: 84950 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论
阅读更多
7.4 使用Jacob来处理Word文档
Word或Excel程序是以一种COM组件形式存在的。如果能够在Java中调用Word的COM组件,就能使用它的方法来获取Word文档中的文本信息。目前网上有许多提供这样的工具。

7.4.1 Jacob的下载
Jacob 是Java-COM Bridge的缩写,它在Java与微软的COM组件之间构建一座桥梁。使用Jacob自带的DLL动态链接库,并通过JNI的方式实现了在Java平台上对COM程序的调用。Jacob下载的地址为:

http://sourceforge.net/project/showfiles.php?group_id=109543&package_id=118368。本书采用的是jacob_1.11_zip。解压下载的Jacob_1.11_zip文件后,如图7-17所示。



图7-17 Jacob包解压后的内容

7.4.2 在Eclipse中配置
(1)将jacob.jar导入工程的Build Path,然后确认自己机器的CPU类型(X86或AMD64),并选择不同目录下的jacob.dll文件。

(2)将jacob.dll放到%JAVA_HOME%\jre\bin目录下,其中,%JAVA_HOME%就是JDK的安装目录。注意这个的jre目录必须是Eclipse当前正在使用的目录,在Eclipse中选择“window->Preferences”菜单,在弹出的对话框中选择“Java->Installed JREs”项,如图7-18所示。



图7-18 Eclipse中JRE设置的对话框

(3)当前选择的JRE是“C:\Program Files\Java\jdk1.5.0_07\jre”目录下的,所以需要把jacob.dll复制到“C:\Program Files\Java\jdk1.5.0_07\jre\bin”目录下面。

(4)在工程中新建一个ch7.jacob包,并在包中创建WordReader类。该类将提供一个静态的extractDoc()方法。它接收两个参数,一个是要处理的DOC文件名,另一个则是输出的文件名,然后通过JNI调用Word的API转换内容,该函数的代码如下。

代码7.10

public static void extractDoc(String inputFIle, String outputFile) {

   boolean flag = false;

 

   // 打开Word应用程序

   ActiveXComponent app = new ActiveXComponent("Word.Application");

   try {

      // 设置word不可见

      app.setProperty("Visible", new Variant(false));

      // 打开word文件

      Dispatch doc1 = app.getProperty("Documents").toDispatch();

      Dispatch doc2 = Dispatch.invoke(

            doc1,

            "Open",

            Dispatch.Method,

            new Object[] { inputFIle, new Variant(false),

                  new Variant(true) }, new int[1]).toDispatch();

      // 作为txt格式保存到临时文件

      Dispatch.invoke(doc2, "SaveAs", Dispatch.Method, new Object[] {

            outputFile, new Variant(7) }, new int[1]);

      // 关闭word

      Variant f = new Variant(false);

      Dispatch.call(doc2, "Close", f);

      flag = true;

   } catch (Exception e) {

      e.printStackTrace();

   } finally {

      app.invoke("Quit", new Variant[] {});

   }

   if (flag == true) {

      System.out.println("Transformed Successfully");

   } else {

      System.out.println("Transform Failed");

   }

}

(5)创建一个main函数来测试WordReader类,该main函数代码如下。

public static void main(String[] args) {

        WordReader.extractDoc("c:/test.doc","c:/jacob.txt");

}

(6)新生成的txt文件被保存到c:\jacob.txt下,如图7-19所示。



图7-19 使用Jacob处理的效果

在使用Jacob时,很重要的一点是,用户本地系统中必须安装有Word的应用程序。否则也就无法建立Java-COM桥,进而无法解析了
分享到:
评论

相关推荐

    jacob-1.18.zip + jacob-1.19.zip + jacob-1.20.zip 最新版本(包含dll文件)

    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. 如果是32位系统...

    com.jacob.jacob_1.10jar包下载.zip

    《深入理解Java Jacob库:解析com.jacob.jacob_1.10.jar包》 在Java编程中,有时候我们需要与Windows API进行交互,比如自动化办公文档处理、打印任务或者访问硬件设备等。这时,Java Jacob库(Java和COM Bridge)...

    jacob安装包操作office的jacob安装包

    首先,JACOB的核心在于其动态链接库(DLL)文件,包括`jacob-1.14.3-x64.dll`和`jacob-1.14.3-x86.dll`。这两个文件分别对应于64位和32位的操作系统。在安装JACOB时,需要根据你的Java环境和操作系统版本选择正确的...

    jacob1.18,jacob1.19.zip两个版本

    本文将详细解析"jacob1.18"和"jacob1.19"这两个版本的特性、使用方法以及它们在Windows环境下的应用。 首先,我们来看"jacob1.18"版本。此版本是Jacob的一个较早发行版,它包含了一个名为"jacob.jar"的Java类库,这...

    最新版jacob 1.20.jar jacob-1.20-x64.dll jacob-1.20-x86.dll

    这个压缩包包含了Jacob的最新版本,即1.20版,包括两个动态链接库(DLL)文件:`jacob-1.20-x64.dll`和`jacob-1.20-x86.dll`,以及Java类库`jacob-1.20.jar`。这些文件分别用于64位和32位的Windows系统,确保了在...

    jacob1.19(包含jacob-1.19-x64.dll和jacob-1.19-x86.dll)

    这个压缩包"jacob1.19"包含了两个版本的Jacob动态链接库(DLL)文件:jacob-1.19-x64.dll适用于64位系统,而jacob-1.19-x86.dll则适用于32位系统。这两个文件是Jacob库的核心组成部分,它们实现了Java和COM之间的...

    jacob-1.14.3.jar、jacob-1.14.3-x64.dll

    在本压缩包中,我们有两个关键文件:“jacob-1.14.3.jar”和“jacob-1.14.3-x64.dll”。 `jacob-1.14.3.jar` 是Java版的Jacob库,它是Java到COM桥接器(Java COM Bridge)的实现。Jacob库提供了一个纯Java接口,...

    jacob-1.18-x64.dll jacob-1.18-x86.dll jacob.jar

    "jacob-1.18-x64.dll" 和 "jacob-1.18-x86.dll" 是Jacob库的动态链接库文件,分别对应于64位和32位的Windows操作系统。Jacob的核心功能就是通过这些DLL文件来实现Java和COM接口的通信。 "jacob.jar" 是Jacob的Java...

    jacob 1.180 jacob-1.18-x64.dll jacob-1.18-x86.dll

    这个压缩包文件包含了Jacob的版本1.18,提供了两个不同的DLL文件,分别是jacob-1.18-x64.dll和jacob-1.18-x86.dll,分别对应64位和32位的Windows系统。 首先,我们来深入理解Jacob库的核心功能。Jacob全称为Java ...

    jacob.jar及jacob-1.20-x64.dll文件

    **Jacob库介绍** Jacob(Java和COM Bridge)是一个开源Java库,它允许Java应用程序与Microsoft Windows平台上的COM组件进行交互。这个库的核心是通过JNI(Java Native Interface)实现的,使得Java代码能够调用COM...

    jacob(包含jacob-1.19-x64.dll和jacob-1.19-x86.dll)

    **Jacob库详解** Jacob(Java-COM Bridge)是一个开源Java库,它允许Java应用程序与Microsoft Windows平台上的COM组件进行交互。这个库的核心是两个动态链接库(DLLs),即`jacob-1.19-x64.dll`和`jacob-1.19-x86....

    jacob-1.19.zip

    Java采用Jacob调用SAPI实现合成语音是一种在Java应用程序中集成语音合成技术的常见方法。Jacob(Java COM Bridge)是一个开源库,它为Java开发者提供了一个桥梁,让他们能够使用Microsoft的COM(Component Object ...

    jacob的API,很详细

    **Jacob API 深度解析** Jacob,全称为Java-COM Bridge,是一个开源的Java库,旨在提供一种方式让Java程序能够与COM组件(Component Object Model)进行交互。这个库在Windows平台上尤其有用,因为COM是Microsoft ...

    jacob1.9 jacob1.12 jacob1.14

    这个压缩包包含了Jacob的三个不同版本:1.9、1.12和1.14,每个版本都有其特定的适用场景和改进。由于不同机器可能对不同版本的Jacob有兼容性需求,所以提供了这三个版本供用户选择。 Jacob的核心功能在于为Java提供...

    JACOB各版本下载

    标题“JACOB各版本下载”表明我们将讨论JACOB的不同版本及其获取途径,而描述则突出了使用JACOB在Java中调用OCX控件的简便性。 JACOB的全称是Java COM Bridge,它通过JNI(Java Native Interface)技术实现了Java和...

    jacob-1.18-M2(含Jacob.jar包以及Jacob.dll文件 说明文档API等)集合

    这个"jacob-1.18-M2"集合包含了Jacob项目的最新预发布版本,版本号为1.18-M2,它提供了完整的开发资源,包括Jacob.jar包、Jacob.dll文件以及相关的说明文档和API。 Jacob.jar是Jacob的核心库,它是Java类库,包含了...

    jacob-1.16.x.zip位jacob1.16版本集合资源包

    这个资源包"jacob-1.16.x.zip"包含了Jacob的1.16系列不同版本,包括1.16、1.16.1、1.16-M1和1.16-M2,这些是项目的预发布版本和维护更新。 Jacob的核心功能在于提供了一种在Java程序中调用COM对象的方法,通过它的...

    jacob-1.14.3-x86

    《Jacob库详解:1.14.3-x86版本的使用与原理》 Jacob库,全称为Java COM Bridge,是Java与COM组件之间通信的一个重要桥梁。它为Java开发者提供了一个接口,使得在Java程序中能够调用Windows平台上的COM组件变得可能...

    jacob1.18源码和jar包

    JACOB里的总共有两个包: com jacob activeX:JACOB可以通过它调度(Dispatch)activeX 控件 com jacob com:JACOB通过它调用系统DLL (activeX是由微软公司推出的用于Internet的技术 以前曾经被称为OLE 和OCX...

    jacob.jar和jacob.dll(配置说明和代码例子)

    在本文中,我们将深入探讨如何配置jacob.jar和jacob.dll,并通过代码示例了解如何使用Jacob处理Word文档。 首先,配置jacob.jar和jacob.dll是使用Jacob的关键步骤。jacob.jar是Jacob的Java类库,包含了与COM交互的...

Global site tag (gtag.js) - Google Analytics