vb实例教程:Excel数据导入导出功能的实例开发详解

admin 综合编程开发技术 4


做数据管理程序的时候,是不是总需要把 Excel 里的数据弄到程序里,或者把程序里的数据存成 Excel 表格?手动复制粘贴不仅慢,还容易出错。那用 VB 能不能自动搞定这些事呢?当然可以,今天兔子哥就手把手教大家做一个带 Excel 导入导出功能的小工具,就算你没接触过这方面也能学会,一起往下看吧!

先说说:为啥要用 VB 操作 Excel?


可能有人会问,Excel 自己就能处理数据,为啥还要用 VB 呢?这你就不知道了,比如你做了个学生成绩管理系统,想把系统里的成绩批量导出来给家长看,总不能一条一条抄吧?用 VB 写几行代码,点个按钮就能生成 Excel 文件,多方便。反过来,别人给你一个 Excel 的报名名单,用 VB 导入到系统里,也能省不少事。
我个人觉得,数据导入导出是很多实用程序的 “标配” 功能,学会了这个,你写的程序能解决更多实际问题。


准备工作:得有这两个东西


要让 VB 和 Excel “打交道”,你得准备好:
  1. 电脑上装了 Excel,不管是 2003、2007 还是更高版本都行,VB 要靠它才能生成表格。
  2. 在 VB 里引用 Excel 对象库。怎么引用呢?打开 VB,点菜单栏的 “工程”,选 “引用”,在弹出的窗口里找到 “Microsoft Excel XX.0 Object Library”(XX 是版本号,比如 16.0),打上勾,点 “确定”。这样 VB 就知道怎么跟 Excel 沟通了。

要是没找到这个选项,大概率是你电脑上没装 Excel,或者装的是精简版,那就得先装个完整的 Office 套件。


实战 1:把 VB 里的数据导出到 Excel


假设我们的程序里有个 DataGrid,显示着学生信息,现在要把这些信息导出到 Excel。步骤是这样的:
  1. 加一个按钮,Caption 改成 “导出到 Excel”,双击按钮写代码。
  2. 先创建一个 Excel 文件,代码开头要写:

plaintext
Dim xlApp As Excel.ApplicationDim xlBook As Excel.WorkbookDim xlSheet As Excel.WorksheetSet xlApp = New Excel.ApplicationSet xlBook = xlApp.Workbooks.AddSet xlSheet = xlBook.Worksheets(1)

这几句是说,我们要启动 Excel,新建一个工作簿,用第一个工作表。
  1. 然后把 DataGrid 里的标题行(比如 “学号”“姓名”)写到 Excel 的第一行:

plaintext
xlSheet.Cells(1, 1) = "学号"xlSheet.Cells(1, 2) = "姓名"xlSheet.Cells(1, 3) = "成绩"

这里的 Cells (行,列) 就是 Excel 里的单元格,比如 Cells (1,1) 就是 A1 单元格。
  1. 再把 DataGrid 里的数据一行行写进去,用个循环就行:

plaintext
Dim i As IntegerFor i = 0 To DataGrid1.RowCount - 1xlSheet.Cells(i + 2, 1) = DataGrid1.Columns(0).CellText(i)xlSheet.Cells(i + 2, 2) = DataGrid1.Columns(1).CellText(i)xlSheet.Cells(i + 2, 3) = DataGrid1.Columns(2).CellText(i)Next i

  1. 最后别忘了保存文件并关闭 Excel:

plaintext
xlBook.SaveAs "C:\学生成绩.xls" ' 保存路径可以自己改xlBook.ClosexlApp.QuitSet xlSheet = NothingSet xlBook = NothingSet xlApp = NothingMsgBox "导出完成!"

运行的时候要注意,C 盘可能有权限问题,保存不了的话,可以改到 D 盘或桌面。我第一次就因为这个,导出半天没反应,后来换了个路径就好了。


实战 2:把 Excel 的数据导入到 VB


现在反过来,有一个 Excel 表格,我们要把里面的数据读到 VB 的 DataGrid 里。方法和导出类似,但要注意 Excel 里的列要和程序里的字段对应上。
  1. 加个 “导入 Excel” 按钮,双击写代码,先创建 Excel 对象(和导出时一样)。
  2. 打开要导入的 Excel 文件:

plaintext
Set xlBook = xlApp.Workbooks.Open("C:\学生成绩.xls")

  1. 清空 DataGrid 里原来的数据,然后用循环读 Excel 里的内容:

plaintext
DataGrid1.ClearFieldsDim i As Integeri = 2 ' 从第二行开始读,因为第一行是标题Do While xlSheet.Cells(i, 1) <> "" ' 直到学号为空就停止DataGrid1.AddItem xlSheet.Cells(i, 1) & "," & xlSheet.Cells(i, 2) & "," & xlSheet.Cells(i, 3)i = i + 1Loop

  1. 最后关闭 Excel 对象,和导出时一样。

这里有个小问题,要是 Excel 里有空行怎么办?上面的代码会读到空行为止,所以最好确保 Excel 里的数据是连续的,中间别留空行。


常见问题对比表:遇到了该怎么办?


问题现象可能的原因解决办法
运行时提示 “对象变量或 With 块变量未设置”没引用 Excel 对象库,或者没创建 xlApp 对象检查 “引用” 里有没有勾 Excel 库,确保写了 Set xlApp = New Excel.Application
导出的 Excel 文件打不开保存路径不对,或者文件被占用换个保存路径,关闭已经打开的同名 Excel 文件
导入时数据不全Excel 里有合并单元格,或者空行太多取消合并单元格,删除多余空行

我还遇到过一种情况,导出后 Excel 里的数字显示成了文本,比如学号前面的 0 不见了。这时候可以在写数据的时候加一句:xlSheet.Cells (i + 2, 1).NumberFormat = "@",强制按文本格式显示。


其实操作 Excel 的功能还有很多,比如给单元格加颜色、设置列宽,甚至生成图表。但对新手来说,先把基本的导入导出搞明白最重要。
我建议大家多动手试试,比如导出的时候改改保存路径,导入的时候故意弄个空行看看程序会怎么样。编程就是在不断试错中学会的,遇到问题别着急,一点点排查总能解决。
希望这个教程能帮到大家,学会了数据导入导出,你写的 VB 程序会实用很多。有啥不懂的地方,随时可以问我哦。

标签: Visual Basic VB.NET

发布评论 0条评论)

  • Refresh code

还木有评论哦,快来抢沙发吧~