Next next... artikel ini lanjutan dari Part 1
Untuk mencari file (browse) kita menggunakan event Button1_Click, jika file excel terpilih maka secara otomatis data di sheet pertama akan tampil di grid.
Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button1.Click
With OpenFileDialog1
.FileName = String.Empty
.InitialDirectory = "C:\"
.Title = "Open Excel File"
.Filter = "Excel 97-2003|*.xls|Excel 2007|*.xlsx"
End With
Dim result As DialogResult = OpenFileDialog1.ShowDialog()
If result = Windows.Forms.DialogResult.OK Then
Try
TextBox1.Text = OpenFileDialog1.FileName
GetExcelSheetNames(TextBox1.Text)
Catch ex As Exception
MsgBox("Error : " & ex.Message)
End Try
End If
End Sub
Kita juga akan memanggil procedure untuk menampilkan data di grid setiap pilihan sheet di ListBox1 berubah.
Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged
LoadExcel2Grid(TextBox1.Text, ListBox1.SelectedItem.ToString)
End Sub
Event TextBox1_TextChanged menjadi parameter perubahan file excel terpilih, jika terdapat file excel yang terpilih maka Button2 akan aktif.
Private Sub TextBox1_TextChanged(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles TextBox1.TextChanged
Button2.Enabled = (Len(TextBox1.Text) > 0)
End Sub
Sub Procedure DoInsert kita buat untuk proses insert data, query yang digunakan di contoh ini adalah insert ignore. Query ini akan mengabaikan proses insert jika input dengan primary key yang sama sudah ada.
Sub DoInsert(ByVal strNIK As String, ByVal strNama As String)
Dim myCommand As New MySqlCommand
Dim myAdapter As New MySqlDataAdapter
Dim myData As New DataTable
Dim SQL As String
Try
If conn.State = ConnectionState.Closed Then conn.Open()
SQL = "INSERT IGNORE INTO tblKaryawan (nik, nama) VALUES " & _
"('" & strNIK & "', '" & strNama & "')"
myCommand.Connection = conn
myCommand.CommandText = SQL
myCommand.ExecuteNonQuery()
MsgBox("Data baru tersimpan")
conn.Close()
Catch myerror As MySqlException
MessageBox.Show("Error: " & myerror.Message)
Finally
conn.Dispose()
End Try
End Sub
Event Button2_Click akan menjalankan proses migrasi, insert data akan diambil dari tblImport.
Private Sub Button2_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button2.Click
For i As Integer = 0 To tblImport.Rows.Count - 1
DoInsert(tblImport.Rows(i).Item(0).ToString, _
tblImport.Rows(i).Item(1).ToString)
Next
MsgBox("Proses Import Selesai!")
MySQLDataLoad()
End Sub
Oke selesai dengan code, mari kita coba run.
Data MySQL akan ditampilkan saat form pertama kali dipanggil, klik tombol Browse... untuk memilih file excel.
Pilih file excel kemudian klik Open.
Pilihan sheet akan ditampilkan di ListBox dan Data Excel dari sheet terpilih ditampilkan di grid. Klik tombol Import untuk memulai proses import.
Ketika proses import selesai, maka akan muncul pesan konfirmasi:
Hasil yang telah di import pun ditampilkan di grid Data MySQL
Dan ini isi tabel di MySQL setelah proses import.
Kode selengkapnya di Part 3 yah.
Click here if you like this article.
3 Comments
saya mau tanya, kalau untuk memasukkan tanggal sebagai header di excel lalu di import ke database caranya gimana ya buk..?
For i As Integer = 0 To tblImport.Rows.Count - 1
DoInsert(tblImport.Rows(i).Item(0).ToString, _
tblImport.Rows(i).Item(1).ToString, _
tblImport.Rows(i).Item(2).ToString, _
tblImport.Rows(i).Item(3).ToString, _
tblImport.Rows(i).Item(4).ToString, _
tblImport.Rows(i).Item(5).ToString, _
tblImport.Rows(i).Item(6).ToString, _
tblImport.Rows(i).Item(7).ToString, _
tblImport.Rows(i).Item(8).ToString, _
tblImport.Rows(i).Item(9).ToString)
Next
itu kode saya