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

用过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编程多线程句柄技巧

标题名称:全面简述VB.NET excel对象原理
网页路径:http://www.csdahua.cn/qtweb/news15/225415.html

网站建设、网络推广公司-快上网,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 快上网