转自:http://blog.csdn.net/hemingwang0902/article/details/4377994

本博客 jacob 列文章导读
Java操作Microsoft Word之jacob
jacob使用入门及问题解析
使用Jacob将Word转为Html或txt
使用Jacob将Word转为PDF
java通过jacob调用word (根据Word模板生成动态内容)

首先,大家先要了解一下jacob ,官方的解释是Java COM Bridge,即java和com组件间的桥梁(进一步了解com/dcom: http://docs.huihoo.com/com/

com一般表现为dll或exe等二进制文件,像我们呆会会用到的jacob.dll文件,这里说说为什么我们用java去操纵office(如:word)要使用com,而不直接使用java去做?
    首先,我们清楚office是建立在windows平台之上的,本身是一个软件,除了他自己提供的宏似乎没有什么能对他进行直接的操作;在windows平台上为了解决像这样的不同应用软件,通信缺乏通用api问题,推出了com的解决方案;
    其次,我们使用dll中的一组或多组相关的函数存取组件数据,总的合称为接口具体到每个细节的实现称为方法;如果我们要调用接口里的方法,唯一的途径就是调用指向接口的指针;
   所以总的来说使用就是dll完成api的转换;
不懂没关系,会用就好,用久自然懂了, 好了com讲完,我们开始我们的主要内容吧!

大家先到这里下载jacob.jar 
里面的jacob.jar是我们要用的包
            jacob.dll就是我前面说的com组件
把包里的jacob.dll放到c:/windows/system32下
讲解麻烦,画个图大家看 好

值得注意的是,不同的版本的系统使用不同的dll文件
所以如果你编译成功,但运行失败一般是dll文件问题
遇到这种情况,可以到
http://downloads.sourceforge.net/jacob-project/jacob_1.9.zip?modtime=1109437002&big_mirror=0
下载其他的版本的 dll 文件。
先给大家个word的测试代码(经过更改该代码在我的机器上运行正常)

  1. import com.jacob.activeX.ActiveXComponent;
  2. import com.jacob.com.ComException;
  3. import com.jacob.com.Dispatch;
  4. import com.jacob.com.Variant;
  5. public class WordDocumentProperties {
  6. /** 声明一个word对象*/
  7. private ActiveXComponent objWord;
  8. /** 声明四个word组件*/
  9. private Dispatch custDocprops;
  10. private Dispatch builtInDocProps;
  11. private Dispatch document;
  12. private Dispatch wordObject;
  13. public WordDocumentProperties() {
  14. }
  15. /**
  16. * 打开word文挡
  17. */
  18. public void open(String filename) {
  19. // 创建一个word对象
  20. objWord = new ActiveXComponent("Word.Application");
  21. // 为wordobject组件附值
  22. wordObject = (Dispatch) (objWord.getObject()); // 改了这里
  23. // 生成一个只读方式的word文挡组件
  24. Dispatch.put(wordObject, "Visible", new Variant(false));
  25. // 获取文挡属性
  26. Dispatch documents = objWord.getProperty("Documents").toDispatch();
  27. // 打开激活文挡
  28. document = Dispatch.call(documents, "Open", filename).toDispatch();
  29. }
  30. public void selectCustomDocumentProperitiesMode() {
  31. custDocprops = Dispatch.get(document, "CustomDocumentProperties").toDispatch();
  32. }
  33. public void selectBuiltinPropertiesMode() {
  34. builtInDocProps = Dispatch.get(document, "BuiltInDocumentProperties").toDispatch();
  35. }
  36. /**
  37. * 关闭文挡
  38. */
  39. public void close() {
  40. Dispatch.call(document, "Close");
  41. }
  42. public String getCustomProperty(String cusPropName) {
  43. try {
  44. cusPropName = Dispatch.call((Dispatch) custDocprops, "Item", cusPropName).toString();
  45. } catch (ComException e) {
  46. cusPropName = null;
  47. }
  48. return cusPropName;
  49. }
  50. public String getBuiltInProperty(String builtInPropName) {
  51. try {
  52. builtInPropName = Dispatch.call((Dispatch) builtInDocProps, "Item", builtInPropName).toString();
  53. } catch (ComException e) {
  54. builtInPropName = null;
  55. }
  56. return builtInPropName;
  57. }
  58. public static void main(String[] args) {
  59. try {
  60. WordDocumentProperties jacTest = new WordDocumentProperties();
  61. jacTest.open("s.doc");
  62. jacTest.selectCustomDocumentProperitiesMode();
  63. jacTest.selectBuiltinPropertiesMode();
  64. String custValue = jacTest.getCustomProperty("Information Source");
  65. String builtInValue = jacTest.getBuiltInProperty("Author");
  66. jacTest.close();
  67. System.out.println(" Document Val One:  " + custValue);
  68. System.out.println(" Document Author:  " + builtInValue);
  69. } catch (Exception e) {
  70. System.out.println(e);
  71. }
  72. }
  73. }

jacob使用入门及问题解析的更多相关文章

  1. Android入门(二十一)解析XML

    原文链接:http://www.orlion.ga/685/ 解析XML常用的方式有两种,一种是PULL解析一种是SAX解析. 假设解析数据为: <apps>     <app> ...

  2. EasyUI基础入门之Parser(解析器)

    前言 JQuery EasyUI提供的组件包含功能强大的DataGrid,TreeGrid.面板.下拉组合等.用户能够组合使用这些组件,也能够单独使用当中一个.(使用的形式是以插件的方式提供的) Ea ...

  3. javaweb入门20160305---xml的解析入门

    一个XML文件除了我们人去读写以外,我们希望可以通过程序去读写,利用程序去增删改查XML的过程就是XML编程 CRUD:Create.Read.Update.Delete   XML的两种解析方式 d ...

  4. dump解析入门-用VS解析dump文件进行排障

    突然有一天部署在服务器的一个应用挂掉了,没办法只能进入服务器打开 [事件查看器]查看下,好不容易找到了打开后一脸懵逼 事件查看器查到的内容根本对我们排障没有任何作用. 在这个时候如果有对应的dump文 ...

  5. ECMAScript6 入门 变量的解析赋值

    ES6 允许按照一定模式,先=从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring). 这句话的解释:第一步从数组或者对象中提取值,第二步将提取到的值对变量进行赋值 数组的解 ...

  6. UE4官方行为树快速入门文档解析和修改

    近学习了UE4官方文档的行为树快速入门指南,发现里面的部分逻辑稍稍有点混乱和重叠,于是加入了自己的想法,修改了部分行为树逻辑,优化了其AI寻路能力. 初始的基本操作和资源创建同官方文档一样:1个Fol ...

  7. js模块化入门与commonjs解析与应用

    JS模块化的基本原理 commonjs规范 commonjs在前端模块化中的基本使用 AMD与CMD规范剖析博客链接 一.JS模块化基本原理 在JS没有提出来模块化的时候,开发JS项目比较简单,同时也 ...

  8. 【SpringMVC架构】SpringMVC入门实例,解析工作原理(二)

    上篇博文,我们简单的介绍了什么是SpringMVC.这篇博文.我们搭建一个简单SpringMVC的环境,使用非注解形式实现一个HelloWorld实例,从简单入手,逐步深入. 环境准备 我们须要有主要 ...

  9. centos7安装nginx-1.13.6 新手入门,图文解析

    系统环境 操作系统:64位CentOS Linux release 7.2.1511 (Core) 安装nginx依赖包 [root@localhost ~]# yum install gcc-c++ ...

