5,696,576 members and growing! (17,595 online)
Email Password   helpLost your password?
Languages » VB.NET » Applications     Beginner License: The Code Project Open License (CPOL)

Export to Excel using VB.Net

By Senthil S

Export data from VB.Net Dataset to Excel without using Datagrid/DataTable
VB 7.x, VB 8.0, VB 9.0, VB 6, VB, .NET (.NET, .NET 3.0, .NET 2.0), Visual Studio (VS2008, VS2005, Visual Studio), WinForms, Architect, Dev, QA

Posted: 1 Aug 2007
Updated: 25 Apr 2008
Views: 74,575
Bookmarked: 67 times
Announcements
Loading...



Search    
Advanced Search
Sitemap
25 votes for this Article.
Popularity: 5.07 Rating: 3.63 out of 5
2 votes, 8.0%
1
3 votes, 12.0%
2
1 vote, 4.0%
3
7 votes, 28.0%
4
12 votes, 48.0%
5
Note: This is an unedited contribution. If this article is inappropriate, needs attention or copies someone else's work without reference then please Report This Article

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)

About the Author

Senthil S


Hello,
This is Senthil.S. I am a Software Engineer. I am Currently Standing on .Net and Flex Platform.
Occupation: Software Developer
Location: India India

Other popular VB.NET articles:

Article Top
Sign Up to vote for this article
You must Sign In to use this message board.
FAQ FAQ Noise ToleranceSearch Search Messages 
 Layout  Per page   
 Msgs 1 to 25 of 50 (Total in Forum: 50) (Refresh)FirstPrevNext
GeneralHimembervks_gautam121:54 20 Nov '08  
QuestionFrom gridivie to Excel with some excel formating like colomn width and row heightmemberMember 42761024:27 18 Nov '08  
QuestionExcel Querymembernehamayank18:45 4 Nov '08  
Generali m confusedmemberBlue stone4:04 21 Oct '08  
GeneralRe: i m confusedmemberSenthil S0:21 25 Oct '08  
GeneralFine but have doubtmemberkasimmohamed1:55 21 Oct '08  
GeneralRe: Fine but have doubtmemberSenthil S0:29 25 Oct '08  
GeneralFurther Help Sir Senthil Smembereph0y23:53 2 Oct '08  
QuestionHello experts: Problems writing SQL code for Excell workBOOK please help memembersivi0076:39 1 Oct '08  
Generalhelpmemberpriyajeni19:54 15 Sep '08  
Generalpls help me out senthilmembershalu.mathews18:58 13 Sep '08  
Question3 errors occured [modified]membershalu.mathews7:03 13 Sep '08  
GeneralCode not working at my endmemberbkukki4:19 15 Aug '08  
GeneralFinally..Thank You Senthilmemberhenry_yacob18:52 13 Aug '08  
GeneralExport Datagridview data to Excelmembergiverofjoy2:22 9 Aug '08  
GeneralRe: Export Datagridview data to ExcelmemberSenthil S15:28 14 Aug '08  
Generalhelp with errormemberNorminator11:53 7 Aug '08  
Generalerror Old format or invalid type library.membercheehongjb18:58 31 Jul '08  
GeneralRe: error Old format or invalid type library.memberSenthil S15:24 14 Aug '08  
GeneralRe: error Old format or invalid type library.memberMember 38226982:32 26 Aug '08  
GeneralRe: error Old format or invalid type library.memberSenthil S15:43 27 Aug '08  
GeneralHelp with Type ErrormemberMember 13943088:35 24 Jun '08  
GeneralRe: Help with Type Errormemberalexi070:44 30 Jun '08  
GeneralRe: Help with Type Errormembercgillespie11:41 30 Jun '08  
GeneralRe: Help with Type ErrormemberSenthil S18:01 30 Jun '08