package com.yxm.word;
import com.jacob.activeX.ActiveXComponent;
import com.jacob.com.Dispatch;
import com.jacob.com.Variant;
/**
*
* @author yuxueming
*
*/
public class FileExtracter{
private ActiveXComponent wordOpen = null;
private Dispatch dispatch = null;
public FileExtracter(){
wordOpen = new ActiveXComponent("Word.Application"); //指定类型
}
/**
* 打开word文件
* @param filePath
*/
public void openWord(String filePath){
try{
wordOpen.setProperty("Visible",true);
dispatch = wordOpen.getProperty("Documents").toDispatch();
Dispatch.invoke(dispatch,"Open",Dispatch.Method,new Object[]{filePath},new int[1]);
}
catch(Exception e){
e.printStackTrace();
}finally{
closeDispatch(filePath);
}
}
/**
* 转换成TXT文件
* @param inputFIle
* @param outputFile
*/
public void extractDoc(String inputFIle,String outputFile)
{
boolean flag = false;
try {
wordOpen.setProperty("Visible", false); // 设置word不可见
dispatch = wordOpen.getProperty("Documents").toDispatch(); // 打开word文件
Dispatch doc2 = Dispatch.invoke(dispatch,"Open", Dispatch.Method, new Object[] { inputFIle, false,
true}, new int[1]).toDispatch(); // 作为txt格式保存到临时文件
Dispatch.invoke(doc2, "SaveAs", Dispatch.Method, new Object[] {outputFile, new Variant(7) }, new int[1]); //关闭word
Variant f = new Variant(false);
Dispatch.call(doc2, "Close", f);
flag = true;
} catch (Exception e) {
e.printStackTrace();
} finally {
wordOpen.invoke("Quit", new Variant[] {});
}
if (flag == true) {
System.out.println("Transformed Successfully");
} else {
System.out.println("Transform Failed");
}
}
/**
* 关闭当前文件
* @param filePath
*/
public void closeDispatch(String filePath){
Dispatch.call(dispatch,"close",filePath);
}
public static void main(String [] args ){
// new FileExtracter().openWord("f:/rz.doc");
new FileExtracter().extractDoc("f:/rz.doc", "f:/rz.txt");
}
}