【问题标题】:Import Excel to Datagridview将 Excel 导入 Datagridview
【发布时间】:2018-02-19 19:41:40
【问题描述】:

我正在尝试使用 VB.net 将数据集从 Excel 导入数据库。使用此代码,我总是会收到错误

外部表不是预期的格式。

Imports Excel = Microsoft.Office.Interop.Excel
Imports Microsoft.Office
Imports Microsoft.Office.Interop
Imports System.IO
Imports System.Data.SqlClient 

Private Sub Button_Import_Click(sender As Object, e As EventArgs) Handles Button_Import.Click
    Try
        Dim MyConnection As OleDb.OleDbConnection
        Dim Ds As System.Data.DataSet
        Dim MyAdapter As System.Data.OleDb.OleDbDataAdapter
        MyConnection = New System.Data.OleDb.OleDbConnection("provider=Microsoft.Jet.OLEDB.4.0;Data Source='C:\Users\matil\Desktop\Data.xlsx';Extended Properties=Excel 8.0;")
        MyAdapter = New System.Data.OleDb.OleDbDataAdapter("Select * from [ExportedFromDatGrid$]", MyConnection)
        Ds = New System.Data.DataSet
        MyAdapter.Fill(Ds)
        Me.DataGridView_Kontakte.DataSource = Ds.Tables(0)
    Catch ex As Exception
        MsgBox(ex.Message)
    End Try
End Sub

我的数据库看起来像这样

和我这样的 Excel 文件

【问题讨论】:

  • 此消息与 Excel 文件的文件扩展名有关。有时在 Excel 中打开文件并转到 File > Save As 然后更改扩展名可以解决问题(尝试另存为 2003 Excel 文件等)
  • Jet 提供程序无法读取 .xlsx 文件格式。使用 ACE 提供程序。

标签: excel vb.net import


【解决方案1】:

改变

  MyConnection = New System.Data.OleDb.OleDbConnection("provider=Microsoft.Jet.OLEDB.4.0;Data Source='C:\Users\matil\Desktop\Data.xlsx';Extended Properties=Excel 8.0;")

用这个

 MyConnection = New System.Data.OleDb.OleDbConnection(string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=Excel 8.0", path));

设置获取连接的路径

【讨论】:

  • 太棒了,谢谢,我可以设置路径以打开加载文件窗口并在我的系统中搜索文件吗?
  • 在打开文件对话框中你也可以设置目录和文件名
  • 在这里尝试过:Dim Path As New OpenFileDialog() MyConnection = String.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=Excel 8.0" , 路径)但我只得到错误
  • 错误:“字符串的值不能在 OleDbConnection 中转换”,没有对话框可以正常工作
  • 更新了解决方案。检查答案。我觉得你可能会直截了当地回答。对不起
【解决方案2】:

从 Excel 到 Datagridview?可以这样做。

Imports System.Data.SqlClient
Public Class Form1
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Dim MyConnection As System.Data.OleDb.OleDbConnection
        Dim DtSet As System.Data.DataSet
        Dim MyCommand As System.Data.OleDb.OleDbDataAdapter
        MyConnection = New System.Data.OleDb.OleDbConnection("provider=Microsoft.Jet.OLEDB.4.0;Data Source='c:\vb.net-informations.xls';Extended Properties=Excel 8.0;")
        MyCommand = New System.Data.OleDb.OleDbDataAdapter("select * from [Sheet1$]", MyConnection)
        MyCommand.TableMappings.Add("Table", "Net-informations.com")
        DtSet = New System.Data.DataSet
        MyCommand.Fill(DtSet)
        DataGridView1.DataSource = DtSet.Tables(0)
        MyConnection.Close()

    End Sub
End Class

有关所有相关信息,请参阅下面的链接,以及几个相关链接。

http://vb.net-informations.com/datagridview/vb.net_datagridview_import.htm

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多