jacob 實現Office Word文件格式轉換

關於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

相關文章
相關標籤/搜索