为妹子做的从excel中读取数据的vb答题小程序

2017-11-10  本文已影响54人  mztkenan
  1. 利用ADO读取excel
    一切在机房的win7电脑中毫无问题
'需要先引入ado 库  
  
    '功能函数,读取excel  
    '这个函数可以不用管内部的实现方法  
    '传入 excel名称,与excel sheet表名,'从excel中读取数据,返回dataset  
    'dataset 是一种数据结构,使用方法在下一个函数  
    Function ReadExcel(FileName As String, SheetName As String)  
        Dim _Connectstring = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=<FilePath>;Extended Properties=""Excel 8.0;HDR=NO;IMEX=1"""  
        Dim excConn As New OleDb.OleDbConnection(_Connectstring.Replace("<FilePath>", FileName))  
        '上两行打开一个读取excel的链接  
  
        Dim mydataset As DataSet = New DataSet  
        Using da As OleDb.OleDbDataAdapter = New OleDb.OleDbDataAdapter("SELECT * FROM [" & SheetName & "$]", excConn)  
            Try  
                da.Fill(mydataset, SheetName)  
            Catch ex As Exception  
                Console.WriteLine(ex)  
            End Try  
        End Using  
        '上面一段将数据写入到一个dataset中  
  
        Return mydataset  
    End Function  
  
    '从dataset中读取一个数据  
    '传入上个函数返回的dataset ,sheet名, 第几行,第几列, 返回数据  
    '用法看内部  
    Function ReadCell(dataset As DataSet, SheetName As String, row As Integer, col As Integer)  
        Return dataset.Tables(SheetName).Rows(row).Item(col)  
    End Function  
  
    '下面函数包含了一个示例=——=  
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click  
        Dim ExcelDataSet As DataSet = New DataSet  
        '调用ReadExcel 函数从excel读取到dataset  
        ExcelDataSet = ReadExcel("D:Orders1.xls", "Orders")  
  
        For i = 1 To 10  
            For j = 1 To 2  
                '调用readcell 从dataset中读取某一单元格的数据  
                Console.WriteLine(ReadCell(ExcelDataSet, "Orders", i, j))  
            Next j  
        Next i  
  
    End Sub  

2.但是呢,在win10中出现了数据库驱动错误,经百度,发现是微软在安全更新中更新了驱动程序
关于“System.Data.OleDb.OleDbException,外部数据库驱动程序 (1) 中的意外错误。”的解决方案

解决方案:

1、网上的方案是:在控制面板>程序>程序和功能>已安装更新中,找到对应的两个补丁,进行卸载。不同系统对应不同的补丁,具体可以参考: http://www.cnblogs.com/net-god/p/7661313.html

2、微软给出的解决方案是:下载新的驱动引擎( Microsoft Access Database Engine 2010 Redistributable ),更改
Provider=Microsoft.Jet.OLEDB.4.0Provider=Microsoft.ACE.OLEDB.12.0。
http://blog.csdn.net/question00/article/details/78282292

上一篇下一篇

猜你喜欢

热点阅读