自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

全面簡述VB.NET excel對象原理

開發(fā) 后端
文章主要介紹了VB.NET excel對象,簡單說明EXCEL的對象模型,Excel對象的使用,Application對象和實例簡介,希望可以給你們帶來幫助。

用過VB的程序設(shè)計人員都知道,要想用VB輸出復(fù)雜的表格來,是十分困難的。能不能用VB.NET excel對象呢?最近筆者為單位開發(fā)“土工試驗數(shù)據(jù)整理”的某個模塊時,涉及到復(fù)雜數(shù)據(jù)表格的輸出問題,經(jīng)過筆者的摸索,用VB調(diào)用EXCEL,取得了很好的效果。本文從編程實踐的角度對使用VB控制EXCEL的技術(shù)作簡要說明。

1. EXCEL的對象模型

如果一個應(yīng)用程序支持自動化技術(shù),那么其它的應(yīng)用就可以通過其暴露的對象,對它進(jìn)行控制,控制程序稱為客戶機,而被控制的一方就稱為服務(wù)器,被控制的對象就是Active對象。VB正是通過EXCEL顯露的各級對象來控制EXCEL工作的。每個對象都有各自的方法和屬性,通過方法可以實現(xiàn)對對象的控制,而屬性則可以改變對象的各種狀態(tài)。

理解EXCEL的對象模型是對其編程的基礎(chǔ)。EXCEL是以層次結(jié)構(gòu)組織對象的,其對象模型中含有許多不同的對象元素,這些對象元素就是VB.NET excel對象可以操縱的。在EXCEL對象的層次結(jié)構(gòu)中,最頂層是Application對象,是Excel本身。從該對象開始往下依次是:

  1. .workbooks對象集,是Application對象的下層,其指的是Excel的工作簿文件。  
  2. .worksheets對象集,是Workbooks對象集的下層,它表示的是Excel的一個工作表。  
  3. .Cells和Range對象,它們是worksheets對象的下層,它則指向Excel工作表中的一個或多個單元格。   

以上介紹的四個對象是VB.NET excel對象中最重要也是用得最多的對象,而且從上面的介紹中也不難看出,要控制Excel中的某個具體對象,如某個工作簿中某一表格中的單元格,就必須從Excel層次結(jié)構(gòu)對象的最上層即Application對象開始遍歷。

2 .Excel對象的使用

application對象的使用

如前所述,Application對象位于Excel層次結(jié)構(gòu)對象的最上層,它代表的是Excel自身,我們的應(yīng)用程序理應(yīng)從Application對象的建立開始。VB控制Excel的啟動方式有幾種,在這里我們使用了API調(diào)用,可以確保目前系統(tǒng)中只有一個Excel副本在運行,程序代碼和說明如下:

  1. Option Explicit  
  2. Public xlapp As Object‘Excel對象  
  3. Public xlbook As Object‘工作簿  
  4. Public xlsheet As Object‘工作表  
  5. Declare Function FindWindow Lib "user32" Alias _  
  6. "FindWindowA" (ByVal lpClassName As String, _  
  7. ByVal lpWindowName As Long) As Long  
  8. Declare Function SendMessage Lib "user32" Alias "SendMessageA" _  
  9. (ByVal hwnd As long,ByVal wMsg As Long, ByVal wParam As Long, lParam_   
  10. As Any) As_  Long  

