BlogoDev

[VB.Net] Exportar DataSet a Excel

by P-los on Aug.30, 2009, under Funciones

Recientemente me solicitaron para un proyecto que los reportes se mandaran directamente a Excel. He aquí una pequeña función capaz de exportar cualquier DataSet a un archivo de Excel:

Public Sub ExportarArchivo(ByVal archivo As String, ByVal datos As DataSet)
Dim xl As New Microsoft.Office.Interop.Excel.ApplicationClass
Dim wBook As Microsoft.Office.Interop.Excel.Workbook
Dim wSheet As Microsoft.Office.Interop.Excel.Worksheet
wBook = xl.Workbooks.Add
wSheet = wBook.ActiveSheet
Dim colIndex As Integer = 0
Dim rowIndex As Integer = 0
For Each dc As System.Data.DataColumn In datos.Tables(0).Columns
colIndex = colIndex + 1
xl.Cells(1, colIndex) = dc.ColumnName
Next
For Each dr In datos.Tables(0).Rows
rowIndex = rowIndex + 1
colIndex = 0
For Each dc In datos.Tables(0).Columns
colIndex = colIndex + 1
xl.Cells(rowIndex + 1, colIndex) = dr(dc.ColumnName)
Next
Next
wSheet.Columns.AutoFit()
Dim blnFileOpen As Boolean = False
Try
Dim fileTemp As System.IO.FileStream = System.IO.File.OpenWrite(archivo)
fileTemp.Close()
Catch ex As Exception
blnFileOpen = False
End Try
If System.IO.File.Exists(archivo) Then
System.IO.File.Delete(archivo)
End If
wBook.SaveAs(archivo)
xl.Workbooks.Open(archivo)
xl.Visible = True
End Sub

Para que no cause errores, hay que agregar como referencia la siguiente:
Microsoft.Office.Interop.Excel

Espero les sea tan util como a mi!

:,
Posts Relacionados

2 Comments for this entry

  • Gonzalo

    Impecable tu articulo, te felicito por compartirlo.
    Un solo detalle en una linea 12 y 14 que lo corregí, además, lo modifique un poquito para que sirva como clase para llamarlo desde cualquier form, y tomando en cuenta un dataset con varios datatable. a continuación el codigo y nuevamente gracias !!!

    Public Sub ExportarArchivo(ByVal archivo As String, ByVal datos As DataSet, ByVal tabla As String)
    Dim xl As New Microsoft.Office.Interop.Excel.ApplicationClass
    Dim wBook As Microsoft.Office.Interop.Excel.Workbook
    Dim wSheet As Microsoft.Office.Interop.Excel.Worksheet
    wBook = xl.Workbooks.Add
    wSheet = wBook.ActiveSheet
    Dim colIndex As Integer = 0
    Dim rowIndex As Integer = 0
    For Each dc As System.Data.DataColumn In datos.Tables(tabla).Columns
    colIndex = colIndex + 1
    xl.Cells(1, colIndex) = dc.ColumnName
    Next
    For Each dr As System.Data.DataRow In datos.Tables(tabla).Rows
    rowIndex = rowIndex + 1
    colIndex = 0
    For Each dc As System.Data.DataColumn In datos.Tables(tabla).Columns
    colIndex = colIndex + 1
    xl.Cells(rowIndex + 1, colIndex) = dr(dc.ColumnName)
    Next
    Next
    wSheet.Columns.AutoFit()
    Dim blnFileOpen As Boolean = False
    Try
    Dim fileTemp As System.IO.FileStream = System.IO.File.OpenWrite(archivo)
    fileTemp.Close()
    Catch ex As Exception
    blnFileOpen = False
    End Try
    If System.IO.File.Exists(archivo) Then
    System.IO.File.Delete(archivo)
    End If
    wBook.SaveAs(archivo)
    xl.Workbooks.Open(archivo)
    xl.Visible = True
    End Sub

  • Oscar

    que tal oye muy buen codigo pero cuando lo quiero poner el un server o en un server IIS me dice que no se pude encontrar el archivo fulanito.xls pero en el .net trabaj muy bien

Leave a Reply

Paginas

 

August 2009
M T W T F S S
« Jul   Sep »
 12
3456789
10111213141516
17181920212223
24252627282930
31