package Test;import com.jacob.com.*;
import com.jacob.activeX.*;public class WordToHtml {
/**
 *文档转换函数
 * 
 * @param docfile
 *            word文档的绝对路径加文件名(包含扩展名)
 *@param htmlfile
 *            转换后的html文件绝对路径和文件名(不含扩展名)
 */
public static final int WORD_HTML = 8; public static final int WORD_TXT = 7; public static final int EXCEL_HTML = 44; /**
 * WORD转HTML
 * 
 * @param docfile
 *            WORD文件全路径
 * @param htmlfile
 *            转换后HTML存放路径
 */
public static void wordToHtml(String docfile, String htmlfile) {
ActiveXComponent app = new ActiveXComponent("Word.Application"); // 启动word
try {
app.setProperty("Visible", new Variant(false));
Dispatch docs = app.getProperty("Documents").toDispatch();
Dispatch doc = Dispatch.invoke(
docs,
"Open",
Dispatch.Method,
new Object[] { docfile, new Variant(false),
new Variant(true) }, new int[1]).toDispatch();
Dispatch.invoke(doc, "SaveAs", Dispatch.Method, new Object[] {
htmlfile, new Variant(WORD_HTML) }, new int[1]);
Variant f = new Variant(false);
Dispatch.call(doc, "Close", f);
} catch (Exception e) {
e.printStackTrace();
} finally {
app.invoke("Quit", new Variant[] {});
}
} public static void main(String[] strs) {
WordToHtml.wordToHtml("e:/中百便民采购资金管理数据接口定义_V1.0.doc", "c:");
}
}
报错信息:
com.jacob.com.ComFailException: Invoke of: SaveAs
Source: Microsoft Word
Description:  at com.jacob.com.Dispatch.invokev(Native Method)
at com.jacob.com.Dispatch.invokev(Dispatch.java:804)
at com.jacob.com.Dispatch.invoke(Dispatch.java:483)
at Test.WordToHtml.wordToHtml(WordToHtml.java:39)
at Test.WordToHtml.main(WordToHtml.java:55)注:jar包已经导入到项目中,并且jacob.dll文件在项目的lib下面和tomcat 6.0的bin以及lib目录下都放入了请问是什么情况?

解决方案 »

  1.   

    没用过jacob,你代码里Dispatch.invoke(doc, "SaveAs", Dispatch.Method, new Object[] {
    htmlfile, new Variant(WORD_HTML) }, new int[1]);
    是直接调用的word里面内置的功能吗?换除WORD_HTML的其他格式试试,如果其他格式能够转,我估计是你本机word的插件自身功能的问题
      

  2.   

    已经解决了
    问题就在
    WordToHtml.wordToHtml("e:/中百便民采购资金管理数据接口定义_V1.0.doc", "c:");
    这里没有的“"c:"”定义html名称