Bagaimana cara import data dari excel ke database MySQL dengan menggunakan VB.NET?
Bicara tentang import data dari excel dengan database apapunnya, gampang-gampang susah.
Kita bisa bilang gampang kan klo udah tau cara/solusinya hehe...
Catatan penting: yang jadi riskan error adalah validasi data. Bentuk dan isi data excel harus benar-benar sesuai, klo ngga yaaaa error. Lebih lanjut tentang validasi belakangan aja yah.
Rani juga anggap readers udah paham tentang VB.NET & MySQL, jadi tau apa aja yang harus add reference dll. Klo belum baca dulu Tutorial nya yah.
Nah bahasan disini Rani batasi dengan asumsi kondisi data excel valid dan sesuai. Berikut struktur tabel tblKaryawan beserta isinya sebelum proses import.
Atur UI seperti gambar berikut:
TextBox1 digunakan untuk menyimpan path dan nama file excel yang akan digunakan, Button1 untuk browse file, dan Button 2 untuk proses import. ListBox1 untuk menyimpan nama-nama sheet. Label1 keterangan data excel dan Label2 untuk keterangan data MySQL. DataGridView1 untuk menampilkan data tabel dari excel sementara DataGridView2 untuk menampilkan data dari MySQL.
Selesai dengan UI, lanjut ke Code. Pertama Import Class yang digunakan.
Imports System.IO
Imports System.Data
Imports System.Data.OleDb
Imports MySql.Data.MySqlClient
Kemudian deklarasikan object data untuk digunakan di Class frmImportExcel.
Dim conn As New MySqlConnection
Dim strConn As String = "server=localhost;user id=root;" & _
"password=xxxx;database=latihan"
Dim tblImport As DataTable
Sub Procedure berikut untuk menampilkan data dari tabel MySQL.
Sub MySQLDataLoad()
Dim myCommand As New MySqlCommand
Dim myAdapter As New MySqlDataAdapter
Dim myData As New DataTable
Dim SQL As String
Try
conn.Open()
SQL = "Select nik, nama From tblkaryawan"
myCommand.Connection = conn
myCommand.CommandText = SQL
myAdapter.SelectCommand = myCommand
myAdapter.Fill(myData)
DataGridView2.DataSource = myData
conn.Close()
Catch myerror As MySqlException
MessageBox.Show("Error: " & myerror.Message)
Finally
conn.Dispose()
End Try
End Sub
Sub procedure di atas akan dipanggil di event Form_Load. Event ini juga memuat pengaturan connection string dan beberapa pengaturan property UI.
Private Sub frmImportExcel_Load(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles MyBase.Load
TextBox1.ReadOnly = True
Button1.Text = "Browse..."
Button2.Enabled = False
Button2.Text = "Import"
Label1.Text = "Data Excel"
Label2.Text = "Data MySQL"
With DataGridView1
.AllowUserToDeleteRows = False
.AllowUserToAddRows = False
.ReadOnly = True
End With
With DataGridView2
.AllowUserToDeleteRows = False
.AllowUserToAddRows = False
.ReadOnly = True
End With
conn.ConnectionString = strConn
MySQLDataLoad()
End Sub
Kemudian kita siapkan juga 2 buah procedure untuk menampilkan data excel, termasuk pilihan sheet dan isi tabel. Isi tabel excel akan disimpan dalam object DataTable dengan nama tblImport.
'Untuk menampilkan data sheet di grid
Sub LoadExcel2Grid(ByVal FileName As String, ByVal SheetName As String)
Dim exConn As OleDbConnection
Dim dt As DataSet
Dim cmd As OleDbDataAdapter
Dim sConn As String
sConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & _
FileName & ";Extended Properties=""Excel 12.0 Xml;HDR=YES"";"
exConn = New System.Data.OleDb.OleDbConnection(sConn)
cmd = New System.Data.OleDb.OleDbDataAdapter( _
"select * from [" & SheetName & "]", exConn)
cmd.TableMappings.Add("Table", SheetName)
dt = New System.Data.DataSet
cmd.Fill(dt)
tblImport = dt.Tables(0)
DataGridView1.DataSource = tblImport
exConn.Close()
End Sub
'Untuk menampilkan nama sheet di listbox
Sub GetExcelSheetNames(ByVal FileName As String)
Dim sConn As String
sConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & _
FileName & ";Extended Properties=""Excel 12.0 Xml;HDR=YES"";"
Dim conn As New OleDbConnection(sConn)
conn.Open()
Dim dtSheets As DataTable = _
conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, Nothing)
Dim drSheet As DataRow
ListBox1.Items.Clear()
For Each drSheet In dtSheets.Rows
ListBox1.Items.Add(drSheet("TABLE_NAME").ToString())
Next
LoadExcel2Grid(FileName, ListBox1.Items(0).ToString)
conn.Close()
End Sub
Lanjut di Part 2 ...
Click here if you like this article.
2 Comments
soalnya saya pakai vb.net 2015 gk support di "Imports Mysql.Data.MysqlClient" nya
Saya pakai MySQLConnector. Ada yang harus di download, diinstall, dan di add reference.
Coba lihat deh di artikel ini:
http://rani-irsan.blogspot.com/2012/12/koneksi-vbnet-ke-mysql.html