Header Ads Widget

Ticker

6/recent/ticker-posts

Export data dari DataGridView ke Excel

Gambar diatas adalah contoh export data dari datagridview ke Excel, banyak yang bertanya bagaimana caranya export data ke excel, maka dari itu saya jawab dengan menulis tutorial ini,
berikut adalah caranya..

1. Design form seperti gambar diatas, yang diperlukan adalah :
  • DatagridView
  • 2 buah button
  • untuk gambar pakai picturebox
2. Setelah selesai design form, sekarang anda harus menambahkan Reference  Microsoft.Office.Interop.Excel, sebagai pendukung, caranya masuk ke menu Project, lalu properties, pilih tab Reference, lalu pada tab COM pilih Microsoft.Office.Interop.Excel.

3. Setelah beres sekarang tinggal Coding deh . .
  • Double klik pada form, lalu tuliskan kode dibawah ini : 
Imports Microsoft.Office.Interop.Excel (Ketikan diatas Public Class Form1)
  • Lalu buatlah variabel untuk koneksi ke database
#Region "Common Variable"

    Private conn As New OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\Resource\db1.mdb;Persist Security Info=True")
    Private ComDset As New DataSet
    Private ComDset1 As New DataSet
#End Region
  • Lalu buat sebuah Fungsi untuk export ke excel, jd nnt tinggal dipanggil saja
#Region "Common Function"
    Private Sub Load_Excel_Details()
        'Extracting from database
        Dim str, filename As String
        Dim col, row As Integer
        str = "SELECT * from Table1"
        Dim adp As New OleDb.OleDbDataAdapter(str, conn)
        Try
            ComDset.Reset()
            adp.Fill(ComDset, "TTbl")
            If ComDset.Tables.Count < 0 Or ComDset.Tables(0).Rows.Count <= 0 Then
                Exit Sub
            End If
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
        Dim Excel As Object = CreateObject("Excel.Application")
        If Excel Is Nothing Then
            MsgBox("It appears that Excel is not installed on this machine. This operation requires MS Excel to be installed on this machine.", MsgBoxStyle.Critical)
            Return
        End If


        'Export to Excel process
        Try
            With Excel
                .SheetsInNewWorkbook = 1
                .Workbooks.Add()
                .Worksheets(1).Select()

                Dim i As Integer = 1
                For col = 0 To ComDset.Tables(0).Columns.Count - 1
                    .cells(1, i).value = ComDset.Tables(0).Columns(col).ColumnName
                    .cells(1, i).EntireRow.Font.Bold = True
                    i += 1
                Next
                i = 2
                Dim k As Integer = 1
                For col = 0 To ComDset.Tables(0).Columns.Count - 1
                    i = 2
                    For row = 0 To ComDset.Tables(0).Rows.Count - 1
                        .Cells(i, k).Value = ComDset.Tables(0).Rows(row).ItemArray(col)
                        i += 1
                    Next
                    k += 1
                Next
                filename = "c:\File_Exported" & Format(Now(), "dd-MM-yyyy_hh-mm-ss") & ".xls"
                .ActiveCell.Worksheet.SaveAs(filename)
            End With
            System.Runtime.InteropServices.Marshal.ReleaseComObject(Excel)
            Excel = Nothing
            MsgBox("Data's are exported to Excel Succesfully in '" & filename & "'", MsgBoxStyle.Information)

        Catch ex As Exception
            MsgBox(ex.Message)
        End Try

        ' The excel is created and opened for insert value. We most close this excel using this system
        Dim pro() As Process = System.Diagnostics.Process.GetProcessesByName("EXCEL")
        For Each i As Process In pro
            i.Kill()
        Next

    End Sub
#End Region
  • Lalu Double click Button1, ini button untuk export
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Load_Excel_Details()
    End Sub
  • Lalu Pada Event Form 1 Load, ketika kode dibawah ini :
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim str As String
        str = "SELECT * from Table1"
        Dim adp As New OleDb.OleDbDataAdapter(str, conn)
        Try
            ComDset.Reset()
            adp.Fill(ComDset, "TTbl")
            DataGridView1.DataSource = ComDset.Tables(0)
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
    End Sub
  • Terakhir double click Button2, lalu ketikan kode dibawah ini :
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        'verfying the datagridview having data or not
        If ((DataGridView1.Columns.Count = 0) Or (DataGridView1.Rows.Count = 0)) Then
            Exit Sub
        End If

        'Creating dataset to export
        Dim dset As New DataSet
        'add table to dataset
        dset.Tables.Add()
        'add column to that table
        For i As Integer = 0 To DataGridView1.ColumnCount - 1
            dset.Tables(0).Columns.Add(DataGridView1.Columns(i).HeaderText)
        Next
        'add rows to the table
        Dim dr1 As DataRow
        For i As Integer = 0 To DataGridView1.RowCount - 1
            dr1 = dset.Tables(0).NewRow
            For j As Integer = 0 To DataGridView1.Columns.Count - 1
                dr1(j) = DataGridView1.Rows(i).Cells(j).Value
            Next
            dset.Tables(0).Rows.Add(dr1)
        Next

        Dim excel As New Microsoft.Office.Interop.Excel.ApplicationClass
        Dim wBook As Microsoft.Office.Interop.Excel.Workbook
        Dim wSheet As Microsoft.Office.Interop.Excel.Worksheet

        wBook = excel.Workbooks.Add()
        wSheet = wBook.ActiveSheet()

        Dim dt As System.Data.DataTable = dset.Tables(0)
        Dim dc As System.Data.DataColumn
        Dim dr As System.Data.DataRow
        Dim colIndex As Integer = 0
        Dim rowIndex As Integer = 0

        For Each dc In dt.Columns
            colIndex = colIndex + 1
            excel.Cells(1, colIndex) = dc.ColumnName
        Next

        For Each dr In dt.Rows
            rowIndex = rowIndex + 1
            colIndex = 0
            For Each dc In dt.Columns
                colIndex = colIndex + 1
                excel.Cells(rowIndex + 1, colIndex) = dr(dc.ColumnName)

            Next
        Next

        wSheet.Columns.AutoFit()
        Dim strFileName As String = "D:\ss.xls"
        Dim blnFileOpen As Boolean = False
        Try
            Dim fileTemp As System.IO.FileStream = System.IO.File.OpenWrite(strFileName)
            fileTemp.Close()
        Catch ex As Exception
            blnFileOpen = False
        End Try

        If System.IO.File.Exists(strFileName) Then
            System.IO.File.Delete(strFileName)
        End If

        wBook.SaveAs(strFileName)
        excel.Workbooks.Open(strFileName)
        excel.Visible = True
    End Sub
  • RUN Aplikasi, dan berhasil !!!
Apabila bingung, tenang saya kasih project jadinya, silahkan download Disini

Terima Kasih
 


Post a Comment

2 Comments

isi komentar anda di sini