關於jacob用法,百度一下就會發現幾乎都是複製2004年一個代碼,那段代碼實現的是從一個目錄讀取全部doc文件,而後把它轉html格式。 爲了便習學習和使用,我把代碼看懂後精簡了一下,得出很多新結論,拿出來和你們分享。
二、一個具體的代碼示例:
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
*因爲我計算機上沒有安裝這個轉換器,因此不清楚此參數表明什麼格式
*/
html