介紹
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
