jacob 实现Office Word文件格式转换
關于jacob用法,百度一下就會發現幾乎都是復制2004年一個代碼,那段代碼實現的是從一個目錄讀取所有doc文件,然后把它轉html格式。 為了便習學習和使用,我把代碼看懂后精簡了一下,得出不少新結論,拿出來和大家分享。
2、一個具體的代碼示例:
?package ccnu;?
import com.jacob.com.*;?
import com.jacob.activeX.*;?
import java.io.*;?
?
public class testCoding?
{?
??? /*
???? * 作者:郭喜躍/【捂汗縣長】
???? * 時間:2013-7-20
???? * 程序功能:調用jacob包,在Microsoft Office 能夠支持打開的文件類型中隨意進行格式轉換(本程序不是批量轉換,一次只能轉單個文件)。
???? * 由于我電腦上安裝的是Office 2013,所以甚至可以實現pdf與txt!用起來很方便,除了注釋 代碼不算長吧?
???? *?
???? * */?
??? public static void main(String[] args)?
??? {?
??????? //指定被轉換文件的完整路徑。 我這里的意圖是把pdf轉為txt??
??????? String path = new String("E:\\Jena\\Jena初體驗0.pdf");?
??????? //根據路徑創建文件對象??
??????? File docFile=new File(path);?
??????? //獲取文件名(包含擴展名)??
??????? String filename=docFile.getName();?
??????? //過濾掉文件名中的擴展名??
??????? int filenamelength=filename.length();?
??????? int dotposition=filename.indexOf(".");?
??????? filename=filename.substring(0,dotposition);?
?????????
??????? //設置輸出路徑,一定要包含輸出文件名(不含輸出文件的擴展名)??
??????? String savepath = new String ("E:\\Jena\\txt\\"+filename);???
?????????
??????? //啟動Word程序??
??????? ActiveXComponent app = new ActiveXComponent("Word.Application");?????????
??????? //接收輸入文件和輸出文件的路徑??
??????? String inFile = path;?
??????? String tpFile = savepath;?
??????? //設置word不可見??
??????? app.setProperty("Visible", new Variant(false));?
??????? //這句不懂??
??????? Object docs = app.getProperty("Documents").toDispatch();?
??????? //打開輸入的doc文檔??
??????? Object doc = Dispatch.invoke((Dispatch) docs,"Open", Dispatch.Method, new Object[]{inFile,new Variant(false), new Variant(true)}, new int[1]).toDispatch();?
?????????
??????? //另存文件, 其中Variant(n)參數指定另存為的文件類型,詳見代碼結束后的文字??
??????? Dispatch.invoke((Dispatch) doc,"SaveAs", Dispatch.Method, new Object[]{tpFile,new Variant(2)}, new int[1]);?
??????? //這句也不懂??
??????? Variant f = new Variant(false);?
??????? //關閉并退出??
??????? Dispatch.call((Dispatch) doc, "Close", f);?
??????? app.invoke("Quit", new Variant[] {});?
??????? System.out.println("轉換完畢。");?
??? }?
?
}?
?
package ccnu;
import com.jacob.com.*;
import com.jacob.activeX.*;
import java.io.*;
?
public class testCoding
{
/*
* 作者:郭喜躍/【捂汗縣長】
* 時間:2013-7-20
* 程序功能:調用jacob包,在Microsoft Office 能夠支持打開的文件類型中隨意進行格式轉換(本程序不是批量轉換,一次只能轉單個文件)。
* 由于我電腦上安裝的是Office 2013,所以甚至可以實現pdf與txt!用起來很方便,除了注釋 代碼不算長吧?
*
* */
public static void main(String[] args)
{
//指定被轉換文件的完整路徑。 我這里的意圖是把pdf轉為txt
String path = new String("E:\\Jena\\Jena初體驗0.pdf");
//根據路徑創建文件對象
File docFile=new File(path);
//獲取文件名(包含擴展名)
String filename=docFile.getName();
//過濾掉文件名中的擴展名
int filenamelength=filename.length();
int dotposition=filename.indexOf(".");
filename=filename.substring(0,dotposition);
?
//設置輸出路徑,一定要包含輸出文件名(不含輸出文件的擴展名)
String savepath = new String ("E:\\Jena\\txt\\"+filename);
?
//啟動Word程序
ActiveXComponent app = new ActiveXComponent("Word.Application");
//接收輸入文件和輸出文件的路徑
String inFile = path;
String tpFile = savepath;
//設置word不可見
app.setProperty("Visible", new Variant(false));
//這句不懂
Object docs = app.getProperty("Documents").toDispatch();
//打開輸入的doc文檔
Object doc = Dispatch.invoke((Dispatch) docs,"Open", Dispatch.Method, new Object[]{inFile,new Variant(false), new Variant(true)}, new int[1]).toDispatch();
?
//另存文件, 其中Variant(n)參數指定另存為的文件類型,詳見代碼結束后的文字
Dispatch.invoke((Dispatch) doc,"SaveAs", Dispatch.Method, new Object[]{tpFile,new Variant(2)}, new int[1]);
//這句也不懂
Variant f = new Variant(false);
//關閉并退出
Dispatch.call((Dispatch) doc, "Close", f);
app.invoke("Quit", new Variant[] {});
System.out.println("轉換完畢。");
}
?
}
?
?
?
??????? *其中第44行中的 invoke()函數中的Variant(n)參數指定另存為的文件類型(n的取值范圍是0-25),他們分別是:
??????? *Variant(0):doc
??????? *Variant(1):dot
??????? *Variant(2-5),Variant(7):txt
??????? *Variant(6):rft
??????? *Variant(8),Variant(10):htm
??????? *Variant(9):mht
??????? *Variant(11),Variant(19-22):xml
??????? *Variant(12):docx
??????? *Variant(13):docm
??????? *Variant(14):dotx
??????? *Variant(15):dotm
??????? *Variant(16)、Variant(24):docx
??????? *Variant(17):pdf
??????? *Variant(18):xps
??????? *Variant(23):odt
??????? *Variant(25):與Office2003與2007的轉換程序相關,執行本程序后彈出一個警告框說是需要更高版本的 Microsoft Works Converter
??????? *由于我計算機上沒有安裝這個轉換器,所以不清楚此參數代表什么格式
??????? */
?
轉載于:https://www.cnblogs.com/tomcattd/p/3544537.html
總結
以上是生活随笔為你收集整理的jacob 实现Office Word文件格式转换的全部內容,希望文章能夠幫你解決所遇到的問題。