Click here to Skip to main content
15,167,925 members
Articles / Desktop Programming / Windows Forms
Posted 1 Aug 2007


171 bookmarked

Export to Excel using VB.NET

Rate me:
Please Sign up or sign in to vote.
4.45/5 (73 votes)
25 Apr 2008CPOL1 min read
Export data from VB.NET Dataset to Excel without using Datagrid/DataTable



Exporting data to Excel of Microsoft Office is currently needed. But many of them used very complicated coding for simple export either from Datagrid or DataTable. I used simple Dataset to export the data.


Introducing the way of sending data from datagrid or by Datatable. I used Dataset which is easy to use. But for code optimization, dataset is not advisable compared to Reader and DataTable.

Using the Code

Currently, available code for exporting the data to Excel are given which is so complete and not straight forward because they used the Datagrid and DataTable which are given below:

From DataTable to Excel sheet:

Dim dt1 As New DataTable
Dim I1, J1 As Integer
For I1 = 0 To dsmas1.Tables(0).Columns.Count - 1
 For I1 = 0 To dsmas1.Tables(0).Rows.Count - 1
      Dim DR As DataRow = Nothing
      DR = dt1.NewRow
      For J1 = 0 To dsmas1.Tables(0).Columns.Count - 1
          DR.Item(J1) = dsmas1.Tables(0).Rows(I1).ItemArray(J1)
 Dim dt As New DataTable
 Dim I, J As Integer
 For I = 0 To dschd1.Tables(0).Columns.Count - 1
 For I = 0 To dschd1.Tables(0).Rows.Count - 1
      Dim DR As DataRow = Nothing
      DR = dt.NewRow
      For J = 0 To dschd1.Tables(0).Columns.Count - 1
          DR.Item(J) = dschd1.Tables(0).Rows(I).ItemArray(J)

For DataGrid to Excel sheet:

'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
'add column to that table
For i As Integer = 0 To DataGridView1.ColumnCount - 1
'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

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

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)


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

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

excel.Visible = True

But I used only Dataset to Excel sheet.

In code, I used a user defined function called "Load_Excel_Details()" in which I used an old technique like create Object for Excel, add the Book for a sheet and sheet for the data.


  • Excel <-- System.Runtime.InteropServices.Marshal.ReleaseComObject(Excel)
    • Book <------ Excel Workbooks.Add()
      • Sheet <----- Excel SheetsInNewWorkbook = 1
        • Data <----- Excel cells(1, i).value

which is used in the code like given below:

 With Excel
       .SheetsInNewWorkbook = 1

      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

            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
               k += 1
          filename = "c:\File_Exported.xls"
 End With

Points of Interest

I used simple For loops.... and insert the values by Rows, Columns and Cells formats.


I proposed this after I used it in my company project which was appreciate by the customers.


This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


About the Author

Senthil S
Software Developer
India India
This is Senthil.S. I am a Software Engineer at TCS. I am Currently Standing on .Net and Flex Platform.

Comments and Discussions

GeneralError : inserted number value in to .xls file Pin
MohanMbnr11-Mar-10 0:34
MemberMohanMbnr11-Mar-10 0:34 
GeneralRe: Error : inserted number value in to .xls file Pin
Senthil S11-Mar-10 11:59
MemberSenthil S11-Mar-10 11:59 
GeneralAlignment the column of excel Pin
Arul Soosai27-Jan-10 22:44
MemberArul Soosai27-Jan-10 22:44 
GeneralThanks a lot Pin
malakrouhhi14-Dec-09 1:26
Membermalakrouhhi14-Dec-09 1:26 
Questionafter initial workbook.saveas I cannot move the xls to a new folder (locked) Pin
ALZDBA25-Sep-09 9:00
MemberALZDBA25-Sep-09 9:00 
GeneralThanks Pin
Member 386212222-Sep-09 19:33
MemberMember 386212222-Sep-09 19:33 
QuestionHow i can export datagrid to existing excel file??? Pin
B0nCelAja16-Sep-09 0:43
MemberB0nCelAja16-Sep-09 0:43 
AnswerRe: How i can export datagrid to existing excel file??? Pin
CikaPero19-Feb-10 4:53
MemberCikaPero19-Feb-10 4:53 
GeneralThanks Pin
avinashpatil348415-Sep-09 3:53
Memberavinashpatil348415-Sep-09 3:53 
Questionits helpful but...... Pin
Member 135185029-Apr-09 1:29
MemberMember 135185029-Apr-09 1:29 
AnswerRe: its helpful but...... Pin
FilipKrnjic9-Jul-09 5:17
MemberFilipKrnjic9-Jul-09 5:17 
QuestionHow to delete data from X rows and Y columns in Excel using VB scrpits Pin
vrajeshm27-Apr-09 0:31
Membervrajeshm27-Apr-09 0:31 
Generalhi Pin
swapnil_s_r13-Apr-09 3:48
Memberswapnil_s_r13-Apr-09 3:48 
GeneralGreat Code Pin
Sargonis28-Mar-09 23:56
MemberSargonis28-Mar-09 23:56 
GeneralThank You excellent Pin
NazmiDUMAN19-Mar-09 9:54
MemberNazmiDUMAN19-Mar-09 9:54 
General[My vote of 2] Adding references Pin
Bonthula18-Mar-09 0:30
MemberBonthula18-Mar-09 0:30 
QuestionProblem With Code!!!! - Please HELP - Pin
Mehdi Azizi12-Mar-09 10:50
MemberMehdi Azizi12-Mar-09 10:50 
GeneralExcellent code Pin
jterc200024-Feb-09 15:27
Memberjterc200024-Feb-09 15:27 
GeneralWhen I click on sln file to start - get error Pin
Member 239668621-Jan-09 12:15
MemberMember 239668621-Jan-09 12:15 
Generalgetting a serious error Pin
manesti12-Jan-09 13:16
Membermanesti12-Jan-09 13:16 
GeneralRe: getting a serious error Pin
Senthil S17-Jan-09 9:57
MemberSenthil S17-Jan-09 9:57 
GeneralRe: getting a serious error Pin
priya_sarupri23-Mar-09 0:01
Memberpriya_sarupri23-Mar-09 0:01 
GeneralRe: getting a serious error Pin
Senthil S23-Mar-09 17:17
MemberSenthil S23-Mar-09 17:17 
GeneralRe: getting a serious error Pin
MikMit1-Oct-09 10:12
MemberMikMit1-Oct-09 10:12 
GeneralRe: getting a serious error Pin
trilokchander200722-Dec-11 20:32
Membertrilokchander200722-Dec-11 20:32 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.