VB.NET: Memilih File Excel untuk Ditampilkan


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.
Pada kotak dialog cari ke lokasi tempat kita menyimpan file excel, kita juga dapat memilih tipe file excel 97-2003 (.xls) atau Excel 2007 keatas (.xlsx)
Klik pada listbox untuk memilih sheet mana yang ingin ditampilkan.



Click here if you like this article.


Post a Comment

17 Comments

Unknown said…
bagaimana jika menggunakan adodb mbak? tetapi yang kita gunakan adalah vb.net 2013 bukan vb 6.0 mbak?
Imports ADODB

Dim con As ADODB.Connection
Dim rsTable As ADODB.Recordset
Dim rsExcel As ADODB.Recordset
mohon petunjuknya mbak....
rani said…
klo boleh tau kenapa harus pake adodb? karena teknologi .NET biasa nya pake ADO.NET
Unknown said…
tugasnya disuruh pake adodb mbak...

dan saya jujur kurang tau pake adodb, searching pun di internet kebanyakan menggunakan vb 6.0 yang menggunakan adodb,bukan vb.net
rani said…
oooh dosen nya kreatif yah hehe...
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
Unknown said…
udah di add references mbak, gak mau juga mbak..

mbak flexgrid apa yah? bisa digunakan untuk vb.net?
rani said…
flexgrid semacam datagridview biasanya juga dipakai di VB6
Unknown said…
vb 6.0 juga mbak?

disuruh pelajari tentang AxVSFlexGrid di vb.net 2013...
ada referensi mbak, bagaimana menggunakan AxVSFlexGrid?
rani said…
Buat yang VB.NET ADODB Recordset buat nampilin data excel di datagridview, coba cek disini yah

http://rani-irsan.blogspot.com/2015/04/vbnet-menggunakan-adodb-untuk.html


Happy Coding
I my me mine said…
mba kalo data yang di pake database acces gimana caranya mba? juga ada list nya gitu.
Unknown said…
buk menampilkan file excelnya harus memakai net framework 4.5 ya buk ?
saya tes pakai framework lain tidak bisa buk.

solusi untuk dijalankan di net framework 3.0 gmn buk ?
rani said…
@joe sath: bisa mestinya, emang error nya gimana?
Unknown said…
gak ada eror buk, pas di open file dia gak mau di upload ke datagridview buk

cuma di net framework 4.5 aja yang jalan buk
Harisul Ishbah said…
Saya mengikuti tutorial pada artikel ini, tapi terjadi error (error the 'microsoft.ace.oledb.12.0' provider is not registered on the local machine).

Apa ada reference yg perlu ditambahkan ?
Atau harus install aplikasi tambahan ?

Mohon jawabannya,
Terima kasih
JasMerah said…
saya coba, kenapa di listboxnya muncul 2x sheet pertama yah.
sama openfiledialogue1 itu emang bener ada 1 nya atau gimana?
makasih
rani said…
OpenFileDialog1 itu emang ada 1 nya, OpenFileDialog itu kan jenis komponen atau control seperti textbox atau button. Kita bebas namain apa aja (yang valid tentunya) itu rani namain OpenFileDialog1 dafult generated dari VB nya aja.

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)
rani said…
@Harisul Ishbah: kayak nya versi excel yang terinstall beda sama yang saya pakai. Saya pakai versi 2007. Coba pakai versi yang terinstall di komputer aja.