使用VB将数据从Excel导入MySql

时间:2016-04-13 07:29:40

标签: mysql vb.net excel odbc xls

Imports System.Data.Odbc
Imports System.Data.Sql
Imports System.Data.SqlClient
Imports MySql.Data
Imports MySql.Data.MySqlClient
Imports ADODB
.
.
.
Protected Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
            Try
                Dim conn As New OdbcConnection
                Dim rset As New DataSet
                Dim buff0 As String
                Dim buff1 As String
                Dim buff2 As String
                Dim filePath As String = "C:\\Book3.xls"

                conn.ConnectionString = "Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};DriverId=790;Dbq=" & filePath & ";" 'Driver={Microsoft Excel Driver (*.xls)};DriverId=790;Dbq=d:\temp\test.xls;"
                conn.Open()
                rset.Open("select * from [Sheet1$]", conn, CursorTypeEnum.adOpenForwardOnly)
                Do Until rset.EOF
                    buff0 = rset(0).Value
                    buff1 = rset(1).Value
                    buff2 = rset(2).Value

                    MySqlCmd = New MySqlCommand
                    MySqlCmd.Connection = Myconnect
                    MySqlCmd.CommandText = "INSERT INTO customers  VALUES('" & buff0 & "','" & buff1 & "','" & buff2 & "')"
                    MySqlCmd.ExecuteNonQuery()
                    rset.MoveNext()
                Loop
                MsgBox("Import Successful!", MsgBoxStyle.Information, Title:="SOMS")
            Catch ex As Exception
                MsgBox("Import Unsuccessful!", MsgBoxStyle.Critical, Title:="SOMS")
            End Try
        End Sub

我正在尝试使用从web获取的代码将数据从excel导入到mysql。但是得到一些错误。给我建议我哪里出错了。我非常喜欢ADO,OLE。这里我使用ODBC从excel读取数据和插入我使用mysql本机驱动程序。另一个问题是,我可能会朝着正确的方向或其他方向前进吗?

1 个答案:

答案 0 :(得分:1)

试试这段代码然后告诉我:

  Private Sub SimpleButton1_Click(sender As Object, e As EventArgs) Handles SimpleButton1.Click
    Dim dialog As New OpenFileDialog()
    dialog.Filter = "Excel files |*.xls;*.xlsx"
    dialog.InitialDirectory = "C:\"
    dialog.Title = "Select file for import"
    If dialog.ShowDialog() = DialogResult.OK Then

        Dim dt As DataTable
        Dim buff0 As String
        Dim buff1 As String
        Dim buff2 As String
        dt = ImportExceltoDatatable(dialog.FileName)


        For i = 0 To dt.Rows.Count - 1

            buff0 = dt.Rows(i)(0)
            buff1 = dt.Rows(i)(1)
            buff2 = dt.Rows(i)(2)

            MySqlCmd = New MySqlCommand
            MySqlCmd.Connection = Myconnect
            MySqlCmd.CommandText = "INSERT INTO customers  VALUES('" & buff0 & "','" & buff1 & "','" & buff2 & "')"
            MySqlCmd.ExecuteNonQuery()

        Next

    End If
End Sub




 Public Shared Function ImportExceltoDatatable(filepath As String) As DataTable
    ' string sqlquery= "Select * From [SheetName$] Where YourCondition";
    Dim dt As New DataTable
    Try


        Dim ds As New DataSet()
        Dim constring As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & filepath & ";Extended Properties=""Excel 12.0;HDR=YES;"""
        Dim con As New OleDbConnection(constring & "")

        con.Open()

        Dim myTableName = con.GetSchema("Tables").Rows(0)("TABLE_NAME")
        Dim sqlquery As String = String.Format("SELECT * FROM [{0}]", myTableName) ' "Select * From " & myTableName


        Dim da As New OleDbDataAdapter(sqlquery, con)
        da.Fill(ds)

        dt = ds.Tables(0)
        Return dt
    Catch ex As Exception
        MsgBox(Err.Description, MsgBoxStyle.Critical)
        Return dt
    End Try
End Function