随机推荐

  1. 欧拉回路&欧拉通路判断

    欧拉回路:图G,若存在一条路,经过G中每条边有且仅有一次,称这条路为欧拉路,如果存在一条回路经过G每条边有且仅有一次, 称这条回路为欧拉回路.具有欧拉回路的图成为欧拉图. 判断欧拉通路是否存在的方法 ...

  2. spring源码解析--事务篇(前篇)

    对于每一个JAVA程序员,spring应该是再熟悉不过的框架了,它的功能有多强大我就不多说了,既然他有这么强大的功能,是如何实现的呢?这个就需要从他的原理去了解,而最直接了解原理的方式莫过于源码.当然 ...

  3. SGU 206. Roads

    206. Roads time limit per test: 0.5 sec. memory limit per test: 65536 KB input: standard output: sta ...

  4. ctime, atime与mtime释疑

    每个档案都有属性及内容.除了档案内容很重要外,时间标记也非常重要--系统管理员可以藉由时间标记进行备份.例行性检查:使用者可以从时间标记找出重要的档案,硬碟的I/O也依靠时间标记(time flag) ...

  5. c++ primer 10 关联容器

    关联容器和顺序容器的本质差别在于:关联容器通过键(key)存储和读取元素,顺序容器则通过元素在容器中的位置顺序存储和访问元素 关联容器类型 map 关联数组:元素通过键来存储和读取 set 大小可变的 ...

  6. 搭建 GIT 服务器

    Git 是一款免费.开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目. 此实验以 CentOS 7.2 x64 的系统为环境,搭建 git 服务器. 安装依赖库和编译工具 为了后续安装能 ...

  7. RSA私钥和公钥文件格式 (pkcs#1, pkcs#8, pkcs#12, pem)

    RSA私钥和公钥文件格式 (pkcs#1, pkcs#8, pkcs#12, pem) 2018年03月07日 11:57:22 阅读数:674 Format Name Description PKC ...

  8. Java中的覆盖和隐藏以及final关键字

    Java覆盖和隐藏 (1) 变量只能被隐藏(包括静态和非静态),不能被覆盖: (2) 可以用子类的静态变量隐藏父类的静态变量,也可以用子类的非静态变量隐藏父类的静态变量,也可以用非最终变量(final ...

  9. C++运算符重载规则

    运算符重载时要遵循以下规则:  ( 1 ) 除了类属关系运算符 " . " .成员指针运算符 " .* " .作用域运算符 " :: " . ...

  10. ie8浏览器 图片本身问题导致 无法显示图片--- 诡异现象的排查分享

    引子:   前段时间 做新版2.0 首页 的时候, 总感觉 新版首页 线上 精彩回顾下的 2张图片颜色怪怪的,当时以为是图片压缩太厉害导致的,由于实在太忙就没太在意!以下 是来自线上 截图:  红色方 ...