Yook mari kita lanjut pembahasan tentang VB.NET Excel ini dari artikel sebelumnya, kita buat aplikasi kita lebih fleksible dengan dapat memilih file excel untuk ditampilkan.
Modifikasi UI jadi seperti berikut:
Kita tambahkan sebuah textbox dan button, yang akan digunakan untuk memilih (browse) file excel. Kemudian ubah code manjadi seperti berikut:
Imports System.Data
Imports System.Data.OleDb
Public Class frmExcelGrid
'Untuk menampilkan nama sheet di listbox
Private 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
'Tampilkan data sheet pertama pada grid
LoadExcel2Grid(FileName, ListBox1.Items(0).ToString)
conn.Close()
End Sub
'untuk menampilkan data sheet di datagridview
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", "Tabel Karyawan")
dt = New System.Data.DataSet
cmd.Fill(dt)
grdData.DataSource = dt.Tables(0)
exConn.Close()
End Sub
Private Sub frmExcelGrid_Load(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles MyBase.Load
Button1.Text = "Browse..."
TextBox1.ReadOnly = True
End Sub
Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged
'Menampilkan data sesuai pilihan sheet pada listbox
LoadExcel2Grid(TextBox1.Text, ListBox1.SelectedItem.ToString)
End Sub
'Untuk memilih file excel
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"
'supaya tersaring file excel yang bisa dipilih.
.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
End Class
Klik tombol run dan coba jalankan.
Klik tombol Browse untuk memilih file excel.
Klik pada listbox untuk memilih sheet mana yang ingin ditampilkan.
Click here if you like this article.
17 Comments
Imports ADODB
Dim con As ADODB.Connection
Dim rsTable As ADODB.Recordset
Dim rsExcel As ADODB.Recordset
mohon petunjuknya mbak....
dan saya jujur kurang tau pake adodb, searching pun di internet kebanyakan menggunakan vb 6.0 yang menggunakan adodb,bukan vb.net
cobain add reference dulu
Klik menu Project—>Add References...
Trus klik tab COM dan pilih Component name
Microsoft ActiveX Data Objects 2.7 Library
2.7 itu versi nya, dilihat aja di VB nya adanya versi berapa, klo adanya versi 2.8 dicoba aja
mbak flexgrid apa yah? bisa digunakan untuk vb.net?
disuruh pelajari tentang AxVSFlexGrid di vb.net 2013...
ada referensi mbak, bagaimana menggunakan AxVSFlexGrid?
http://rani-irsan.blogspot.com/2015/04/vbnet-menggunakan-adodb-untuk.html
Happy Coding
http://rani-irsan.blogspot.com/2015/05/vbnet-ms-access-menampilkan-list-tabel.html
saya tes pakai framework lain tidak bisa buk.
solusi untuk dijalankan di net framework 3.0 gmn buk ?
cuma di net framework 4.5 aja yang jalan buk
Apa ada reference yg perlu ditambahkan ?
Atau harus install aplikasi tambahan ?
Mohon jawabannya,
Terima kasih
sama openfiledialogue1 itu emang bener ada 1 nya atau gimana?
makasih
Nama sheet muncul 2 kali, rani juga ada pengalaman kayak gitu. Emang anomaly dari excel nya. Yang rani tulis di artikel ini sample excel file nya yang bener2 "bersih".
Excel nya suka ada "kacaw" klo kebanyakan edit, terutama tambah/rename/hapus sheet.
However, membaca file excel kayak gini biasa nya rani pake buat import data dan solusi nya ya copy paste ke file excel yang "bersih" atau tetep pakai yang sama selama tampilan di excel nya valid untuk proses selanjutnya (e.g. import)