2011年8月6日 星期六

【JACOB】Office 轉 HTM、MHT

本篇來介紹一下 MS Office 的轉檔案例,以下會說明要如何將 word、ppt、excel

透過 JACOB 操作 Office 進行轉檔的過程,而最終產出結果為 HTM 檔

接著就以一個 Word 操作的 Sample 來介紹

//.....
String officeFilePath = "C:\\abc.doc";   //word 檔
String HtmFilePath = "C:\\abc.htm";   //轉出檔
//初始化  Wrod 
ActiveXComponent activeX_App = new ActiveXComponent("Word.Application");
try{
    //將操作 office 的過程設定為背景執行
    activeX_App.setProperty("Visible", new Variant(false)); 
    // 取得 該 Word 的Dispatch 物件,透過設置Property 為 "Documents"
    Dispatch prop = activeX_App.getProperty("Documents").toDispatch();  
    
    //載入 word 檔案並開啟  運用 Dispatch.invoke(...).toDispatch() 返回一個 Dispatch 物件
    Dispatch office = Dispatch.invoke(
                 prop,
                 "Open",
                 Dispatch.Method,
                 new Object[] {officeFilePath, new Variant(false),
                                     new Variant(true) }, 
                 new int[1]).toDispatch();

    //將 word 文件另存成 HTM 檔
    Dispatch.invoke(office, 
                            "SaveAs",
                            Dispatch.Method,
                            new Object[] {mhtFilePath, new Variant(8)},   //WORD 轉 HTM 的代碼為 8
                            new int[0]);
	
    Dispatch.call(office, "Close");  //關閉 Word

    }catch(Exception e){
	e.printStackTrace();
    }finally{
        activeX_App.invoke("Quit");   
    }

看到底上的 word 試例,PPT和Excel 的話就大同小異了

PPT 的話 初始過程需為

AActiveXComponent activeX_App = new ActiveXComponent("PowerPoint.Application");
Dispatch prop = activeX_App.getProperty("Presentations").toDispatch();

而 PPT 轉 HTM 的代碼為 12

而 Excel 期初始化過程為

ActiveXComponent activeX_App = new ActiveXComponent("Excel.Application");
Dispatch prop = activeX_App.getProperty("Workbooks").toDispatch();

而其轉 HTM 的代碼為 44


說到這 如果轉出 HTM 檔時有產生一個資料夾的話((..好像有時候不會?!?!

因位最近工作時遇到的情況是 我們 AP 是在 Linux 下,故需透過 Windows 運用 JACOB將 Office 轉檔

所以透過程式先將檔案由 Linux 送到 Window ...待轉檔成功後再回 Linux

問題來了,送一個 Office 過去,但卻要收一個 HTM 檔和一整包的資料夾  真是挫賽阿....

所幸 MS Office 提供了另一種網頁格式 MHTML

我們可以將檔案轉成 .mht 檔即可解決會產生一包資料夾的問題

而各Office轉 .mht 的 code 如以下所示

Word  :  9

PPT  : 20

Excel  :  45



沒有留言:

張貼留言