介绍

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

 

安装和配置

Jacob是一个开源软件,它的官方站点是:http://danadler.com/jacob/ 
我的系统是64位,把jacob-1.18-M2-x64.dll复制到Windows\System32文件夹下,再 IDE中引用jacob.jar就可以使用了


 

读写Word简单示例

必须先在对应的路径下建立fileIn.doc,可以事先写入内容:

package king.word;
import com.jacob.activeX.ActiveXComponent;
import com.jacob.com.Dispatch;
import com.jacob.com.Variant;
public class Test {
String strDir = "F:\\桌面\\Temp\\";
String strInputDoc = strDir + "fileIn.doc";
String strOutputDoc = strDir + "fileOut.doc";
String strOldText = "oldText";
String strNewText = "It's very good to use java control Word";
boolean isVisible = true;
boolean isSaveOnExit = true;
public Test(){
ActiveXComponent oWord = new ActiveXComponent("Word.Application");
oWord.setProperty("Visible", new Variant(isVisible));
Dispatch oDocuments = oWord.getProperty("Documents").toDispatch();
Dispatch oDocument = Dispatch.call(oDocuments, "Open", strInputDoc).toDispatch();
Dispatch oSelection = oWord.getProperty("Selection").toDispatch();
Dispatch oFind = oWord.call(oSelection, "Find").toDispatch();
Dispatch.put(oFind, "Text", strOldText);
Dispatch.call(oFind, "Execute");
Dispatch.put(oSelection, "Text", strNewText);
Dispatch.call(oSelection, "MoveDown");
Dispatch.put(oSelection, "Text", "nSo we got the next line including BR.n");
Dispatch oFont = Dispatch.get(oSelection, "Font").toDispatch();
Dispatch.put(oFont, "Bold", "1");
Dispatch.put(oFont, "Italic", "1");
Dispatch.put(oFont, "Underline", "0");
Dispatch oAlign = Dispatch.get(oSelection, "ParagraphFormat").toDispatch();
Dispatch.put(oAlign, "Alignment", "3");
Dispatch oWordBasic = (Dispatch)Dispatch.call(oWord, "WordBasic").getDispatch();
Dispatch.call(oWordBasic, "FileSaveAs", strOutputDoc);
Dispatch.call(oDocument, "Close", new Variant(isSaveOnExit));
oWord.invoke("Quit", new Variant(0));
}
public static void main(String[] args){
new Test();
System.out.println("Done");
}
}

jacob.jar的结构

jacob包括两个部分:

com.jacob.activeX: ActiveXComponent类
com.jacob.com: 其它类和元素

Jacob类

Jacob的结构很简单,包含以下几个类:

ActiveXComponent:封装了Dispatch对象,用于创建一个封装了COM组件对象的Java Object
Dispatch:用于指向封装后的MS数据结构。常用的方法有call,subcall,get,invoke…后面会介绍使用方法。
Variant:用于映射COM的Variant数据类型。提供Java和COM的数据交换。
ComException:异常类

Jacob方法

用于访问COM/DLL对象的方法,读取、修改COM/DLL对象的属性。

call:属于Dispatch类。用于访问COM/DLL对象的方法。方法进行了重载,方便不同场合调用。返回一个Variant类型的值。
callSub:使用方法和call一样,不过它不返回值。
get:读取COM对象的属性值,返回一个Variant类型值。
put:设置COM对象的属性值。
invoke:call的另一种用法,更复杂一些。
invokesub:subcall的另一种用法
getProperty:属于ActiveXComponent类,读取属性值,返回一个Variant类型值。
setProperty:属于ActiveXComponent类,设置属性值。
setProperty:属于ActiveXComponent类,设置属性值

文章转自:https://www.zybuluo.com/king/note/64983

