VB.NET: Menggunakan ADODB untuk Menampilkan Data Excel


Yang ini sebenernya rada aneh, tapi gpp deh buat jawab pertanyaan dari Panji Abdi di artikel http://rani-irsan.blogspot.com/2015/04/vbnet-memilih-file-excel-untuk.html dan
http://rani-irsan.blogspot.com/2014/04/vb6-menampilkan-data-dari-excel-ke.html

Yaitu tentang menggunakan ADODB Recordset di VB.NET dan digunakan untuk menampilkan data dari file Excel ke DataGridView.
Pertama2 Add Reference dulu dengan cara seperti gambar di bawah:
Pada dialog Add Reference pilih Tab COM, kemudian pilih Microsoft ActiveX Data Object 2.7 Library, dan klik OK.
UI yang kita pakai simple aja cuman Form dan DataGridView.

Code:
Imports ADODB
Imports System.Data.OleDb

Public Class frmADODB
    Dim xConn As ADODB.Connection
    Dim rsTable As ADODB.Recordset
    Dim rsExcel As ADODB.Recordset
    Dim strExcel As String

    Private Sub Open_Excel()

        xConn = New ADODB.Connection
        With xConn
            .Provider = "Microsoft.ACE.OLEDB.12.0"
            .ConnectionString = "Data Source=d:\karyawan.xls;" & _
                                "Extended Properties=Excel 12.0;"
            .Open()
        End With
        rsExcel = New ADODB.Recordset
        strExcel = "SELECT * FROM [Sheet1$]"

        With rsExcel
            .CursorLocation = CursorLocationEnum.adUseClient
            .Open(strExcel, xConn, CursorTypeEnum.adOpenKeyset, _
                  LockTypeEnum.adLockReadOnly)
            .ActiveConnection = Nothing
        End With
        Me.DataGridView1.DataSource = RecordSetToDataTable(rsExcel)

        rsExcel.Close()
        xConn.Close()

    End Sub

    Public Function RecordSetToDataTable( _
               ByVal objRS As ADODB.Recordset) As DataTable

        Dim objDA As New OleDbDataAdapter()
        Dim objDT As New DataTable()
        objDA.Fill(objDT, objRS)
        Return objDT

    End Function

    Private Sub frmADODB_Load(ByVal sender As System.Object, _
                ByVal e As System.EventArgs) Handles MyBase.Load
        Open_Excel()
    End Sub

End Class


Mari kita coba:
Catatan:
Waktu nyoba sempet error terus provider not found, ternyata provider nya harus pake yang buat Excel 2007 keatas yaitu "Microsoft.ACE.OLEDB.12.0"


Click here if you like this article.


Post a Comment

17 Comments

Unknown said…
makasi ya , mbak...
maaf udah ngerepotin, mbak.. :)
rani said…
my pleasure ^_^
Unknown said…
mbak, mau nanya nih.. ada referensi gak untuk menyimpan data grid view ke sql server.. data grid view nya bisa di edit gitu mbak..
Unknown said…
tapi juga menggunanakan adodob dan vb.net
rani said…
klo supaya datagridview bisa diedit kan tinggal di set property EditMode sama per column nya di set readonly = false

trus masukin aja code buat save ke database nya di event yang ada di grid nya. Klo pengen saved tiap edit cell berati di event _CellEndEdit

Di artikel ini kan ada contoh nya gimana pakai ADODB di VB.NET
Dipelajari aja dulu gimana saving pake ADODB yang di VB6, kayaknya cara nya ga akan jauh beda.

Klo artikel spesifik tentang itu rani blom punya :)
Unknown said…
kalau menyimpan sekali banyak mbak,,?
menggunakan perulangan?
rani said…
iya pake looping
Unknown said…
mbak, kenapa kata nya provider is not found. it may be not installed.. saya menggunanakan connection string.

cn.ConnectionString = "Provider=SQLNCLI11;
rani said…
Provider=SQLNCLI10.1
Unknown said…
iya mbak, udah bisa.. :)

mbak, mau nanya gmana untuk mengatur posisi objek yg di dalam form ikut berubah juga jika form di resize , selain menggunakan anchor mbak..
apakah menggunakan coding location mbak?
Unknown said…
saya membuat seperti ini mbak.. apakah ini bener mbak?

Private Sub frm_Attendance_Resize(sender As Object, e As EventArgs) Handles Me.Resize
If Me.WindowState < FormWindowState.Minimized Then
Me.dgv_data.Size = New Size(520, 220)
btn_save.Location = New Point(47, 382)
btn_cancel.Location = New Point(230, 382)
btn_import.Location = New Point(410, 95)

Else
Me.dgv_data.Size = New Size(900, 500)
btn_save.Location = New Point(53, 640)
btn_cancel.Location = New Point(230, 640)
btn_import.Location = New Point(785, 98)
End If

End Sub
rani said…
iya klom au ngotak atik ukuran di event _Resize
Udah dicoba blom itu code nya?

Tapi kayak nya klo input value size nya angka statis kayak gitu sih ga keliahatan berubah kecuali ukuran nya pake persentasi dari ukuran form
Misal nya dgv_data.Width = 0.9 * Me.Width
Unknown said…
udah di coba mbak, bisa.. tapi takutnya pas beda laptop di running kan jadi nya gak pas seperti di laptop saya..
Unknown said…
kalau button supaya ke bawah jika di resize kan pake anchor mbak? kalau pake coding itu bisa mbak cuma takut nya di laptop orang berbeda jarak nya...
rani said…
iyah pake anchor bottom.
klo bisa pake anchor kenapa harus pake code itu?
Unknown said…
iya mbak, emang bisa pake anchor... tapi tau lah mbak, di bilang nya gak boleh pake anchor. semua kalau bisa pake coding.. ADODB aja belum kelar, disuruh ini pake coding lagi mbak.