Data can be exported to an excel sheet in Vb.Net using Microsoft.Office.Interop.Excel namespace. Though it’s a classic example, exporting data into an excel file can be useful when you want to share your data in a well formatted way. Ms-Excel 2003 had an in built feature which allowed users to “Auto format” the entire sheet with ease. This feature is still available in the .Net framework for developers to work with excel formatting.
The “Auto Format” function in the application will automatically format the sheet immediately after the entire data is export into the excel sheet.
Note: ExcelAutoFormat.xlRangeAutoFormatList3, comes with a variety of formats which you should try.
Before starting the designing of the application, we need to add a “COM” library from the reference window. In the .Net IDE, click “Project” from the top menu list and select “Add Reference…” In the “Add Reference” window, select “COM” tab and find “Microsoft Excel 12.0 Object Library” from the list. Select it and click OK.
We are ready to design our application.

Add 3 controls on the form. A CheckListBox, Button and CheckBox control.
Ref: Create the Employee Details table in your database.
Option Explicit On
Imports System.Data.SqlClient ' FOR SQL CONNECTION AND COMMAND.
Imports Excel = Microsoft.Office.Interop.Excel ' EXCEL APPLICATION.
Imports ExcelAutoFormat = Microsoft.Office.Interop.Excel.XlRangeAutoFormat ' TO AUTOFORMAT THE SHEET.
Public Class Form1
Private myConn As SqlConnection
Private sqComm As SqlCommand
Dim ds As New DataSet
Dim SqlAdapter As System.Data.SqlClient.SqlDataAdapter
Dim sSql As String = "" ' SQL QUERIES.
Dim iRowCnt As Integer = 0 ' JUST A COUNTER.
' FORM LOAD.
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If setConn() Then
sSql = "SELECT EmpName FROM dbo.EmployeeDetails"
Try
SqlAdapter = New System.Data.SqlClient.SqlDataAdapter(sSql, myConn)
SqlAdapter.Fill(ds, "EmpDet")
FillListbox()
Catch ex As Exception
MessageBox.Show(ex.Message, "Connection Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
Finally
sSql = ""
End Try
End If
End Sub
Private Sub btExport_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _
Handles btExport.Click
' EXPORT EMPLOYEE DETAILS TO EXCEL.
Cursor.Current = Cursors.WaitCursor
Dim sEmpList As String = ""
' FIRST CHECK IF ANY EMPLOYEES ARE SELECTED.
For iCnt = 0 To lstEmpDet.CheckedItems.Count - 1
If Trim(sEmpList) = "" Then
sEmpList = "'" & lstEmpDet.CheckedItems(iCnt) & "'"
Else
sEmpList = sEmpList & ", '" & lstEmpDet.CheckedItems(iCnt) & "'"
End If
Next
' QUERY TO FETCH RECORDS FROM THE DATABASE.
sSql = "SELECT *FROM dbo.EmployeeDetails " & _
IIf(Trim(sEmpList) <> "", " WHERE EmpName IN (" & Trim(sEmpList) & ")", "")
Dim sdrGetEmpDetails As SqlDataReader
sdrGetEmpDetails = GetDataReader(sSql)
Dim xlAppToUpload As New Excel.Application
xlAppToUpload.Workbooks.Add()
Dim xlWorkSheetToUpload As Excel.Worksheet
xlWorkSheetToUpload = xlAppToUpload.Sheets("Sheet1")
' SHOW EXCEL APPLICATION. (ALSO, SET IT TRUE WHEN THE DATA IS EXPORTED TO THE EXCEL SHEET.)
xlAppToUpload.Visible = True
Try
If sdrGetEmpDetails.HasRows Then
iRowCnt = 4 ' ROW AT WHICH PRINT WILL START.
With xlWorkSheetToUpload
' SHOW AN HEADER.
.Cells(1, 1).value = "Employee Details" : .Cells(1, 1).FONT.NAME = "Calibri"
.Cells(1, 1).Font.Bold = True : .Cells(1, 1).Font.Size = 20
.Range("A1:H1").MergeCells = True ' MERGE CELLS OF THE HEADER.
' SHOW COLUMNS ON THE TOP.
.Cells(iRowCnt - 1, 1).value = "Employee Name"
.Cells(iRowCnt - 1, 2).value = "Mobile"
.Cells(iRowCnt - 1, 3).value = "PresentAddress"
.Cells(iRowCnt - 1, 4).value = "Area"
.Cells(iRowCnt - 1, 5).value = "City"
.Cells(iRowCnt - 1, 6).value = "Country"
.Cells(iRowCnt - 1, 7).value = "Qualification"
.Cells(iRowCnt - 1, 8).value = "Email Address"
While sdrGetEmpDetails.Read
.Cells(iRowCnt, 1).value = sdrGetEmpDetails.Item("EmpName")
.Cells(iRowCnt, 2).value = sdrGetEmpDetails.Item("Mobile")
.Cells(iRowCnt, 3).value = sdrGetEmpDetails.Item("PresentAddress")
.Cells(iRowCnt, 4).value = sdrGetEmpDetails.Item("Area")
.Cells(iRowCnt, 5).value = sdrGetEmpDetails.Item("City")
.Cells(iRowCnt, 6).value = sdrGetEmpDetails.Item("Country")
.Cells(iRowCnt, 7).value = sdrGetEmpDetails.Item("Qualification")
.Cells(iRowCnt, 8).value = sdrGetEmpDetails.Item("Email")
iRowCnt = iRowCnt + 1
End While
End With
' FINALLY, FORMAT THE EXCEL SHEET USING EXCEL'S AUTOFORMAT FUNCTION.
xlAppToUpload.ActiveCell.Worksheet.Cells(4, 1).AutoFormat(ExcelAutoFormat.xlRangeAutoFormatList3)
End If
Catch ex As Exception
MessageBox.Show(ex.Message)
Finally
xlAppToUpload = Nothing
sdrGetEmpDetails.Close() : sdrGetEmpDetails = Nothing
End Try
Cursor.Current = Cursors.Default
End Sub
'FILL THE "CHECKLISTBOX" WITH EMPLOYEE NAMES
Private Sub FillListbox()
Dim row As DataRow
lstEmpDet.Items.Clear()
For Each row In ds.Tables("EmpDet").Rows
lstEmpDet.Items.Add(ds.Tables("EmpDet").Rows(iRowCnt).Item(0))
iRowCnt = iRowCnt + 1
Next
End Sub
' CALL THIS FUNCTION ON FORM LOAD TO SET THE DATABASE CONNECTION.
Private Function setConn() As Boolean
Try
s_ConnString = "Data Source=dna;Persist Security Info=False;" & _
"Initial Catalog=DNA_CLASSIFIED;User Id=sa;Password=demo;Connect Timeout=30;"
myConn.Open()
sqComm = New SqlCommand
Catch ex As Exception
MessageBox.Show("Error while connection database.", "Connection Error", MessageBoxButtons.OK, _
MessageBoxIcon.Error)
Return False
End Try
Return True
End Function
' SQL DATA READER TO FETCH DATA.
Private Function GetDataReader(Optional ByVal sQuery As String = "") As SqlDataReader
Try
sqComm.Connection = myConn
sqComm.CommandText = sQuery
sqComm.ExecuteNonQuery()
GetDataReader = sqComm.ExecuteReader
sqComm.Dispose()
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
End Function
' SELECT / UNSELECT ALL EMPLOYEES FROM THE "CHECKLISTBOX".
Private Sub chkAll_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) _
Handles chkAll.CheckedChanged
Cursor.Current = Cursors.WaitCursor
If chkAll.Checked Then
For iCnt = 0 To lstEmpDet.Items.Count - 1
lstEmpDet.SetItemCheckState(iCnt, CheckState.Checked)
lstEmpDet.SetSelected(iCnt, True)
Next
chkAll.Text = "Unselect All"
Else
For iCnt = 0 To lstEmpDet.Items.Count - 1
lstEmpDet.SetItemCheckState(iCnt, CheckState.Unchecked)
lstEmpDet.SetSelected(iCnt, False)
Next
chkAll.Text = "Select all from the list"
End If
Cursor.Current = Cursors.Default
End Sub
End Class
The final result.


Overview.
Using few controls we are able to export data from our database to an excel sheet with a decent looking format. The “Auto Format” function comes with many more formatting options, which makes the sheet looks very professional.
Extend the bold part of the below highlighted code to see the list of formats available in the .Net framework.
xlAppToUpload.ActiveCell.Worksheet.Cells(4, 1).AutoFormat(ExcelAutoFormat.xlRangeAutoFormatList3)

http://www.encodedna.com/2012/12/export-data-to-excel.htm