VB.NET MySQL: Export Data ke Excel


Setelah membahas bagaimana proses import dari excel, sekarang kita coba membuat bagaimana export data dari database MySQL ke file excel.

Proses yang akan kita buat adalah menampilkan data di gridview kemudian dengan menekan button data akan export ke file excel. Tabel data yang akan kita gunakan dan cara menampilkan di grid sama dengan artikel Menampilkan Data di Grid, dengan sedikit modifikasi pada UI sebagai berikut:

Code masih sama dengan penambahan yang ditandai dengan highlight kuning.
Imports MySql.Data.MySqlClient
Imports System.Data
Public Class Form1
 Dim conn As MySqlConnection
 Dim myCommand As New MySqlCommand
 Dim myAdapter As New MySqlDataAdapter
 Dim myData As New DataTable
 Dim SQL As String

 Private Sub Form1_Load(ByVal sender As System.Object, _
         ByVal e As System.EventArgs) Handles MyBase.Load
   conn = New MySqlConnection()
   conn.ConnectionString = "server=localhost;user id=root;" & _
                             "password=;database=latihan"
   Try
     conn.Open()
     SQL = "Select kodekategori, namakategori From kategori"

     myCommand.Connection = conn
     myCommand.CommandText = SQL

     myAdapter.SelectCommand = myCommand
     myAdapter.Fill(myData)

     grdData.DataSource = myData

     conn.Close()


     grdData.AllowUserToAddRows = False
     grdData.AllowUserToDeleteRows = False
     grdData.Columns(0).ReadOnly = True
     grdData.Columns(1).ReadOnly = True


   Catch myerror As MySqlException
     MessageBox.Show("Error: " & myerror.Message)
   Finally
     conn.Dispose()
   End Try
 End Sub



 'Dengan penambahan code di event Button1_Click
 Private Sub Button1_Click(ByVal sender As System.Object, _
             ByVal e As System.EventArgs) Handles Button1.Click
   If grdData.RowCount > 0 Then
      'Deklarasi Object
      Dim ApExcel As Object

      'Set sebagai excel  object
      ApExcel = CreateObject("Excel.application")

      'Menyembunyikan proses excel
      ApExcel.Visible = False

      'Membuat/menambah workbook baru
      ApExcel.Workbooks.Add()

      'Lebar Kolom
      ApExcel.Columns(1).ColumnWidth = 15
      ApExcel.Columns(2).ColumnWidth = 20

      'Tulis nama kolom ke excel
      For i As Integer = 1 To grdData.Columns.Count
         ApExcel.Cells(1, i).Value = grdData.Columns(i - 1).Name
      Next

      'Tulis data ke excel
      For r = 0 To grdData.RowCount - 1
        For i As Integer = 1 To grdData.Columns.Count
           ApExcel.Cells(r + 2, i).Value = grdData.Rows(r).Cells(i - 1).Value
        Next
      Next


      'Membuat Font Bold
      ApExcel.Range("A1:B1").Font.Bold = True

      'Memberi warna backgound
      ApExcel.Range("A1:B1").interior.colorindex = 36

      'Agar nilai cell yang panjang menjadi beberapa baris
      ApExcel.Range("A2:B" & grdData.RowCount + 1).WrapText = True

      'Membuat border hitam
      ApExcel.Range("A1:B" & grdData.RowCount + 1).Borders.Color = RGB(0,0,0)

      ApExcel.Visible = True

      ApExcel = Nothing
   End If
 End Sub

End Class


Runtime:
Hasil export excel:




Click here if you like this article.


Post a Comment

7 Comments

RobyRNL said…
Gan kalau mau menambahkan progressbar nya gimana gan?
supaya prosesnya keliatan gan
makasih gan udah dapat pencerahan dari postingan ini malah bisa dikembangkan lagi untuk kodinganya,,
yohimato reload said…
mau tanya mbak, jika data saya kolom A1:A... ingin merubah jadi text gmn ya?, karena saya ambil dari SQLite dengan format text, sedangkan valuenya angka/id
rani said…
@yohimato reload: dikasih kutip satu di depan nya
misal id 112233 --> '112233

Nanti di excel nya dianggap text dan kutip satu di depan itu ga bakal kelihatan
Unknown said…
This comment has been removed by the author.
Kalau mau ubah nama sheet, menambah sheet dan merge column bagaimana caranya kak?