1.jdk使用jdk1.6.0_22
2.jacob.dll放在..\jdk1.6.0_22\jre\bin目录下
3.eclipse的jre版本要和jdk一致,window->preferences->java->compiler勾选jdk 1.6
4.window->preferences->java->InstalledJREs->Add 配置成jdk1.6.0_22版本 然后勾选上 点击ok、
5.在项目目录下新建lib目录,将jacob.jar文件拷贝到该目录下,点build path->configbuild path ->libraries
1)Add JARs->选择lib目录下的jacob.jar点击Ok
2)移除项目原来的JRE System Library ,AddLibrary->JRE System Library 选择之前添加的jdk1.6.0_22 ,点击finish
点击ok,libraries配置完毕;如下图
备注:1.jacob.jar不要放到jdk的目录下,可能有冲突
2.jacob.dll经测试放在..\jdk1.6.0_22\jre\bin下被成功引用,其他目录建议不放,防止出现奇葩问题,(可自己测试在其他目录下,会不会出事)。
3.出现Can'tco-create object问题,可能是之前调用dll后,没有释放资源,需要加入如下代码
先导入importcom.jacob.com.ComThread;//在jacob1.9版本里有这个类,1.6和1.7版本经测试无法导入此类
ComThread.InitSTA();// 初始化COM线程
// 以下操作word代码
MSWordManager ms=new MSWordManager(false);
//生成一个MSwordManager对象,并且设置显示Word程序
ms.openDocument("D:\\12.doc");
//创建一个新的.doc文件
ms.putTxtToCell(1, 1, 2, "!!!!");
//插入文本
ms.save("D:\\12.doc");
//保存.doc文件
ms.close();
ms.closeDocument();
// 以上操作word代码
ComThread.Release();// 操作完成后,释放COM线程
4.以下代码可以避免上述Can't co-create object问题
,在finally中释放资源
ActiveXComponentapp = new ActiveXComponent("Word.Application"); // 启动word
StringinFile = "D:\\123.doc"; // 要替换的word文件
try{
app.setProperty("Visible",new Variant(false)); // 设置word不可见
Dispatchdocs = app.getProperty("Documents").toDispatch();
Dispatchdoc = Dispatch.invoke(
docs,
"Open",
Dispatch.Method,
newObject[] { inFile, new Variant(false),
newVariant(false) }, new int[1]).toDispatch();
//打开word文件,注意这里第三个参数要设为false,这个参数表示是否以只读方式打开,
//因为我们要保存原文件,所以以可写方式打开。
Dispatchselection = app.getProperty("Selection").toDispatch();// 获得对Selection组件
Dispatch.call(selection,"HomeKey", new Variant(6));// 移到开头
Dispatchfind = Dispatch.call(selection, "Find").toDispatch();// 获得Find组件
Dispatch.put(find,"Text", "name"); // 查找字符串"name"
Dispatch.call(find,"Execute"); // 执行查询
Dispatch.put(selection,"Text", "111"); // 替换为"111"
Dispatchfind1 = Dispatch.call(selection, "Find").toDispatch();// 获得Find组件
Dispatch.call(selection,"HomeKey", new Variant(6));// 移到开头
Dispatch.put(find1,"Text", "8位随机生成密码"); // 查找字符串
Dispatch.call(find1,"Execute"); // 执行查询
Dispatch.put(selection,"Text", "222");
StringnewFileName = "D:\\temp.doc";
Dispatch.call(doc,"SaveAs", newFileName); // 另存文件
Dispatch.call(doc,"Close", new Variant(false));
System.out.println("isover");
}catch (Exception e) {
e.printStackTrace();
}finally {
app.invoke("Quit",new Variant[] {});
app.safeRelease();
}
5.workspace中的代码要求D盘根目录下有123.doc文件才能运行,否则会一致搜索不到相关词汇