Senin, 21 September 2020

Vb.Net: Menampilkan Sheet Pada File Excel


Setelah kita membicarakan bagaimana cara memperlihatkan data dari excel di datagridview, pertanyaan berikutnya yakni bagaimana klo kita ingin lebih fleksible memilih sheet mana yang mau 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 sudah kita buat di artikel sebelumnya, dengan menambahkan suatu ListBox. Kemudian kita beranjak ke code:
Imports System.Data
Imports System.Data.OleDb

Public Class frmExcelGrid

   'Nama file excel yang dipakai
   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 dikala 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 opsi sheet pada listbox
       LoadExcel2Grid(strFileName, ListBox1.SelectedItem.ToString)

   End Sub

End Class


Mari kita coba run:



Click here if you like this article.



Sumber http://rani-irsan.blogspot.com


EmoticonEmoticon