使用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[] {});
}
}
}
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[] {});
}
}
}
解决方案 »
- InputStreamReader的read方法
- 求教JScrollPane pane = new JScrollPane(textArea)出错
- Couldn't perform the operation prepareStatement: You can't perform any operation
- SWT Text控件属性问题
- 明明指定返回的是short,为什么给它返回个1也不报错?
- 两个字符串 与操作
- 新手求助,一个hello word
- 如何在一字符串中查询是否还有某一字符??????????????????
- swing 如何实现象vb里Frame 控件那样的界面。
- tomcat问题,在线等待
- 看看这个demo,你还认为Swing做的东西丑吗?
- 为什么是0?
用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会有很多相关例子哦
可提供演示!