jacob解决word转换到xml 的问题?
我在CSDN上看到了用jacob解决word到xml的帖子
但是测试时:
word 到 html 的转换可以成功;
打开html 也可以成功;
html 到 xml 会报错 (
com.jacob.com.ComFailException: Invoke of: SaveAs
Source: Microsoft Excel
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 util.Word2Xml1.main(Word2Xml1.java:47)
)
由于项目很急我在网上找了好多相关的东西也没解决,现请大家帮忙指点.
非常感谢~!:)
//************************代******码************************************
package util;
import java.io.File;
import com.jacob.com.*;
import com.jacob.activeX.*;
public class Word2Xml1 {
public static void main(String[] args) {
ActiveXComponent app = new ActiveXComponent("Word.Application");//启动word
String inFile = "e:\\my1.doc";//要转换的word文件
String tpFile = "e:\\my.htm";//临时文件
String otFile = "e:\\my.xml";//目标文件
boolean flag = false;
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(true) }, new int[1]).toDispatch();//打开word文件
Dispatch.invoke(doc, "SaveAs", Dispatch.Method, new Object[] {
tpFile, new Variant(8) }, new int[1]);//作为html格式保存到临时文件
Variant f = new Variant(false);
Dispatch.call(doc, "Close", f);
flag = true;
} catch (Exception e) {
e.printStackTrace();
} finally {
app.invoke("Quit", new Variant[] {});
}
if (flag) {
app = new ActiveXComponent("Excel.Application");//启动excel
try {
app.setProperty("Visible", new Variant(false));//设置excel不可见
Dispatch workbooks = app.getProperty("Workbooks").toDispatch();
Dispatch workbook = Dispatch.invoke(
workbooks,
"Open",
Dispatch.Method,
new Object[] { tpFile, new Variant(false),
new Variant(true) }, new int[1]).toDispatch();//打开临时文件
System.out.println("open temp html successfully");
Dispatch.invoke(workbook, "SaveAs", Dispatch.Method,
new Object[] { otFile, new Variant(46) }, new int[1]);//以xml格式保存到目标文件
Variant f = new Variant(false);
Dispatch.call(workbook, "Close", f);
} catch (Exception e) {
e.printStackTrace();
} finally {
app.invoke("Quit", new Variant[] {});
/*
try {
File file = new File(tpFile);
file.delete();
} catch (Exception e) {
}
*/
}
}
}
}