2016-04-13 2 views
-1
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 

Я пытаюсь импортировать данные из excel в mysql, используя этот код, полученный из сети. Но некоторые ошибки. Дайте мне предложение, где я ошибаюсь. Я очень новичок в ADO, OLE. здесь я использую ODBC для чтения данных из excel и для вставки я использую собственный драйвер mysql. Другой вопрос: я иду в правильном направлении или по другому?Импорт данных из Excel в MySql с помощью VB

+0

Где это провал? –

+0

Ошибки, пожалуйста. –

+0

Есть много полей, которые не определены с красной отметкой – Aarin

ответ

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 
+0

https://www.flickr.com/photos/[email protected]/25799268334/in/dateposted-public/lightbox/ – Aarin

+0

СПАСИБО, код ура - это решение, но, пожалуйста, дайте мне почему этот заостренный код не определен – Aarin

+0

Вы должны добавить декларацию в начало метода: Dim MySqlCmd = New SqlCommand() и попробуйте диалог Dim Как новый System.Windows.Forms.OpenFileDialog() –

Смежные вопросы