Jacob用法收集的更多相关文章

  1. Linux nc命令用法收集

    ps.ubuntu自带的nc是netcat-openbsd版,不带-c/-e参数. pss.在线Markdown编辑器的bug是怎么回事...“#”号依然显示着 ##参数 想要连接到某处: nc [- ...

  2. Spring中@Value用法收集

    一.配置方式 @Value需要参数,这里参数可以是两种形式: @Value("#{configProperties['t1.msgname']}") 或者 @Value(" ...

  3. Spring MVC中@RequestParam/@RequestBody/@RequestHeader的用法收集(转)

    简介: handler method参数绑定常用的注解,我们根据他们处理的Request的不同内容部分分为四类:(主要讲解常用类型) A.处理requet uri部分(这里指uri template中 ...

  4. Spring MVC的WebMvcConfigurerAdapter用法收集(零配置,无XML配置)

    原理先不了解,只记录常用方法 用法: @EnableWebMvc 开启MVC配置,相当于 <?xml version="1.0" encoding="UTF-8&q ...

  5. sed与正则用法收集

    1.将文本每行最后七个字符换成!号 sed   -n  's#.\{7\}$#!#p' ooo 在文本的每一行前添加#符号 sed  's/^.\?/#&/' passwd &  替代 ...

  6. mplayer用法收集【转】

    转自:https://blog.csdn.net/wylhistory/article/details/4816653 1,录音: mplayer mms://202.***.***.***/test ...

  7. .NET中的三种Timer的区别和用法(收集)

    最近正好做一个WEB中定期执行的程序,而.NET中有3个不同的定时器.所以正好研究研究.这3个定时器分别是: 1.实现按用户定义的时间间隔引发事件的计时器.此计时器最宜用于 Windows 窗体应用程 ...

  8. jenkins pipline 用法收集

    1.下载多个项目 node { stage('clone'){ dir('test1'){ checkout([$class: 'GitSCM', branches: [[name: '*/maste ...

  9. SpringBoot中@EnableAutoConfiguration注解用法收集

    参考: http://blog.csdn.net/xiaoyu411502/article/details/52770723 https://docs.spring.io/spring-boot/do ...

随机推荐

  1. matplotlib绘图2

    fig=plt.figure() fig.add_subplot(3,3,1)#3行3列 第一个图 n=128 X=np.random.normal(0,1,n) Y=np.random.normal ...

  2. awk、sed、grep三大shell文本处理工具之grep的应用

    1.基本格式grep pattern [file...](1)grep 搜索字符串 [filename](2)grep 正则表达式 [filename]在文件中搜索所有 pattern 出现的位置, ...

  3. Delphi 实现获取其他程序的子窗体

    通过一个父窗体的句柄,递归的枚举它的子窗体,我们可以最终找到需要的子窗体. 用法如下: nParentHandle: HWnd; nChildHandle: HWnd; nParentHandle : ...

  4. html 響應式web設計

    RWD(響應式web設計)可以根據尺寸大小傳遞網頁,對於平板和移動設備是必須的. <html lang="en-US"> lang表示頁面的主要語言.http://ww ...

  5. python之unittest单元测试

    # unittest单元测试 import unittest from class_demo import Car class TestCar(unittest.TestCase): '''测试Car ...

  6. CUDA ---- Warp解析

    Warp 逻辑上,所有thread是并行的,但是,从硬件的角度来说,实际上并不是所有的thread能够在同一时刻执行,接下来我们将解释有关warp的一些本质. Warps and Thread Blo ...

  7. 洛谷P3868 [TJOI2009]猜数字(中国剩余定理,扩展欧几里德)

    洛谷题目传送门 90分WA第二个点的看过来! 简要介绍一下中国剩余定理 中国剩余定理,就是用来求解这样的问题: 假定以下出现数都是自然数,对于一个线性同余方程组(其中\(\forall i,j\in[ ...

  8. 自学Zabbix3.10.2.1 linux如何配置使用sendEmail发送邮件

    点击返回:自学Zabbix之路 点击返回:自学Zabbix4.0之路 点击返回:自学zabbix集锦 自学Zabbix3.10.2.1 linux如何配置使用sendEmail发送邮件 sendEma ...

  9. 【BZOJ3668】【NOI2014】起床困难综合症(贪心)

    [NOI2014]起床困难综合症(贪心) 题面 Description 21 世纪,许多人得了一种奇怪的病:起床困难综合症,其临床表现为:起床难,起床后精神不佳.作为一名青春阳光好少年,atm 一直坚 ...

  10. javascript面向对象精要第四章构造函数和原型对象整理精要