運用Jacob進行Excel的打印屬性設置


相關介紹可參照博客http://blog.csdn.net/hemingwang0902/article/details/4377994

以下摘錄部分內容進行簡述:

  Jacob ,官方的解釋是Java COM Bridge,即java和com組件間的橋梁。com一般表現為dll或exe等二進制文件(如:jacob.dll文件),這里說說為什么我們用Java去操縱office(如:Word)要使用com,而不直接使用java去做?

  首先,我們清楚office是建立在Windows平台之上的,本身是一個軟件,除了他自己提供的宏似乎沒有什么能對它進行直接的操作;在windows平台上為了解決像這樣的不同應用軟件,通信缺乏通用api問題,推出了com的解決方案

    其次,我們使用dll中的一組或多組相關的函數存取組件數據,總的合稱為接口,具體到每個細節的實現稱為方法;如果我們要調用接口里的方法,唯一的途徑就是調用指向接口的指針;
  所以總的來說使用就是dll完成api的轉換。

  

  下面利用Jacob進行Excel的打印:

 1 import com.jacob.activeX.*;
 2 import com.jacob.com.*;
 3 
 4 public class Print {
 5     private static final String PRINT_NAME=new String("FX7AF20D"); 
 6     /**
 7      * @param path 打印路徑地址,形如 \\XX\\YY.xls
 8      * @param copies 打印份數
 9      */
10     public static void printExcel(String path,int copies){
11         if(path.isEmpty()||copies<1){
12             return;
13         }
14         //初始化COM線程
15         ComThread.InitSTA();
16         //新建Excel對象
17         ActiveXComponent xl=new ActiveXComponent("Excel.Application");
18         try { 
19             System.out.println("Version=" + xl.getProperty("Version"));
20             //設置是否顯示打開Excel  
21             Dispatch.put(xl, "Visible", new Variant(true));
22             //打開具體的工作簿
23             Dispatch workbooks = xl.getProperty("Workbooks").toDispatch(); 
24             Dispatch excel=Dispatch.call(workbooks,"Open",System.getProperty("user.dir")+path).toDispatch(); 
25             
26             //設置打印屬性並打印
27             Dispatch.callN(excel,"PrintOut",new Object[]{Variant.VT_MISSING, Variant.VT_MISSING, new Integer(copies), 28                     new Boolean(false),PRINT_NAME, new Boolean(true),Variant.VT_MISSING, ""}); 29             
30             //關閉文檔
31             //Dispatch.call(excel, "Close", new Variant(false));  
32         } catch (Exception e) { 
33             e.printStackTrace(); 
34         } finally{
35             //xl.invoke("Quit",new Variant[0]);
36             //始終釋放資源 
37             ComThread.Release(); 
38         } 
39     }
40 }

  網上的帖子中很少有提到打印機選項設置的,因為運用了Office的功能,所以需要查找MSDN ,具體參見PrintOut 方法 (Excel)

  參數摘錄如下: 

名稱

必需/可選

數據類型

說明

From

可選

Variant

在要打印的頁的頁碼。如果省略此參數,則從開頭開始打印。

To

可選

Variant

最后一個要打印的頁的數目。如果省略該參數,則打印完最后一頁后停止。

Copies

可選

Variant

要打印的份數。如果省略此參數,則只打印一份。

Preview

可選

Variant

如果為 True,Microsoft Excel 將在打印對象之前調用打印預覽。如果為 False(或省略該參數),則立即打印對象。

ActivePrinter

可選

Variant

設置活動打印機的名稱。

PrintToFile

可選

Variant

如果為 True,則打印到文件。如果沒有指定 PrToFileNameMicrosoft Excel 將提示用戶輸入要使用的輸出文件的文件名。

Collate

可選

Variant

如果為 True要逐份打印多個副本。

PrToFileName

可選

Variant

如果PrintToFile設置為True,則此參數指定您想要打印到的文件的名稱。

IgnorePrintAreas

可選

Variant

如果為 True要忽略打印區域並打印整個對象。

  

  在上文給出的源碼中,第27行即是設置打印機的打印屬性。


免責聲明!

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



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