前期准备工作:
1.配置开发运行环境
目前最新版本1.18jacob-1.18下载,主要有三个文件:
jacob.jar
jacob-1.18-x64.dll
jacob-1.18-x86.dll
dll文件有俩,对应windows 64 和32
1.将jacob-1.18-x64.dll放到64位的java的jdk或jre下的bin目录下
如果是32位系统就将jacob-1.18-x86.dll放到32位的jdk或jre下的bin目录下
2.将要操作的dll 文件放到相应的系统目录下
32位dll放到 C:\Windows\System32 目录下
64位dll放到 C:\Windows\SysWOW64 目录下
3.您需要在操作系统中注册 COM 组件,可以使用 Redemption 工具包本身提供的安装程序,也可以采用 Windows 系统自带的 REGSVR32 工具来注册 DLL 文件。运行cmd,注册dll
将目录切换到相应的系统目录下运行
regsvr32 xxx.dll
4.通过使用OLE/COM对象查看器查看dll信息
找到dll引用的信息
2.Java项目创建和调用
1..将 jacob.jar 文件添加到您的工程的构建路径
2.源代码
package java_word;
/**
1580536707@qq.com
2018年4月19日
**/
import com.jacob.activeX.ActiveXComponent;
import com.jacob.com.ComThread;
import com.jacob.com.Dispatch;
import com.jacob.com.Variant;
public class DispatchTest
{
public static String fileRealPath = "C:\\Users\\Desktop\\原文档.doc";
public static String saveNewRealpath = "C:\\Users\\Desktop\\副本.doc";
public static void main(String[] args)
{
//这是copy全文方法
ComThread.InitSTA();
//被复制的文档
ActiveXComponent word2= new ActiveXComponent("Word.Application");
word2.setProperty("Visible", new Variant(false));
Dispatch documents2 = word2.getProperty("Documents").toDispatch();
//复制的文档
ActiveXComponent word= new ActiveXComponent("Word.Application");
word.setProperty("Visible", new Variant(false));
Dispatch documents = word.getProperty("Documents").toDispatch();
Dispatch doc2 = Dispatch.call(documents2, "Open",saveNewRealpath ).toDispatch();
//复制模板的内容
Dispatch doc = Dispatch.call(documents, "Open",fileRealPath).toDispatch();
Dispatch wordContent = Dispatch.get(doc, "Content").toDispatch();
/*Dispatch paragraphs = Dispatch.get(doc2, "Paragraphs").toDispatch();
Dispatch paragraph = Dispatch.call(paragraphs, "Item",new Variant(40)).toDispatch();
Dispatch range = Dispatch.get(paragraph, "Range").toDispatch();
Dispatch.call(range, "Copy");*/
Dispatch.call(wordContent, "Copy");
Dispatch selection = Dispatch.get(word2, "Selection").toDispatch();
Dispatch textRange = Dispatch.get(selection, "Range").toDispatch();
Dispatch.call(textRange, "Paste");
Dispatch.call(doc2, "Save");
Dispatch.call(doc2, "Close", new Variant(true));
Dispatch.call(word2, "Quit");
doc2 = null;
word2 = null;
Dispatch.call(doc, "Close", new Variant(true));
Dispatch.call(word , "Quit");
doc = null;
word = null;
documents2 = null;
ComThread.Release();
}
}
注意:文档路径下先创建好文件,如果文件不存在文件打开将失败
用jacob开发最好将电脑上的wps卸载,否则可能出现一些错误,比如文件保存失败。因为wps经常会修改电脑默认程序配置