加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

VB.NET中:将EXCEL文件作为数据源在DataGridView控件中显示的方法

(2016-06-28 12:24:51)
分类: VB.NET编程

DataGridView是先前版本DataGrid控件的升级网格控件,作为新一代基于Windows Froms 2.0的新网格控件。它具有易于使用并高度可定制,提供了许多新的功能。

使用DataGridView 控件,可以显示和编辑来自多种不同类型的数据源的表格数据。将数据绑定DataGridView 控件非常简单和直观,在大多数情况下,只需设置 DataSource 属性即可。在绑定到包含多个列表或表的数据源时,只需将DataMember 属性设置为指定要绑定的列表或表的字符串即可。

本文着重介绍,如何使用DataGridView来显示Excel中的指定的数据表内容。而如何进行其它包括编辑、添加、删除等操作,完全类似对数据库的操作,本文就不一一赘述。

微软的工程师,为程序员提供了这样一条途径,通过VBA来实现把EXCEL里的数据读取出来,这样一来,就可以实现把这些数据,显示在DataGridView控件里。但是,有这样经历的人都知道,这种方法的速度比较慢,本文介绍微软的工程师,提供的另一条途径,就是把Excel作为数据源,绑定到DataGridView控件,这就如同大家熟知的把数据库ACCESSSQL SERVER等作为数据源一样。

Excel作为数据源,绑定到DataGridView控件,与把数据库ACCESSSQL SERVER等作为数据源的方法非常相似,但是又稍有不同,归纳起来步骤如下:

 一.在Excel里定义“名称”

方法与步骤如下:(不同的Office版本,菜单还不相同)

1.在Excel 2003及以前版本的文件中定义“名称”的操作:

打开欲作为数据源的Excel文件(里面当然包含了数据),选中作为数据源的数据的矩形区域(包括表的第一行字段名),使用菜单[插入]|[名称]|[定义],出现“定义名称”对话窗口,在“在当前工作簿中的名称”文本框里输入一个名称,这里假设就叫“ABCD”,单击[确定],返回到EXCEL,完成了名称的定义。保存Excel文件,关闭退出Excel

2.在Excel 2010版本的文件中定义“名称”的操作:

打开欲作为数据源的Excel文件(里面当然包含了数据),选中作为数据源的数据的矩形区域(包括表的第一行字段名),使用菜单[公式]|[名称管理器],出现“名称管理器”对话窗口,单击[新建],出现“新建名称”对话窗口,在“名称”文本框里输入一个名称,这里假设就叫“我的名称A”,在“范围”文本框里默认的是“工作簿”,不要修改它,单击[确定],返回到“名称管理器”对话窗口,单击[关闭,返回到]EXCEL,完成了名称的定义。保存Excel文件,关闭退出Excel

二.在VB.NET中使用方法:(定义连接字符串)

我们知道:连接ACCESS文件的字符串的格式如下;

"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=盘符路径Access文件名"

注意:其中盘符路径Access文件名的确具体内容可以是;C:\MySamp.mdb

微软规定了使用EXCEL作为数据源的连接字符串格式,并且不同的Office版本以及文件,连接字符串也略有不同,可以访问网站:http://www.connectionstrings.com/ace-oledb-12-0/,寻找相应的连接字符串格式。

1.对于Excel 97--2003

"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=c:\myFolder\myOldExcelFile.xls;Extended Properties='Excel 8.0;HDR=YES';"

注意:1) 这里的"c:\myFolder\myOldExcelFile.xls;"是假设的文件名与路径。2)这里的HDR=YES,表示EXCEL作为数据源的矩形区域的第一行是字段名;反之用HDR=NO表示EXCEL作为数据源的矩形区域的第一行不是字段名,而是数据。

2.对于Excel 20072010Xlsx文件(注意Xlsb以及Xlsm稍有不同):

"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=c:\myFolder\myExcel2007file.xlsx;Extended Properties='Excel 12.0 Xml;HDR=YES';"

注意:1)这里的" c:\myFolder\myExcel2007file.xlsx;"是假设的文件名与路径。2)这里的HDR=YES,表示EXCEL作为数据源的矩形区域的第一行是字段名;反之用HDR=NO表示EXCEL作为数据源的矩形区域的第一行不是字段名,而是数据。

三.一个通过VB 2010的例子:

1.在EXCEL里定义名称“名称A”,见下图:

 

 http://s5/mw690/003tZSItzy72PzvTvs8e4&690


 保存到c:\MyFile2010.Xlsx

2.启动VB 2010,创建Windows 窗体项目。在窗体上添加一个DataGridView控件。进入代码窗口,编写代码如下:

Imports System.Data.OleDb

 

Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal As System.EventArgs) Handles MyBase.Load

        Try

            Dim MyConnectionString As String "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=c:\MyFile2010.Xlsx;Extended Properties='Excel 12.0 Xml;HDR=YES';"

 

            Dim MySQL As String "SELECT * FROM 名称A"     '注意这里用到真实的名称

            Dim MyTable As New DataTable()

            Dim MyAdapter As New System.Data.OleDb.OleDbDataAdapter( _

                                            MySQL, MyConnectionString)

            MyAdapter.Fill(MyTable)

            Me.DataGridView1.DataSource = MyTable

        Catch ex As Exception

            MessageBox.Show(ex.Message, "信息提示",

                        MessageBoxButtons.OK, MessageBoxIcon.Information)

        End Try

 

    End Sub

End Class

  3.运行项目,看到的效果如下:

 

 http://s6/mw690/003tZSItzy72Pzzldlj45&690


 以上代码,在VB2010通过。若有不当请指正!

参考:Visual Basic 2005 编程技巧大全 中国水利水电出版社 罗斌  罗兴禄 等编著

            http://www.connectionstrings.com/ace-oledb-12-0/

等等

 

2014312

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有