Click here to Skip to main content
11,412,833 members (71,896 online)
Click here to Skip to main content

Export to Excel using VB.Net

, 25 Apr 2008 CPOL
Rate this:
Please Sign up or sign in to vote.
Export data from VB.Net Dataset to Excel without using Datagrid/DataTable

 

Senthil_S__Software_Eng_/image2.jpg

Introduction

Export the data's to Excel of Microsoft office is currently need in many concern. But many of them used very complicated coding for simple export either from Datagrid or DataTable. I used simple Dataset to export the data.

Background

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

Using the code

In current available code for export the data to Excel are given. Which are so completed and not in 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
                dt1.Columns.Add(dsmas1.Tables(0).Columns(I1).ColumnName)
           Next
           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)
                Next
                dt1.Rows.Add(DR)
           Next
           rel_ds.Tables.Add(dt1)
           Dim dt As New DataTable
           Dim I, J As Integer
           For I = 0 To dschd1.Tables(0).Columns.Count - 1
                dt.Columns.Add(dschd1.Tables(0).Columns(I).ColumnName)
           Next
           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)
                Next
                dt.Rows.Add(DR)
           Next
            rel_ds.Tables.Add(dt)
 

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
        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 

But i used only Dataset to Excel sheet

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

i.e,.

  • 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
       .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.xls"
         .ActiveCell.Worksheet.SaveAs(filename)
 End With

 

Points of Interest

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

History

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

License

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

Share

About the Author

Senthil Sambandam
Software Developer (Senior)
India India
No Biography provided
Follow on   LinkedIn

