使用jacob自带的test中的测试类,也会报错。执行到
    Object workbooks = xl.getProperty("Workbooks").toDispatch();
就不行了。提示如下:com.jacob.com.ComFailException: A COM exception has been encountered:
At Invoke of: Workbooks
Description: An unknown COM error has occured.
at com.jacob.com.Dispatch.invokev(Native Method)
at com.jacob.activeX.ActiveXComponent.getProperty(ActiveXComponent.java)
at test.DispatchTest.main(DispatchTest.java:28)
com.jacob.com.ComFailException: A COM exception has been encountered:
At Invoke of: Quit
Description: An unknown COM error has occured.
at com.jacob.com.Dispatch.invokev(Native Method)
at com.jacob.activeX.ActiveXComponent.invoke(ActiveXComponent.java)
at test.DispatchTest.main(DispatchTest.java:46)已经把jacob.dll拷贝导系统system32路径下,在office2003和2000上都是一样。 excel应用程序可以打开。为什么不能执行?如果不用jacob,把word转换成html格式还有什么手段,poi对word处理好像还很不完善。请赐教。/*
 * Created on 2006-2-7
 *
 * TODO To change the template for this generated file go to
 * Window - Preferences - Java - Code Style - Code Templates
 */
package test;/**
 * @author Administrator
 *
 * TODO To change the template for this generated type comment go to
 * Window - Preferences - Java - Code Style - Code Templates
 */
import com.jacob.com.*;
import com.jacob.activeX.*;public class DispatchTest
{
  public static void main(String[] args)
  {
    ActiveXComponent xl = new ActiveXComponent("Excel.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();
      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[] {});
    }
  }
}

解决方案 »

  1.   

    jacob.dll的版本不对,匹配就对了
    用jacob可以搞定,我刚用jacob完成了word文档转为html的事情必须条件若为jdk1.4.2用(http://danadler.com/jacob/)jacobBin_17.zip的jacob.jar
    同时,用http://groups.yahoo.com/group/jacob-project/files/的jacob_jre142fix_bin.zip 的jacob.dll,并将jacob.dll放在winnt/system32下 ,此配置可正常运行。
    注意,你要注册一个雅虎的用户哦另外在google上搜一下jacob会有很多相关例子哦
      

  2.   

    本公司有比江西金格还牛的word插件,支持asp jsp .net ,功能超强,价格优惠,可带代码出售.
    可提供演示!
      

  3.   

    同意 sunxuekuntuliq() 的说法