Tuesday, August 7, 2018

Export DataGridView VB.Net ke Ms. Excell

Jumpa lagi dengan tips, trik dan teknik seputar IT, pada kesempatan ini ane bakal share bagaimana caranya export data dari database yang ditampilkan di DataGridView dari aplikasi yang kita buat di .Net bisa di export menjadi file berformat xlsx atau file Microsoft Excel. Pertama-tama alat perang yang kita butuhkan antara lain:
  • Library Microsoft.Office.Interop.Excel yang agan-agan bisa download di sini
  • IDE Visual studio dan secangkir kopi
Pertama-tama kita buat sebuah database terlebih dahulu, bisa database sql ataupun Ms.Access keduanya sama saja, yang berbeda hanya pada syntax koneksi databasenya. Disini sebagai contoh kita gunakan MS.Access , seperti yang ditunjukan gambar dibawah ini. Saya membuat database bernama dbjnm dengan tabel bernama barang dengan field-field  sebagaimana berikut:

export-vb-to-xlsx-1
Rancangan database
Kemudian kita buka Visual studio dan buat sebuah project baru dengan bentuk Windows form application, yang kemudian kita tambahkan sebuah button, DataGridview untuk menampilkan data dari database, dan sebuah saveFileDialog seperti gambar dibawah ini:

export-vb-to-xlsx-2
Rancangan Form

Selanjutnya tekan F7 dan copas listing koneksi database berikut

Imports System.Data.OleDb
Public Class Form1
    Dim Conn As OleDbConnection
    Dim cmd As OleDbCommand
    Dim da As OleDbDataAdapter
    Dim ds As New DataSet
    Dim dr As OleDbDataReader
    Dim LokasiDB As String
    Sub Koneksi()
        LokasiDB = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=dbjnm.accdb"
        Conn = New OleDbConnection(LokasiDB)
        If Conn.State = ConnectionState.Closed Then Conn.Open()
    End Sub

End Class

Ada baiknya bila kita sering menggunakan sebuah kumpulan perintah seperti listing koneksi diatas dapat kita buatkan modul tersendiri, sehingga mudah dipanggil dari class manapun. Sesudah itu kita save dan file database yang tadi kita buat, kita pindahkan ke folder ./bin/debug dari project kita,yang selanjutnya kembali ke visual studio form1 design, click 2x pada form, dan copas code dibawah ini:

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Koneksi()
        da = New OleDbDataAdapter("Select * from barang", Conn)
        ds = New DataSet
        ds.Clear()
        da.Fill(ds, "barang")
        DataGridView1.DataSource = (ds.Tables("barang"))
        DataGridView1.Enabled = True
        Conn.Close()
    End Sub

Dari sini database sudah dapat ditampilkan bila kita start aplikasi yang kita buat bersamaan dengan dimuatnya form1, bila ada kesulitan khususnya database Accsess jangan lupa check Target CPU nya  sebaiknya x86 pada tab Compile di Project Properties seperti yang pernah kita bahas di artikel sebelumnya.
Selanjutnya kita masukan Library Microsoft.Office.Interop.Excel ke project kita dengan cara click kanan pada nama project di solution explorer dan pilih Properties yang akan menampilkan jendela properties yang selanjutnya pilih tab References dan click tombol add seperti gambar dibawah


export-vb-to-xlsx-3
Menambahkan library ke project

Yang mana akan menampilkan jendela reference manager, yang selanjutnya kita click tombol browse dan arahkan ke folder dimana agan mengextract library Microsoft.Office.Interop.Excel.dll tersebut, selanjutnya cukup pilih file tersebut click Ok dan kembali ke Form1 design. Sesudahnya kita tekan tombol F7 untuk menampilkan jendela kode, untuk membuat fungsi excel dan release object dengan cukup mencopas listing code berikut ini:

    Sub excel()
        Dim xlApp As Microsoft.Office.Interop.Excel.Application
        Dim xlWorkBook As Microsoft.Office.Interop.Excel.Workbook
        Dim xlWorkSheet As Microsoft.Office.Interop.Excel.Worksheet
        Dim misValue As Object = System.Reflection.Missing.Value
        Dim i As Integer
        Dim j As Integer

        xlApp = New Microsoft.Office.Interop.Excel.ApplicationClass
        xlWorkBook = xlApp.Workbooks.Add(misValue)
        xlWorkSheet = xlWorkBook.Sheets("sheet1")


        For i = 0 To DataGridView1.RowCount - 2
            For j = 0 To DataGridView1.ColumnCount - 1
                For k As Integer = 1 To DataGridView1.Columns.Count
                    xlWorkSheet.Cells(1, k) = DataGridView1.Columns(k - 1).HeaderText
                    xlWorkSheet.Cells(i + 2, j + 1) = DataGridView1(j, i).Value.ToString()
                Next
            Next
        Next
        SaveFileDialog1.Filter = "XLSX Files (*.xlsx)|*.xlsx"
        If SaveFileDialog1.ShowDialog = System.Windows.Forms.DialogResult.OK Then xlWorkSheet.SaveAs(SaveFileDialog1.FileName)
        xlWorkBook.Close()
        xlApp.Quit()

        releaseObject(xlApp)
        releaseObject(xlWorkBook)
        releaseObject(xlWorkSheet)

    End Sub
    Private Sub releaseObject(ByVal obj As Object)
        Try
            System.Runtime.InteropServices.Marshal.ReleaseComObject(obj)
            obj = Nothing
        Catch ex As Exception
            obj = Nothing
        Finally
            GC.Collect()
        End Try

    End Sub

Selanjutnya kita kembali ke Form1, click 2x pada tombol Button1 dan ketik perintah untuk memanggil fungsi export ke excel tersebut, seperti code berikut:

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        excel()
    End Sub

Lalu   kita start untuk jalankan programnya, maka data di GridView akan dapat disimpan dalam format excel setelah kita meng click button1 (tombol yang disediakan) seperti gambar dibawah:


export-vb-to-xlsx-4
Hasil export ke xlsx

Untuk source code lengkapnya seperti dibawah ini:



Demikian tutorial cara mengexport DataGridView dari database ke file berformat xlsx (MS.Excel), semoga bermanfaat..

0 comments:

Post a Comment