Comments and Discussions

 
GeneralMy vote of 5 Pin
Gun Gun Febrianza at 18-Dec-14 19:41
member Gun Gun Febrianza18-Dec-14 19:41 
QuestionExcel Pin
Member 10811878 at 12-May-14 0:07
memberMember 1081187812-May-14 0:07 
QuestionThanks Pin
Kashif Alvi at 24-Aug-13 9:44
memberKashif Alvi24-Aug-13 9:44 
QuestionThanks Pin
nihadar at 12-Jun-13 23:57
membernihadar12-Jun-13 23:57 
QuestionExport multiple DataSets to multiple Excel sheets using vb.net Pin
Priyanka Jain at 4-May-13 0:40
memberPriyanka Jain4-May-13 0:40 
Questionhi Pin
Member 9993496 at 22-Apr-13 16:34
memberMember 999349622-Apr-13 16:34 
GeneralFree Export to Excel class, using OpenXML libraries Pin
Mike Gledhill at 1-Mar-13 8:54
memberMike Gledhill1-Mar-13 8:54 
GeneralRe: Free Export to Excel class, using OpenXML libraries [modified] Pin
Member 7956578 at 14-Mar-13 18:55
memberMember 795657814-Mar-13 18:55 
Generalgood Pin
pootuba at 31-Jan-13 5:00
memberpootuba31-Jan-13 5:00 
QuestionError "Microsoft.Office.Interop.Excel" Pin
morteza_msh at 15-Jan-13 11:15
membermorteza_msh15-Jan-13 11:15 
AnswerRe: Error "Microsoft.Office.Interop.Excel" Pin
Defilippo at 10-Dec-13 0:06
memberDefilippo10-Dec-13 0:06 
QuestionExcel Chart in vb.net Pin
Ofir G. at 20-Dec-12 3:03
memberOfir G.20-Dec-12 3:03 
hello
i made an excel chart in vb.net successfully.
i have a problem with moving the X axis to the bottom of the chart.
in vb6 it is done like that:
chart.Axes(xlCategory, xlPrimary).TickLabelPosition = xlLow
how it is done in vb.net ?
thanks
GeneralThank you Your Coding Pin
vanchai hontong at 6-Dec-12 18:56
membervanchai hontong6-Dec-12 18:56 
QuestionThank you, very good example Pin
Member 8687544 at 29-Oct-12 22:26
memberMember 868754429-Oct-12 22:26 
GeneralMy vote of 5 Pin
D-Kishore at 4-Sep-12 20:25
memberD-Kishore4-Sep-12 20:25 
GeneralMy vote of 5 Pin
ALDER_MORIGGI at 13-Jul-12 3:38
memberALDER_MORIGGI13-Jul-12 3:38 
GeneralMy vote of 5 Pin
Himachandra at 6-Jul-12 0:06
memberHimachandra6-Jul-12 0:06 
QuestionExporting DataGridView contents in an excel file following designed column format in an excel template 97-2003 Pin
Member 8983645 at 24-May-12 23:32
memberMember 898364524-May-12 23:32 
AnswerRe: Exporting DataGridView contents in an excel file following designed column format in an excel template 97-2003 Pin
Kurfuerstendamm at 19-Nov-13 1:25
memberKurfuerstendamm19-Nov-13 1:25 
GeneralMy vote of 5 Pin
MacParekh at 21-May-12 22:20
memberMacParekh21-May-12 22:20 
GeneralMy vote of 5 Pin
Member 4320844 at 10-Feb-12 5:52
memberMember 432084410-Feb-12 5:52 
QuestionSeriously? Pin
ortund at 5-Jan-12 21:57
memberortund5-Jan-12 21:57 
AnswerRe: Seriously? Pin
Senthil Sambandam at 14-Nov-14 6:06
professionalSenthil Sambandam14-Nov-14 6:06 
SuggestionAlternative way to export to a (genuine) Excel 2007 file, using OpenXML Pin
MikeGledhill at 5-Dec-11 1:58
memberMikeGledhill5-Dec-11 1:58 
GeneralMy vote of 5 Pin
Member 8151206 at 24-Nov-11 3:55
memberMember 815120624-Nov-11 3:55 
QuestionKeep getting error "A first chance exception of type 'System.NotImplementedException' occurred" Pin
Member 8336667 at 20-Oct-11 12:22
memberMember 833666720-Oct-11 12:22 
AnswerRe: Keep getting error "A first chance exception of type 'System.NotImplementedException' occurred" Pin
Senthil Sambandam at 14-Nov-14 6:19
professionalSenthil Sambandam14-Nov-14 6:19 
QuestionThans Senthil S Pin
dongcr at 10-Aug-11 23:54
memberdongcr10-Aug-11 23:54 
GeneralMy vote of 5 Pin
dongcr at 10-Aug-11 23:39
memberdongcr10-Aug-11 23:39 
QuestionExport only visible columns Pin
Member 8014117 at 6-Jul-11 7:31
memberMember 80141176-Jul-11 7:31 
GeneralMy vote of 4 Pin
Member 8014117 at 6-Jul-11 7:29
memberMember 80141176-Jul-11 7:29 
GeneralMy vote of 5 Pin
deo cabral at 14-Jun-11 8:29
memberdeo cabral14-Jun-11 8:29 
GeneralRetrieve all the database table values to an excel Pin
Bhagya111 at 2-Jun-11 23:56
memberBhagya1112-Jun-11 23:56 
Generalyet another very nice excel export library Pin
aron.sinoai at 22-Apr-11 11:00
memberaron.sinoai22-Apr-11 11:00 
Generali got error Pin
sanhadenn at 9-Mar-11 21:10
membersanhadenn9-Mar-11 21:10 
GeneralMy vote of 5 Pin
McGuire at 28-Feb-11 13:25
memberMcGuire28-Feb-11 13:25 
GeneralGood way to do that, I have another way Pin
qgyn at 23-Feb-11 22:24
memberqgyn23-Feb-11 22:24 
Generalthanks Pin
ekomahendro at 22-Feb-11 23:05
memberekomahendro22-Feb-11 23:05 
GeneralMy vote of 5 Pin
vvsbabji at 18-Jan-11 5:28
membervvsbabji18-Jan-11 5:28 
Generalthanks Pin
jonesberyl at 17-Aug-10 23:15
memberjonesberyl17-Aug-10 23:15 
GeneralMy vote of 5 Pin
kumar_vk at 16-Aug-10 0:14
memberkumar_vk16-Aug-10 0:14 
GeneralMy vote of 5 Pin
sankar07Ind at 16-Aug-10 0:10
membersankar07Ind16-Aug-10 0:10 
GeneralDataset takes too much time Pin
lbs.allies at 1-Apr-10 0:32
memberlbs.allies1-Apr-10 0:32 
GeneralRe: Dataset takes too much time Pin
JamesHoward972 at 6-Nov-11 23:50
memberJamesHoward9726-Nov-11 23:50 
QuestionHow to export to excel 3 related tables into excel using vb.net Pin
yustock at 16-Mar-10 22:32
memberyustock16-Mar-10 22:32 
GeneralError : inserted number value in to .xls file Pin
mohankundenagoud at 11-Mar-10 0:34
membermohankundenagoud11-Mar-10 0:34 
GeneralRe: Error : inserted number value in to .xls file Pin
Senthil S at 11-Mar-10 11:59
memberSenthil S11-Mar-10 11:59 
GeneralAlignment the column of excel Pin
Arul Soosai at 27-Jan-10 22:44
memberArul Soosai27-Jan-10 22:44 
GeneralThanks a lot Pin
malakrouhhi at 14-Dec-09 1:26
membermalakrouhhi14-Dec-09 1:26 
Questionafter initial workbook.saveas I cannot move the xls to a new folder (locked) Pin
ALZDBA at 25-Sep-09 9:00
memberALZDBA25-Sep-09 9:00 

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

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

| Advertise | Privacy | Terms of Use | Mobile
Web01 | 2.8.150427.1 | Last Updated 26 Apr 2008
Article Copyright 2007 by Senthil Sambandam
Everything else Copyright © CodeProject, 1999-2015
Layout: fixed | fluid