以上是公有變量和API函數(shù)應(yīng)在模塊中聲明。

  1. Sub GetExcel()  
  2. Dim MyXL As Object  '用于存放Microsoft Excel 引用的變量。  
  3. Dim ExcelWasNotRunning As Boolean '用于最后釋放的標(biāo)記。  
  4. On Error Resume Next  '延遲錯誤捕獲。  
  5. '不帶第一個參數(shù)調(diào)用 Getobject 函數(shù)將返回對該應(yīng)用程序的實例的引用。  
  6. '如果該應(yīng)用程序不在運行,則會產(chǎn)生錯誤。  
  7. Set MyXL = GetObject(, "Excel.Application")  
  8. If Err.Number <> 0 Then ExcelWasNotRunning = True 
  9. Err.Clear '如果發(fā)生錯誤則要清除 Err 對象。  
  10. '檢測 Microsoft Excel。如果 Microsoft Excel 在運行,則將其加入運行對象表。  
  11. DetectExcel'該過程檢測并登記正在運行的 Excel  
  12. '設(shè)置其 Application 屬性,顯示 Microsoft Excel。  
  13. '然后使用 MyXL 對象引用的 Windows 集合,顯示包含該文件的實際窗口。  
  14. MyXL.Application.Visible = True 
  15. MyXL.Parent.Windows(1).Visible = True 
  16. '如果在啟動時,Microsoft Excel 的這份副本不在運行中,  
  17. '則使用 Application 屬性的 Quit 方法來關(guān)閉它。  
  18. '注意,當(dāng)試圖退出 Microsoft Excel 時,  
  19. '標(biāo)題欄會閃爍,并顯示一條消息詢問是否保存所加載的文件。  
  20. If ExcelWasNotRunning = True Then  
  21. MyXL.Application.Quit  
  22. End If  
  23. Set MyXL = Nothing  '釋放對該應(yīng)用程序和電子數(shù)據(jù)表的引用。  
  24. End Sub  
  25. '該過程檢測并登記正在運行的 Excel。  
  26. Sub DetectExcel()  
  27. Const WM_USER = 1024 
  28. Dim hwnd As Long  
  29. '如果 Excel 在運行,則該 API 調(diào)用將返回其句柄。  
  30. hwnd = FindWindow("XLMAIN", 0)  
  31. If hwnd = 0 Then  '0 表示沒有 Excel 在運行。  
  32. Exit Sub  
  33. Else  
  34. 'Excel 在運行,因此可以使用 SendMessage API'函數(shù)將其放入運行對象表。  
  35. SendMessage hwnd, WM_USER + 18, 0, 0  
  36. End If  
  37. End Sub 

有了Application對象,就可以非常方便地訪問Excel應(yīng)用程序中的其它對象,以及這此對象的屬性和方法。

【編輯推薦】

  1. 強化VB.NET Word文檔創(chuàng)建Document對象
  2. VB.NET Word對象模型兩大要點介紹
  3. 全方位VB.NET文件操作和分類講述
  4. 細(xì)談VB.NET路徑選擇對話框?qū)崿F(xiàn)(API)實例
  5. 強化VB.NET編程多線程句柄技巧
責(zé)任編輯:田樹 來源: 博客
相關(guān)推薦

2009-11-02 16:22:16

VB.NET面向?qū)ο?/a>

2009-11-04 08:53:57

VB.NET AddH

2009-10-28 10:04:53

VB.NET XmlW

2009-10-28 17:44:31

VB.NET語言

2009-11-03 10:09:48

VB.NET對象

2010-01-12 10:29:51

VB.NET對象串行化

2010-01-12 10:48:54

VB.NET LIST

2009-10-16 13:26:53

VB.NET Exce

2009-11-04 10:54:53

VB.NET MOVE

2009-10-15 10:57:16

VB.NET Text

2009-10-29 15:16:02

VB.NET文件傳送

2009-10-14 15:20:21

VB.NET窗體指針

2009-11-02 14:48:45

VB.NET HOOK

2009-11-02 15:57:36

VB.NET WEB

2009-11-10 16:46:52

VB.NET指針應(yīng)用

2009-10-15 11:42:05

VB.Net賦值語句

2010-01-07 13:51:50

VB.NET數(shù)組賦值

2010-01-20 18:10:27

VB.NET訪問級別

2009-10-09 15:59:41

VB.NET對象

2009-10-14 13:21:46

VB.NET Acco
點贊
收藏

51CTO技術(shù)棧公眾號