首页 > 解决方案 > 如何将 Excel 数据或文件直接打开到 Gridview

问题描述

下一步与导入Excel文件类似,但这次是直接打开文件到文件夹,不用打开或选择文件到窗口,只需点击按钮即可。

将所有 Excel 文件直接导入 GridView:

将所有 Excel 文件直接导入 GridView

这是代码示例:

  Dim conn As OleDbConnection
    Dim dta As OleDbDataAdapter
    Dim dts As DataSet = Nothing
    Dim mainDts As DataSet = Nothing
    Dim Excel As String
    Dim OpenFileDialog As New OpenFileDialog
    OpenFileDialog.InitialDirectory = "C:\Tests\Test"
    OpenFileDialog.Multiselect = True
    OpenFileDialog.Filter = "All Files (*.*)|*.*|Excel Files (*.xlsx)|*.xlsx|Xls Files (*.xls)|*.xls"
    If OpenFileDialog.ShowDialog(Me) = DialogResult.OK Then
        For Each fileName As String In OpenFileDialog.FileNames
            Dim fi As New IO.FileInfo(fileName)
            Excel = fi.FullName
            conn = New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + Excel + ";Extended Properties=Excel 12.0;")
            dta = New OleDbDataAdapter("select * from [Sheet$]", conn)
            dts = New DataSet
            dta.Fill(dts, "[Sheet$]")

            conn.Close()
            If mainDts Is Nothing Then
                mainDts = dts
            Else
                mainDts.Merge(dts)
            End If
        Next
        GridControl1.DataSource = mainDts
        GridControl1.DataMember = "[Sheet$]"
    End If

End Sub

是否可以仅单击此按钮导入以直接打开这样的文件?

"C:\Tests\Test"

标签: excelvb.net

解决方案


删除 OpenFileDialog,并将其 FileNames 属性替换为您自己的 FileNames 集合。在这种情况下,我当场做了一个简单的数组。

    Dim conn As OleDbConnection
    Dim dta As OleDbDataAdapter
    Dim dts As DataSet = Nothing
    Dim mainDts As DataSet = Nothing
    Dim Excel As String
    Dim fileNames = {"C:\Tests\Test\Test1.xls"}
    For Each fileName As String In fileNames
        Dim fi As New IO.FileInfo(fileName)
        Excel = fi.FullName
        conn = New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + Excel + ";Extended Properties=Excel 12.0;")
        dta = New OleDbDataAdapter("select * from [Sheet$]", conn)
        dts = New DataSet
        dta.Fill(dts, "[Sheet$]")
        conn.Close()
        If mainDts Is Nothing Then
            mainDts = dts
        Else
            mainDts.Merge(dts)
        End If
    Next
    GridControl1.DataSource = mainDts
    GridControl1.DataMember = "[Sheet$]"
End Sub

推荐阅读