officeba > 单独文章


WORD最新教程:教你用Jacob来处理Word文档的方法

WORD最新教程:教你用Jacob来处理Word文档的方法
Word或Excel程序是以一种COM组件形式存在的。如果能够在Java中调用Word的COM组件,就能使用它的方法来获取Word文档中的文本信息。目前网上有许多提供这样的工具。
Jacob 是Java-COM Bridge的缩写,它在Java与微软的COM组件之间构建一座桥梁。使用Jacob自带的DLL动态链接库,并通过JNI的方式实现了在Java平台上对COM程序的调用。Jacob下载的地址为:
https://sourceforge.net/project/showfiles.php?group_id=109543&package_id=118368。本书采用的是jacob_1.11_zip。解压下载的Jacob_1.11_zip文件后,
在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所示。

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下,

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

声明:欢迎各大网站转载本站文章,还请保留一条能直接指向本站的超级链接,谢谢!

时间:2009-08-21 13:13:06,点击:65824


【OfficeBa论坛】:阅读本文时遇到了什么问题,可以到论坛进行交流!Excel专家邮件:342327115@qq.com(大家在Excel使用中遇到什么问题,可以咨询此邮箱)。

【声明】:以上文章或资料除注明为Office自创或编辑整理外,均为各方收集或网友推荐所得。其中摘录的内容以共享、研究为目的,不存在任何商业考虑。如有任何异议,请与本站联系,本站确认后将立即撤下。谢谢您的支持与理解!


相关评论

我要评论

评论内容