Java使用Jacob实现将多个Word文档合并为一个Word
1、前言
近期总在接触一些导出Word、Excel等等需求。
单纯实现导出问题不大,但是在符合用户要求下可能要下一番功夫。
今天我们就来记录一下:
Java使用Jacob实现将多个Word文档合并为一个Word。
2、Jacob相关信息
Jacob是JAVA-COM Bridge的简写。
允许你利用Java调用COM Automation组件。
它使用JNI对COM库进行本机调用。
Jacob在支持32位和64位JVM的x86和x64环境中运行。
3、补充
关于Jacob更多资料请参考官网。
(1)Jacob项目官方地址:
https://sourceforge.net/projects/jacob-project/
(2)Jacob下载地址:
https://sourceforge.net/projects/jacob-project/files/
4、 简单案例
(1) 解压下载好的Jacob
里面已经提供了我们需要的jar包和dll文件。
注意:
这里dll文件的选择需要根据自己电脑位数。
![e603c3f12da419a8d0ebfd5cc2b6818c.png](https://img-blog.csdnimg.cn/img_convert/e603c3f12da419a8d0ebfd5cc2b6818c.png)
(2) 导入jar
这里以idea为例
![405cf16f2dac822341a37b3fc0b1a978.png](https://img-blog.csdnimg.cn/img_convert/405cf16f2dac822341a37b3fc0b1a978.png)
(3) 导入dll文件
放置到自己的...jdk...bin下面
![6cfaa4d8bda5acb3a70ba95927027127.png](https://img-blog.csdnimg.cn/img_convert/6cfaa4d8bda5acb3a70ba95927027127.png)
(4) 简单工具类
暂时没有什么好办法去展现代码。
这里就先截重要方法描述信息。
完整代码最后附上。
![a65baacaea9a5371c8dd380d067fd475.png](https://img-blog.csdnimg.cn/img_convert/a65baacaea9a5371c8dd380d067fd475.png)
Main测试
![216d2d53953881f55aa218307c87d0fa.png](https://img-blog.csdnimg.cn/img_convert/216d2d53953881f55aa218307c87d0fa.png)
(5) 测试
文档odysee.docx
![9abf11de112d442628bc8d74e758eb72.png](https://img-blog.csdnimg.cn/img_convert/9abf11de112d442628bc8d74e758eb72.png)
文档odyseeWord.doc
![4d9e7aea6dbb8ec4440cf873ebe7238a.png](https://img-blog.csdnimg.cn/img_convert/4d9e7aea6dbb8ec4440cf873ebe7238a.png)
执行main函数
![b5d016ebabae2acc986f3d198b6f2c40.png](https://img-blog.csdnimg.cn/img_convert/b5d016ebabae2acc986f3d198b6f2c40.png)
查看文档More2OneWordUtil.docx
![29b8670106041764b7a4f1ebd22a2f36.png](https://img-blog.csdnimg.cn/img_convert/29b8670106041764b7a4f1ebd22a2f36.png)
5、 总结
如果有心细的小友可能会发现odysee.docx这个文档的字段格式{{name}}
是不是像easypoi文档模板,其实就是之前咱们讲过利用easypoi导出Word模板
这里easypoi+Jacob这里其实一个完整的功能需求。
例如:
导出一个部门的人员Word模板,将一个部门的人员Word模板合成为一个Word。
......
tip:
如果大家有其他的方法欢迎留言补充,共同进步。
感谢大家支持。
================================================
简单案例代码
================================================
import com.jacob.activeX.ActiveXComponent;
import com.jacob.com.Dispatch;
import com.jacob.com.Variant;
import java.util.ArrayList;
import java.util.List;
/**
* 功能:合并多个word文件
* 备注:支持doc,docx
* 补充:下载jacob-1.19-x64.dll[配套jar]动态库,配置到jdk.xxx/bin
*/
public class More2OneWordUtil {
/**
* 合并多个word文件
* @param fileList:需要合并的word文件的目录(先放入先显示)
* @param path:合并后word输出路径
*/
public static void convertedWord(List fileList, String path) {
if (fileList.size() == 0 || fileList == null) {
return;
}
ActiveXComponent axc = null;
try {
//启动word
axc = new ActiveXComponent("Word.Application");
} catch (Exception e) {
e.printStackTrace();
}
try {
//设置word不可见
axc.setProperty("Visible