Jacob用法收集


介紹

Jacob 是Java-COM Bridge的縮寫,它在Java與微軟的COM組件之間構建一座橋梁。使用Jacob自帶的DLL動態鏈接庫,並通過JNI的方式實現了在Java平台上對COM程序的調用。

 

安裝和配置

Jacob是一個開源軟件,它的官方站點是:http://danadler.com/jacob/ 
我的系統是64位,把jacob-1.18-M2-x64.dll復制到Windows\System32文件夾下,再 IDE中引用jacob.jar就可以使用了


 

讀寫Word簡單示例

必須先在對應的路徑下建立fileIn.doc,可以事先寫入內容:

 

package king.word;
import com.jacob.activeX.ActiveXComponent;
import com.jacob.com.Dispatch;
import com.jacob.com.Variant;
public class Test {
    String strDir = "F:\\桌面\\Temp\\";
    String strInputDoc = strDir + "fileIn.doc";
    String strOutputDoc = strDir + "fileOut.doc";
    String strOldText = "oldText";
    String strNewText = "It's very good to use java control Word";
    boolean isVisible = true;
    boolean isSaveOnExit = true;
    public Test(){
        ActiveXComponent oWord = new ActiveXComponent("Word.Application");
        oWord.setProperty("Visible", new Variant(isVisible));
        Dispatch oDocuments = oWord.getProperty("Documents").toDispatch();
        Dispatch oDocument = Dispatch.call(oDocuments, "Open", strInputDoc).toDispatch();
        Dispatch oSelection = oWord.getProperty("Selection").toDispatch();
        Dispatch oFind = oWord.call(oSelection, "Find").toDispatch();
        Dispatch.put(oFind, "Text", strOldText);
        Dispatch.call(oFind, "Execute");
        Dispatch.put(oSelection, "Text", strNewText);
        Dispatch.call(oSelection, "MoveDown");
        Dispatch.put(oSelection, "Text", "nSo we got the next line including BR.n");
        Dispatch oFont = Dispatch.get(oSelection, "Font").toDispatch();
        Dispatch.put(oFont, "Bold", "1");
        Dispatch.put(oFont, "Italic", "1");
        Dispatch.put(oFont, "Underline", "0");
        Dispatch oAlign = Dispatch.get(oSelection, "ParagraphFormat").toDispatch();
        Dispatch.put(oAlign, "Alignment", "3");
        Dispatch oWordBasic = (Dispatch)Dispatch.call(oWord, "WordBasic").getDispatch();
        Dispatch.call(oWordBasic, "FileSaveAs", strOutputDoc);
        Dispatch.call(oDocument, "Close", new Variant(isSaveOnExit));
        oWord.invoke("Quit", new Variant(0));
    }
    public static void main(String[] args){
        new Test();
        System.out.println("Done");
    }
}

jacob.jar的結構

jacob包括兩個部分:

com.jacob.activeX: ActiveXComponent類
com.jacob.com: 其它類和元素

Jacob類

Jacob的結構很簡單,包含以下幾個類:

ActiveXComponent:封裝了Dispatch對象,用於創建一個封裝了COM組件對象的Java Object
Dispatch:用於指向封裝后的MS數據結構。常用的方法有call,subcall,get,invoke…后面會介紹使用方法。
Variant:用於映射COM的Variant數據類型。提供Java和COM的數據交換。
ComException:異常類

Jacob方法

用於訪問COM/DLL對象的方法,讀取、修改COM/DLL對象的屬性。

call:屬於Dispatch類。用於訪問COM/DLL對象的方法。方法進行了重載,方便不同場合調用。返回一個Variant類型的值。
callSub:使用方法和call一樣,不過它不返回值。
get:讀取COM對象的屬性值,返回一個Variant類型值。
put:設置COM對象的屬性值。
invoke:call的另一種用法,更復雜一些。
invokesub:subcall的另一種用法
getProperty:屬於ActiveXComponent類,讀取屬性值,返回一個Variant類型值。
setProperty:屬於ActiveXComponent類,設置屬性值。
setProperty:屬於ActiveXComponent類,設置屬性值

 

 

文章轉自:https://www.zybuluo.com/king/note/64983


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM