Jacob包使用方法

本文介绍了Jacob库,它是Java与COM组件之间的桥梁,允许Java操控Windows平台上的Office应用程序。详细讲述了Jacob的配置,包括从源码和GitHub下载jar及dll文件,以及如何将dll放入Java环境。接着,讲解了Jacob开发流程,包括创建ActiveXComponent实例、获取Dispatch对象以及各种Dispatch方法的使用。最后,提供了一个使用Jacob打印Excel文件的代码示例。
摘要由CSDN通过智能技术生成

一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的转换;

 

二JACOB项目配置

项目源码地址 https://sourceforge.net/projects/jacob-project/files/

Jar包下载地址:https://github.com/freemansoft/jacob-project/releases

jacob.jar是要用的包
jacob.dll就是com组件

值得注意的是,不同的版本的系统使用不同的dll文件

将jacob.jar放到项目中,然后把dll放到java_home\bin下,即可。dll不用放到windows/system32下。

 

三JACOB开发流程

JACOB的流程分成下面几个步骤:

    1) ActiveXComponent ax = new ActiveXComponent("a1");//构建ActiveX组件实例

    其中的a1的值和你需要调用的ActiveX控件

jacob-1.18 jacob-1.18-x64.dll jacob-1.18-x86.dll 亲测可用: 下面为转pdf使用方法 package com.pdf.doctopdf.pdf; import com.jacob.activeX.ActiveXComponent; import com.jacob.com.Dispatch; import com.jacob.com.Variant; import java.io.File; public class TestJacob { public static void main(String args[]) { ActiveXComponent app = null; String wordFile = "C:\\Users\\admin\\Desktop\\jar\\年会系统优化_20210820_V0.2.docx"; String pdfFile = "C:\\Users\\admin\\Desktop\\jar\\测试pdf.pdf"; System.out.println("开始转换..."); // 开始时间 long start = System.currentTimeMillis(); try { // 打开word app = new ActiveXComponent("Word.Application"); // 获得word中所有打开的文档 Dispatch documents = app.getProperty("Documents").toDispatch(); System.out.println("打开文件: " + wordFile); // 打开文档 Dispatch document = Dispatch.call(documents, "Open", wordFile, false, true).toDispatch(); // 如果文件存在的话,不会覆盖,会直接报错,所以我们需要判断文件是否存在 File target = new File(pdfFile); if (target.exists()) { target.delete(); } System.out.println("另存为: " + pdfFile); // 另存为,将文档报错为pdf,其中word保存为pdf的格式宏的值是17 Dispatch.call(document, "SaveAs", pdfFile, 17); // 关闭文档 Dispatch.call(document, "Close", false); // 结束时间 long end = System.currentTimeMillis(); System.out.println("转换成功,用时:" + (end - start) + "ms"); }catch(Exception e) { e.getMessage(); System.out.println("转换失败"+e.getMessage()); }finally { // 关闭office app.invoke("Quit", 0); } } }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值