全面简述VB.NET excel对象原理

开发 后端
文章主要介绍了VB.NET excel对象,简单说明EXCEL的对象模型,Excel对象的使用,Application对象和实例简介,希望可以给你们带来帮助。

用过VB的程序设计人员都知道,要想用VB输出复杂的表格来,是十分困难的。能不能用VB.NET excel对象呢?最近笔者为单位开发“土工试验数据整理”的某个模块时,涉及到复杂数据表格的输出问题,经过笔者的摸索,用VB调用EXCEL,取得了很好的效果。本文从编程实践的角度对使用VB控制EXCEL的技术作简要说明。

1. EXCEL的对象模型

如果一个应用程序支持自动化技术,那么其它的应用就可以通过其暴露的对象,对它进行控制,控制程序称为客户机,而被控制的一方就称为服务器,被控制的对象就是Active对象。VB正是通过EXCEL显露的各级对象来控制EXCEL工作的。每个对象都有各自的方法和属性,通过方法可以实现对对象的控制,而属性则可以改变对象的各种状态。

理解EXCEL的对象模型是对其编程的基础。EXCEL是以层次结构组织对象的,其对象模型中含有许多不同的对象元素,这些对象元素就是VB.NET excel对象可以操纵的。在EXCEL对象的层次结构中,最顶层是Application对象,是Excel本身。从该对象开始往下依次是:

  1. .workbooks对象集,是Application对象的下层,其指的是Excel的工作簿文件。  
  2. .worksheets对象集,是Workbooks对象集的下层,它表示的是Excel的一个工作表。  
  3. .Cells和Range对象,它们是worksheets对象的下层,它则指向Excel工作表中的一个或多个单元格。   

以上介绍的四个对象是VB.NET excel对象中最重要也是用得最多的对象,而且从上面的介绍中也不难看出,要控制Excel中的某个具体对象,如某个工作簿中某一表格中的单元格,就必须从Excel层次结构对象的最上层即Application对象开始遍历。

2 .Excel对象的使用

application对象的使用

如前所述,Application对象位于Excel层次结构对象的最上层,它代表的是Excel自身,我们的应用程序理应从Application对象的建立开始。VB控制Excel的启动方式有几种,在这里我们使用了API调用,可以确保目前系统中只有一个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函数应在模块中声明。

  1. Sub GetExcel()  
  2. Dim MyXL As Object  '用于存放Microsoft Excel 引用的变量。  
  3. Dim ExcelWasNotRunning As Boolean '用于最后释放的标记。  
  4. On Error Resume Next  '延迟错误捕获。  
  5. '不带第一个参数调用 Getobject 函数将返回对该应用程序的实例的引用。  
  6. '如果该应用程序不在运行,则会产生错误。  
  7. Set MyXL = GetObject(, "Excel.Application")  
  8. If Err.Number <> 0 Then ExcelWasNotRunning = True 
  9. Err.Clear '如果发生错误则要清除 Err 对象。  
  10. '检测 Microsoft Excel。如果 Microsoft Excel 在运行,则将其加入运行对象表。  
  11. DetectExcel'该过程检测并登记正在运行的 Excel  
  12. '设置其 Application 属性,显示 Microsoft Excel。  
  13. '然后使用 MyXL 对象引用的 Windows 集合,显示包含该文件的实际窗口。  
  14. MyXL.Application.Visible = True 
  15. MyXL.Parent.Windows(1).Visible = True 
  16. '如果在启动时,Microsoft Excel 的这份副本不在运行中,  
  17. '则使用 Application 属性的 Quit 方法来关闭它。  
  18. '注意,当试图退出 Microsoft Excel 时,  
  19. '标题栏会闪烁,并显示一条消息询问是否保存所加载的文件。  
  20. If ExcelWasNotRunning = True Then  
  21. MyXL.Application.Quit  
  22. End If  
  23. Set MyXL = Nothing  '释放对该应用程序和电子数据表的引用。  
  24. End Sub  
  25. '该过程检测并登记正在运行的 Excel。  
  26. Sub DetectExcel()  
  27. Const WM_USER = 1024 
  28. Dim hwnd As Long  
  29. '如果 Excel 在运行,则该 API 调用将返回其句柄。  
  30. hwnd = FindWindow("XLMAIN", 0)  
  31. If hwnd = 0 Then  '0 表示没有 Excel 在运行。  
  32. Exit Sub  
  33. Else  
  34. 'Excel 在运行,因此可以使用 SendMessage API'函数将其放入运行对象表。  
  35. SendMessage hwnd, WM_USER + 18, 0, 0  
  36. End If  
  37. End Sub 

有了Application对象,就可以非常方便地访问Excel应用程序中的其它对象,以及这此对象的属性和方法。

【编辑推荐】

  1. 强化VB.NET Word文档创建Document对象
  2. VB.NET Word对象模型两大要点介绍
  3. 全方位VB.NET文件操作和分类讲述
  4. 细谈VB.NET路径选择对话框实现(API)实例
  5. 强化VB.NET编程多线程句柄技巧
责任编辑:田树 来源: 博客
相关推荐

2009-11-02 16:22:16

VB.NET面向对象

2009-11-04 08:53:57

VB.NET AddH

2010-01-12 10:29:51

VB.NET对象串行化

2009-11-03 10:09:48

VB.NET对象

2009-10-28 17:44:31

VB.NET语言

2010-01-12 10:48:54

VB.NET LIST

2009-10-28 10:04:53

VB.NET XmlW

2009-10-16 13:26:53

VB.NET Exce

2009-11-02 15:57:36

VB.NET WEB

2009-11-02 14:48:45

VB.NET HOOK

2009-11-10 16:46:52

VB.NET指针应用

2009-10-15 11:42:05

VB.Net赋值语句

2009-10-14 13:21:46

VB.NET Acco

2010-01-07 13:51:50

VB.NET数组赋值

2010-01-20 18:10:27

VB.NET访问级别

2009-10-14 15:20:21

VB.NET窗体指针

2009-10-15 10:57:16

VB.NET Text

2009-10-29 15:16:02

VB.NET文件传送

2009-11-04 10:54:53

VB.NET MOVE

2009-10-09 15:59:41

VB.NET对象
点赞
收藏

51CTO技术栈公众号