vb.net ADO快速读取excel

一:写在之前

可怜其实我还在写erlang, vb什么的才和我没关系,要不是为了妹子,才不会看

二:关于vb的看法

感觉vb的资料非常乱,由于时间太久,而且有vb,vb.net的分别,需要花费更多的时间去筛选资料

就比如查找读取excel,查找出大量..2000年多有的资料,简直惨..接口已经变过了..


三:vb 基本的读取excel方法

Dim xlapp As Excel.Application 'Excel对象
Dim xlbook As Excel.Workbook '工作簿
Dim xlsheet As Excel.Worksheet '工作表

Private Sub Excel_Out_Click()
Dim i, j As Integer
Set xlapp = CreateObject("Excel.Application") '创建EXCEL对象
Set xlbook = xlapp.Workbooks.Open(App.Path & "/test.xls") '打开已经存在的test.xls工件簿文件
xlapp.Visible = True '设置EXCEL对象可见(或不可见)
Set xlsheet = xlbook.Worksheets(1) '设置活动工作表''
xlsheet.Cells(i, j) = j   '当前工作簿第一页的第I行第J列

这种方法用的很多,但是效率十分有问题,尝试过
xlsheet.Cells
读取3000个格子,效率非常慢


四:利用ADO读取excel

先吐槽一下,这些资料真难找。。。。

'需要先引入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

以上是发给妹子的几个函数,前两个是功能函数,最后一个是使用列子

做个备用。。


©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页