`
谷超
  • 浏览: 163134 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

jacob操作word文档

阅读更多

Jacob 是Java-COM Bridge的缩写,它在Java与微软的COM组件之间构建一座桥梁。使用Jacob自带的DLL动态链接库,并通过JNI的方式实现了在Java平台上对COM程序的调用。Jacob下载的地址为:
http://sourceforge.net/project/showfiles.php?group_id=109543&package_id=118368
配置:
(1)将解压包中的jacob.dll(x86常用,x64)拷到windows安装路径下的WINDOWS\system32文件夹下
(2)将jacob.jar文件拷到classpath下即可

(3)检查一下计算机中是否安装office,如果没安装则要安装,因为无论是使用Jacob操作Word还是Excel都需要office支持的!
常见的问题

Exception in thread  "main"  java.lang.UnsatisfiedLinkError: no jacob in java.library.path

出现上面异常是因为没有dll文件

com.jacob.com.ComFailException: Invoke of: Open 

Source: Microsoft Office Word 

出现上面异常是因为文件路径不正确

cant get Object cldid from progid 

出现上面的异常是因为机器上没安装word

 

写了一小段代码,用来替换word文档中的文字,粘出来与大家分享!

package test;

import com.jacob.com.*;  
import com.jacob.activeX.*;  

public class aa {
	public static void main(String[] args) {
		ActiveXComponent app = new ActiveXComponent("Word.Application");   //启动word  
		String inFile = "D:\\template.doc";   //要替换的word文件  
		try {  
			app.setProperty("Visible", new Variant(false));   //设置word不可见  
			Dispatch docs = app.getProperty("Documents").toDispatch();
			Dispatch doc = Dispatch.invoke(docs,"Open",Dispatch.Method,
					new Object[] { inFile, new Variant(false),new Variant(false) }, new int[1]).toDispatch();  
			//打开word文件,注意这里第三个参数要设为false,这个参数表示是否以只读方式打开,
			//因为我们要保存原文件,所以以可写方式打开。  

			Dispatch selection = app.getProperty("Selection").toDispatch();//获得对Selection组件
			Dispatch.call(selection, "HomeKey", new Variant(6));//移到开头
			Dispatch find = Dispatch.call(selection, "Find").toDispatch();//获得Find组件
			Dispatch.put(find, "Text", "name");       //查找字符串"name"
			Dispatch.call(find, "Execute");           //执行查询
			Dispatch.put(selection, "Text", "111");  //替换为"111"
			
			Dispatch find1 = 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");
			
			String newFileName = "D:\\temp.doc"; 
			Dispatch.call(doc, "SaveAs",newFileName);  //另存文件
			Dispatch.call(doc, "Close", new Variant(false));
			System.out.println("is over");
			} catch (Exception e) {  
				e.printStackTrace();
			}finally{
				app.invoke("Quit",new Variant[]{});
				app.safeRelease();
			}
	}
}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics