使用jacob打印word或excel

jopen 9年前發布 | 45K 次閱讀 Java開發 JACOB

在看PDF打印的時候順便也看了看word和excel的打印,這里只簡單的知道如何使用,原理沒有深究~

首先這里只說打印,至于生成word或者excel,可以使用poi(jacob貌似也可以)

JACOB是一個 JAVA到微軟的COM接口的橋梁。使用JACOB允許任何JVM訪問COM對象,從而使JAVA應用程序能夠調用COM對象。如果你要對 MS Word、Excel 進行處理,JACOB 是一個好的選擇。

而關于打印的話,總結起來有這么幾個步驟。

1、使用Jacob創建 ActiveX部件對象:


ActiveXComponent wd = new ActiveXComponent("Word.Application");


2、打開Word文檔

Dispatch.put(wd, "Visible", new Variant(true));
// 這里Visible是控制文檔打開后是可見還是不可見,若是靜默打印,那么第三個參數就設為false就好了
Dispatch document = wd.getProperty("Documents").toDispatch();
Dispatch doc = Dispatch.invoke(document, "Open", Dispatch.Method,
        new Object[] { filePath }, new int[1]).toDispatch();

3、設置打印機


wd.setProperty("ActivePrinter", new Variant("pdfFactory Pro"));


第二個參數即為打印機的name

4、設置打印參數并打印

Dispatch.callN(doc, "PrintOut", new Object[]{});


5、最后關閉Word文檔


wd.invoke("Quit", new Variant[] {});


到這里,利用jacob打印就實現了,并且只要將第一步中創建的ActiveX部件對象改成Excel.Application就可以實現Excel的打印了

這里在說點題外話,之前說了jacob還可以操作word和excel,這里簡單提一下

可以看到在上面的第2步中,我們使用“open”打開了一個現有的word文檔,如果改用“add”,那么我們就可以新建一個文檔了


Dispatch document = Dispatch.call(documents, "Add").toDispatch(); // 使用Add命令創建一個新文檔

Dispatch wordContent = Dispatch.get(document, "Content").toDispatch(); // 取得word文件的內容

Dispatch.call(wordContent, "InsertAfter", "這里是一個段落的內容");//插入一個段


另外需要注意的是,在使用jacob時,不僅需要添加jacob的jar包,在java安裝目錄下的bin目錄中也要復制jacob的dll文件,否則會報錯:

Exception in thread "main" java.lang.UnsatisfiedLinkError: no jacob-1.14.3-x86 in java.library.path

來自:http://blog.csdn.net/u012345283/article/details/41053977

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!