Setelah kita membahas bagaimana cara menampilkan data dari excel di datagridview, pertanyaan selanjutnya adalah bagaimana klo kita ingin lebih fleksible memilih sheet mana yang akan ditampilkan. Juga bagaimana cara mendapatkan nama-nama sheet yang ada di file excel tersebut dan menampilkannya dalam sebuah listbox.
Mari kita simak contoh berikut:
Memodifikasi UI yang telah kita buat di artikel sebelumnya, dengan menambahkan sebuah ListBox. Kemudian kita beranjak ke code:
Imports System.Data
Imports System.Data.OleDb
Public Class frmExcelGrid
'Nama file excel yang digunakan
Dim strFileName As String = "d:\karyawan.xls"
'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
'Panggil List sheet saat pertama load
GetExcelSheetNames(strFileName)
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(strFileName, ListBox1.SelectedItem.ToString)
End Sub
End Class
Mari kita coba run:
Click here if you like this article.
0 Comments