使用VB.NET编写控制excel的程序
以前也总是编写一些 excel 下的 VBA 程序,也就几百行代码便可以基本上解决问题。从来没有使用过 VC 或者 VB 、 Delphi 来做此类事情。我想如果做报表的话,相对规模和功能都要多一些,这应该算是 excel 开发的重点。
这次使用了 VB.NET 开发一个访问 excel 读取数据并修改的小程序,有一些经验性的东西和大家共享,如果有误还请大家指正。
大致分为这样几个部分来说明:
1、 准备部分:
准备部分我们需要添加 excel library 的引用到工程中:我使用 office2003 ,它的库文件为 Microsoft excel 11.0 object library 。如果使用 excel2000 ,那么它使用的是 Microsoft excel 9.0 object library 。
有需要时,我们添加 Imports 命名空间。
我在这个程序中只是访问了 excel 的数据,不需要命名空间了哈。
2、 声明一些对象:
这些对象并不是都需要,前面三个应该有,后面的,你需要什么对象就声明:
Dim excelapp As Excel.Application ‘ 声明一个 application 对象
Dim excelworkbook As Excel.Workbook ‘ 声明一个工作簿对象
Dim excelsheet As Excel.Worksheet ‘ 声明一个工作表对象
等等 … 如:
Dim excelrange As Excel.Range ‘ 声明一个范围对象
3、 访问一个 excel 文件:
excelapp = New Excel.Application
excelworkbook = excelapp.Workbooks.Open(strfile) ‘ 访问到工作簿:这个 strfile 是文件的路径,我从打开文件对话框中得到的。
excelsheet = excelworkbook.Sheets.Item(1) ‘ 访问到工作表: item 使用索引值来得到 sheet 对象的引用
excelsheet.activate
我们可以得到此文件中的值:
定义一个 string 变量:
Dim strcellvalue as string
Strcellvalue=excelsheet.cells(1,1).value ‘ 得到 A1 单元格的内容。
修改的时候反过来就可以了:
excelsheet.cells(1,1).value= Strcellvalue
4、 善后:
在程序的每一个退出口操作 excel 对象,保存或者不保存:
Excelworkbook.save
Excelworkbook.close
Excelapp=nothing
5 其它:
需要注意 ~ 上面的代码需要一些容错机制,比如:
If Not excelworkbook Is Nothing Then 这样的话来达到程序的正确运行
需要判断现在 excel 又没有打开。如果有 excel 进程正在运行。你的代码很可能会影响到打开的 excel ,像 Excelworkbook.close 这样的语句虽然前面已经很好的唯一指定了工作簿,但不能很武断的进行鲁莽的操作,我们需要判断现在 excel 的运行情况。