Java com bridge 操作Word Excel Outlook.

                  JACOB是一个 JAVA到微软的COM接口的桥梁。使用JACOB允许任何JVM访问COM对象,从而使JAVA应用程序能够调用COM对象。如果你要对 MS Word、Excel 进行处理,JACOB 是一个好的选择。JACOB目前已经成为sourceforge(http://sourceforge.net/projects/jacob- project/)的一个开源项目,现在最新的版本是jacob-1.15-M4。

 

                  把jacob下载下来以后解压,里面有两个文件一个是dll另一个是jar文件。将jar文件放入C:/WINDOWS/system32下面,然后把jar文件加入你要用的工程里面就可以使用jacob了。

 

                 要使用jacob重要的是要理解VBA的用法,因为jacob其实就是VBA的一个java接口,它提供了一种方法让你可以调用VBA。所以在你要是VBA以前最好先去MSDN上面查看一下office 的reference 上面有一个文档如何创建,打开,保存关闭等功能。我在学习jacob用法的时候就是因为不懂VBA,在哪里胡乱的试,浪费了不少时间。最后还是在msdn上才找到了我要的东西。所以你要用jacob一定要先了解VBA。 当然还有一个简单一点的方法,打开一个EXCEl文件,选择View--Mcro-Recode macro,这样你就可以录制一段宏,录制的也就是你要用代码实现的效果,只是我们先用Excel手工实现。等你吧宏录制好了,点击编辑宏,你就可以根据这段宏来实现java代码了。

下面这段代码是从jacob官网上考过来的(http://danadler.com/jacob/)应该很容易理解的

import com.ms.com.*;
import com.ms.activeX.*;

public class DispatchTest
{
  public static void main(String[] args)
  {
    ActiveXComponent xl = new ActiveXComponent("Excel.Application");//使用excel程序,当让你也可以换成word。

Application


 或者outlook.application
    Object xlo = xl.getObject();
    try {
      System.out.println("version="+xl.getProperty("Version"));
      System.out.println("version="+Dispatch.get(xlo, "Version"));
      xl.setProperty("Visible", new Variant(true));
      Object workbooks = xl.getProperty("Workbooks").toDispatch();//取得工作本
      Object workbook = Dispatch.get(workbooks,"Add").toDispatch();//添加一个工作本
      Object sheet = Dispatch.get(workbook,"ActiveSheet").toDispatch();//添加一个sheet
      Object a1 = Dispatch.invoke(sheet, "Range", Dispatch.Get,
                                  new Object[] {"A1"},
                                  new int[1]).toDispatch();///取值
 Object a2 = Dispatch.invoke(sheet, "Range", Dispatch.Get, new Object[] {"A2"}, new int[1]).toDispatch(); Dispatch.put(a1, "Value", "123.456"); Dispatch.put(a2, "Formula", "=A1*2");//公式 System.out.println("a1 from excel:"+Dispatch.get(a1, "Value")); System.out.println("a2 from excel:"+Dispatch.get(a2, "Value")); Variant f = new Variant(false); Dispatch.call(workbook, "Close", f);//关闭,这里要小心,忘记关闭的话,会产生不少问题的。 } catch (Exception e) { e.printStackTrace(); } finally { xl.invoke("Quit", new Variant[] {});//退出excel.application. } } }
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值