Minggu, 20 September 2020

Vb.Net: Memilih File Excel Untuk Ditampilkan


Yook mari kita lanjut pembahasan ihwal VB.NET Excel ini dari artikel sebelumnya, kita buat aplikasi kita lebih fleksible dengan mampu menentukan file excel untuk ditampilkan.
Modifikasi UI jadi mirip berikut:

Kita tambahkan sebuah textbox dan button, yang akan dipakai untuk menentukan (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 memperlihatkan 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 opsi 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 mampu diseleksi.
           .Filter = "Excel 97-2003


EmoticonEmoticon