一、Jacob 介绍
Jacob 是 JAVA-COM Bridge的缩写,是一个中间件,能够提供自动化访问MS系统下COM组件和Win32 libraries的功能。
- MS系统提供的COM组件
COM组件 | 对象ID |
---|---|
MS Word | Word.Application |
MS Excel | Excel.Application |
MS Powerpoint | Powerpoint.Application |
MS IE | InternetExplore.Application |
二、整体架构
三、设计模式
四、类图
-
核心类
-
JacobObject:用于Java程序MS下的COM进行通信,创建标准的API框架
-
ComThread:初始化COM组件线程,释放线程,对线程进行管理
-
Dispatch:调度处理类,封装了操作来从而操作Office,并表示不同MS级别调度对象
-
ActiveXComponent : 创建COM组件
-
Variant : 与COM通讯的参数或者返回值
-
ROT :Running Object Table (ROT),运行对象表将每个线程映射到所有jacobobjects,在线程创建
-
-
核心方法
-
Dispatch : 可调用该自动化对象的属性或方法,具体的属性和方法要看参考文档VBA API
- Dispatch.get(dispatch, String name);获取对象属性
- Dispatch.put(dispatch, String name, Object value);设置对象属性
- Dispatch.call(dispatch, String name, Object… args);调用对象方法
-
-
类图
Jacob类图
五、流程图
流程图六、优缺点
-
优点
- 相对于OpenOffice,转换效果良好,
- 相对于POI,可以操作Word/Powerpoint
- 使用简单,参照VBA API即可使用Jacob操作COM组件
-
不足
- 转换速度慢
- CPU占用率高(单CPU占用100%)
- 并发情况下WORD可能会死锁(微软知识库)
- Word宏安全问题
网友评论