循序漸進,探尋Excel二次開發.NET源碼(1)-Excel版本及引用
(預備篇)
作者:長江支流
MS Excel功能我就不用多說了,總的來說強大方便靈活,應用廣泛。用Excel來做資料存放區、報表並實現列印非常方便,通常辦公處理。值得高興的是Excel提供了二次開發的功能以滿足各個不同層次的需要,為程式員自己動手類比Excel操作提供了極大的便利性,並可充分利用Excel提供的特性開發出更多實用的應用。
以往做Excel二次開發都用VBA,它是VB的一個簡化版,我們開啟Excel後單擊工具——宏——Visual Basic編輯器就可以進行二次開發。我們現在要說的不是這種VBA二次開發,而是在.NET下進行二次開發。
我們的最終目標是:利用.NET提供的開發工具快速實現Excel的二次開發,這其中包括最基本的儲存格及帶區資料存取、合并、字型顏色、邊框及網格線等,由淺入深,由基本實現到組合功能,最終實現報表設計、套打、模板列印,充分利用Excel自身強大功能搞定任意複雜格式、報表、統計圖形分析。
從本篇開始,我們將以循序漸進,探尋Excel二次開發.NET的方式,逐步講述Excel的二次開發並實現以下幾點:
1、如何將各版本Excel(COM類型庫) 轉換產生.Net公用語言運行庫程式集如Interop.Excel.dll
2、如何引用Excel庫或已產生的程式集
3、建立Excel執行個體
4、開啟Excel工作薄工作表和模板
5、增、刪、改、插入、定位、重新命名工作表
6、擷取使用中工作表指定範圍儲存格及帶區
7、讀、寫儲存格內容
8、向帶區中寫內容
9、儲存格合并
10、字型及顏色
11、邊框及網格線
12、儲存、另存
13、列印、預覽
14、徹底關閉Excel進程
15、綜合應用,通打天下報表
...
本篇中,將說一說在項目中添加Excel引用的方法。以後的所以篇目中,都假設讀都對VS 2003開發平台有一定的瞭解,所以,省略一些文字,如建立立一個項目什麼的,我想那些就沒必要了。
我的宗旨:簡單快捷,易用實用,因此,在以後的篇目中以程式居多,描述盡量少些,多些注釋。但是這篇,哈哈,只有描述了。
第一步:
在項目的引用節點單擊右鍵,在彈出的菜單中單擊添加引用...
在彈出的對話方塊中單擊COM項,找到Microsoft Excel 11.0 Object Library
並單擊選中,然後單擊選擇按鈕,“引用Excel2003”。
從中我們可以看出是引用的Excel.Exe檔案,這是Excel2003版。Excel2000及Excel2002即Excel XP
COM項見“Excel版本對照表”。
第二步:
引用Excel2003後,會在引用節點中增加Excel等節點,“引用Excel2003後可刪除不必要的引用”。
進入項目的bin/Debug目錄可以看到,相應的增加了Interop.Excel.dll、Interop.Microsoft.Office.Core.dll、Interop.VBIDE.dll三個庫檔案,它們都是.Net將 COM 類別型庫中的類型定義轉換為.Net公用語言運行庫程式集中的等效定義產生的檔案。
我們只需要引用Interop.Excel.dll就可以了,後面的兩個檔案是支援檔案,不添加這兩個檔案的引用時在偵錯工具時如果有編譯不通過的如語法錯誤會提示未能找到依賴項Interop.Office、Interop.VBIDE,一般這是個假象,除非是你和程式確實用到了他們,如果沒有語法錯誤,編譯器就不會提示了:)。
我們在引用中將Microsoft.Office.Core、stdole、VBIDE選中刪除掉。也可以將Excel引用刪除掉重新直接引用Interop.Excel.dll。
另一種方法是直接添加對Interop.Excel.dll的引用。
產生Interop.Excel.dll的另一方法:
以上是可視化自動產生Excel對應的程式集,也可以用如下的方法產生。
開啟Visual Studio .Net2003命令提示,運行
TlbImp Excel.EXE Interop.Excel.dll
如果是Excel2000,則
TlbImp Excel9.olb Interop.Excel.dll
當然,第一參數Excel.EXE(Excel9.olb)要指定目錄(Office2000安裝目錄),如果不指定,需要把它拷貝到VS.Net安裝路徑下
如C:/Visual Studio.Net/SDK/v1.1/Bin;
同理,第二參數Interop.Excel.dll是產生的對應的動態庫,如果不指定目錄,預設產生在VS.Net安裝路徑BIN下 ,你可以用你自己喜歡的名字
取代Interop.Excel.dll,產生之後你就可以在VS.Net開發環境項目中添加對它的引用了。
Tlbimp.exe為類型庫匯入程式,它將 COM 類別型庫中的類型定義轉換為公用語言運行庫程式集中的等效定義,關於它的詳細使用參見MSDN。
用第一種方法和第二種方法引用的庫和預設檔案目錄為分別如下:
Excel 2000是
Microsoft Excel 9.0 Object Library
C:/Program Files/Microsoft Office/Office/EXCEL9.OLB
Excel 2002(XP)是
Microsoft Excel 10.0 Object Library
C:/Program Files/Microsoft Office/OFFICE10/EXCEL.EXE
Excel 2003是
Microsoft Excel 11.0 Object Library
C:/Program Files/Microsoft Office/OFFICE11/EXCEL.EXE
----------------------------------------Excel版本對照表----------------------------------------
| 檔案/版本 |
Interop.Excel.dll |
Interop.Office.dll |
Interop.VBIDE.dll |
添加引用/COM組件 |
| 2000 |
V1.3.0.0 |
V2.1.0.0 |
V5.3.0.0 |
Microsoft Excel 9.0 Object Library(EXCEL9.OLB) |
| 2002(XP) |
V1.4.0.0 |
V2.2.0.0 |
V5.3.0.0 |
Microsoft Excel 10.0 Object Library(Excel.EXE檔案) |
| 2003 |
V1.5.0.0 |
V2.3.0.0 |
V5.3.0.0 |
Microsoft Excel 11.0 Object Library(Excel.EXE檔案) |
相關源碼下載資訊請訪問:
http://blog.csdn.net/flygoldfish
聲明:本文著作權為周方勇所有,歡迎轉載,請保留完整的內容及出處。
http://blog.csdn.net/flygoldfish/archive/2005/11/07/524305.aspx
flygoldfish@163.com