Jacob,项目地址是:http://sourceforge.net/projects/jacob-project/ ,目前最新的更新是2011年2月份的,本文将着重介绍如何通过这个项目去调用宏。
项目介绍完毕,现在正式开始介绍如何通过Jacob去调用宏。首先,需要下载Jacob的发布包,里面应该包含一个jar包:jacob.jar(放在项目的classpath下),两个dll文件:jacob-1.15-M4-x64.dll、jacob-1.15-M4-x86.dll,两个dll文件请根据系统架构属性选择其中一个,然后放在path路径下(也可以直接放在C:\WINDOWS\system32下面)。这样就可以开始编写调用宏的java程序了。
调用word宏
第一步,录制宏
在d盘根目录下(文档存放在哪里没有要求)新建一个word文档,名为test1.doc,打开,然后录制一段宏(具体录制哪类宏自便,调用时无需传参数即可,但是宏的保存方式要选择“所有文档(Normal)”,这样任何文档都可以调用这个宏了),宏名为macro1。
第二步,将test1.doc中宏macro1产生的影响撤销(比如那段宏是输入一段文字,那么就把这段文字删除)并保存,以便观察测试。
第三步,编写java调用代码
Java代码
ActiveXComponent word=new ActiveXComponent("Word.Application");
Dispatch documents = word.getProperty("Documents").toDispatch();
Dispatch document = Dispatch.call(documents, "Open", "d:/test1.doc").toDispatch();//指定要打开的文档并且打开它
Dispatch.call(word, "Run", new Variant("macro1"));//在这个文档上运行宏
第四步,执行这段java代码
执行完成之后,可以发现被撤销的宏影响又回来了,说明宏调用成功。
第五步,高级特性
在相同目录下(文档存放目录没有规定)新建一个空白的word文档test2.doc,然后将以上代码修改为:
Java代码
ActiveXComponent word=new ActiveXComponent("Word.Application");
Dispatch documents = word.getProperty("Documents").toDispatch();
Dispatch document = Dispatch.call(documents, "Open", "d:/test2.doc").toDispatch();//指定要打开的文档并且打开它
Dispatch.call(word, "Run", new Variant("macro1"));//在这个文档上运行宏
执行以上代码,可以发现,我们在test1.doc上录制的宏也可以在test2.doc上运行成功(当然选择宏保存时必须要保存到“所有文档(Normal)”中)。
深入探索
以上的例子只是一个很简单的没有参数的宏调用,如果有参数又该如何调用呢?其实有参数的情况也不是很复杂,只需将以上调用的java代码稍微修改下即可实现:
Java代码
ActiveXComponent word=new ActiveXComponent("Word.Application");
Dispatch documents = word.getProperty("Documents").toDispatch();
Dispatch document = Dispatch.call(documents, "Open", "d:/test1.doc").toDispatch();//指定要打开的文档并且打开它
Dispatch.call(word, "Run", new Variant("macro1"),new Variant(arg1),new Variant(arg2),..);//在这个文档上运行宏,并包含多个参数
调用excel宏
调用excel宏和调用word宏有点区别,因为excel不能将宏保存到“所有文档(Normal)”上,因此在调用宏的时候需要指明宏所在的具体文档,最后一条语句需要这么写:
Java代码
Variant result = Dispatch.call(excel, "Run", new Variant("test.xls!Module1.test"),//这里需要说明宏所在的文档
new Variant(arg1),
new Variant(arg2));
总结
利用java直接调用office宏的应用场景非常广泛,比如在对文档进行加密、解密和其它保护时特别有用。带参数的宏调用甚至可以灵活的编写成模版宏然后将业务数据注入到相关文档中,而且因为是通过office自己操作自己,所以office文档绝不会出现其它的用java操作office文档时可能出现的文档变异问题,在某些重要文档的操作上非常有用(比如文档格式要求非常严格的合同文档上)。另外,Jacob本身就可以通过调用com来直接操作office(包括编辑),而且office文档不会有任何变异,只是编码难度可能比较大,具体的操作方式这里就不赘述了,可以参考相关api。
分享到:
相关推荐
总结起来,Java操作Word文档主要依赖于像Jacob这样的第三方库,它提供了与Windows COM接口交互的能力。通过正确配置库文件和遵循上述步骤,开发者可以在Java程序中实现对Word文档的各种复杂操作。
java 操作word 如何用java调用word.exe的宏和其他功能? 继续上面的,现在发布一下我使用jacob调用word文件中的宏的代码。
Java操作Word模板读写是Java开发中常见的任务,特别是在生成报告、批量生成文档或自定义化文本输出的场景。在Java中,我们可以借助一些库来实现这一功能,比如Apache POI和OpenOffice API等。本篇文章将深入探讨如何...
Java操作Word-Jacob是一个主题,涉及使用Java编程语言与Microsoft Word进行交互的技术。Jacob全称为Java COM Bridge,它是一个开源的Java库,允许Java应用程序利用COM(Component Object Model)接口来调用Windows上...
Java操作word转PDF需要下载Jacob包.
提供的几个HTML文件分别涵盖了不同的操作示例,如“使用Jacob输出word文档”展示了如何创建一个新的Word文档并写入内容,而“java操作word宏”则涉及如何执行Word文档中的宏。 总之,Jacob为Java开发者提供了强大的...
在Java编程环境中,将Word文档转换为PDF是一项常见的任务,特别是在文档处理和自动化流程中。Aspose.Words是一个强大的第三方库,它提供了丰富的API来处理各种文档格式,包括Word(.doc, .docx)和PDF。本篇文章将...
5.该压缩包包含的内容:samples文件夹中包含了多个操作Word文档功能的java代码示例DEMO;lib文件夹下包含了用于在java程序中的Spire.Doc.jar文件,在项目程序中调用接口方法时,需要导入该jar文件;doc文件下包含了...
通过JACOB,Java开发人员可以创建和操作Word文档,执行宏命令,甚至将Word文档转换为PDF格式。使用JACOB前,需要确保已经在Java开发环境中加入了JACOB的jar包。 首先,JACOB允许Java调用Word中的宏。在使用JACOB...
总的来说,Java生成Word模板是结合了Java的IO操作、模板引擎概念和特定库(如Apache POI)的技能。它可以帮助开发者自动化文档生成,提高工作效率,特别是在需要批量生成或个性化定制文档的场景下。通过深入理解这些...
本篇将深入探讨如何利用Java处理Word文件,特别是基于模板进行操作。 首先,我们需要引入一个名为Apache POI的库,这是一个强大的API,专门用于读写Microsoft Office格式的文件,包括Word(.doc和.docx)。在Java中...
4. **调用Word API**:通过ActiveXComponent对象,你可以调用各种Word的方法,如`createDocument()`创建新文档,`open()`打开已有文档,`run()`执行宏或VBA命令,以及`saveAs()`保存文档等。 5. **控制Word操作**:...
Java2Word是一个基于Java技术实现的工具,用于与Microsoft Word文档进行交互,实现对Word文档的各种操作。在Java编程环境中,处理Word文档通常涉及到Apache POI、OpenOffice API或者JODConverter等库。这些库提供了...
在Java中,Apache POI提供API来读取、写入和操作Word2007文档。你需要添加Apache POI的相关JAR文件到项目类路径,例如:poi、poi-ooxml、poi-ooxml-schemas等。 2. **OOXML解析**: .docx文件实质上是一个被压缩的...
3. **基本操作**:Aspose.Word提供了丰富的API来操作Word文档。例如,你可以创建新文档,读取现有文档,修改内容,插入图片,添加表格,应用样式,以及进行复杂的格式设置。 4. **文档创建与读取**:使用`Document`...
8. **处理复杂文档**:Aspose.Words支持处理包含宏、复杂公式、图表、脚注等元素的Word文档,确保转换后的PDF仍然可读且内容完整。 9. **安全性与版权**:转换过程中可以设置PDF的访问权限,例如禁止打印、复制文本...
它允许开发者在Java应用程序中执行各种复杂的Word文档操作,而无需依赖Microsoft Office。这个库不仅提供了无水印和无页数限制的功能,还支持将Word文档转换为HTML格式,从而在网页或Web应用中方便地展示内容。 ...
除了Apache POI,还有一些库如Docx4j和Spire.Doc for Java提供了更高级的功能,如更复杂的样式和格式控制,以及对宏和VBA的支持。可以根据具体项目需求选择合适的库。 通过以上步骤和知识点,你可以使用Java根据...
### 如何使用Java调用Microsoft Word并执行宏操作 在IT行业中,经常需要处理文档自动化任务,例如批量处理Word文档或执行特定的宏操作。本文将详细介绍如何利用Java结合JACOB库来实现对Microsoft Word的自动化操作...
jacob调用自定义宏实现Java对Word的完美操作 jacob是一个Java-COM桥接器,允许Java程序与COM组件进行交互。在这个示例中,我们使用jacob来调用Word的自定义宏,实现Java对Word的完美操作。 标题: jacob调用自定义...