This post is a continuation of the previous post 
How to Export Dataset to Excel Using XML VB.Net & SQL Server
this time we will use Microsoft.Interop to export from the dataset to excel file.
Import NameSpace
Imports System.Data.SqlClient Imports System.Data Imports System.IO.Directory Imports Microsoft.Office.Interop
Load data into Dataset
Private Function load_data_into_dataset() As DataSet
        Dim value As New DataSet
        Using iKon = New SqlConnection(sql_connection_string)
            If iKon.State = ConnectionState.Open Then iKon.Close()
            iKon.Open()
            Using iCmd = New SqlCommand("Select * from cars", iKon)
                Using adapter = New SqlDataAdapter
                    adapter.SelectCommand = iCmd
                    adapter.Fill(value)
                End Using
            End Using
        End Using
        Return value
End Function
Load Data Into Datagridview
 Private Sub Btn_load_dataset_Click(sender As Object, e As EventArgs) Handles Btn_load_dataset.Click
        DataGridView1.DataSource = load_data_into_dataset.Tables(0)
 End Sub
Export to Excel Using Microsoft.Interop.Excel
Private Sub export_database_to_excel_using_office_interop(ByVal dataset As DataSet)
        Dim excel_app As Excel.Application
        Dim excel_book As Excel.Workbook
        Dim excel_sheet As Excel.Worksheet
        excel_app = CreateObject("excel.application")
        excel_book = excel_app.Workbooks.Add(Type.Missing)
        excel_sheet = excel_book.Worksheets(1)
        Dim col_index As Integer = 0
        Dim row_index As Integer = 0
        'create columns header
        For Each col As DataColumn In dataset.Tables(0).Columns
            col_index = col_index + 1
            excel_sheet.Cells(1, col_index) = col.ColumnName
        Next
        'insert row
        For Each row As DataRow In dataset.Tables(0).Rows
            row_index = row_index + 1
            col_index = 0
            For Each col As DataColumn In dataset.Tables(0).Columns
                col_index = col_index + 1
                excel_sheet.Cells(row_index + 1, col_index) = row.Item(col)
            Next
        Next
        Dim file_name As String = Application.StartupPath & "\Export" & Format(DateTime.Now, "ddMMyyHHmmss") & ".xls"
        excel_sheet.Columns.AutoFit()
        excel_book.SaveAs(file_name, Microsoft.Office.Interop.Excel.XlFileFormat.xlWorkbookNormal,
                          Type.Missing, Type.Missing, Type.Missing, Type.Missing,
                          Excel.XlSaveAsAccessMode.xlExclusive,
                          Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing)
        release_object(excel_sheet)
        excel_book.Close(False, Type.Missing, Type.Missing)
        release_object(excel_book)
        excel_app.Quit()
        release_object(excel_app)
        GC.Collect()
        MsgBox("success")
        System.Diagnostics.Process.Start(file_name)
End Sub
Private Sub release_object(ByVal obj As Object)
        Try
            While (System.Runtime.InteropServices.Marshal.ReleaseComObject(obj) > 0)
            End While
        Catch ex As Exception
        Finally
            obj = Nothing
        End Try
End Sub
Private Sub btn_export_using_interop_Click(sender As Object, e As EventArgs) Handles btn_export_using_interop.Click
        export_database_to_excel_using_office_interop(load_data_into_dataset)
End Sub
Dataset successfully exported into excel using Microsoft.Interop without using any format.
if you want to use this article in your blog please also include this link as a source. thank you.



 
No comments:
Post a Comment