Ver Mensaje Individual
  #2 (permalink)  
Antiguo 09-05-2008, 20:35:21
Avatar de jcarballo
jcarballo jcarballo is offline
Buena Participación en el Foro
 
Registrado: abr 2004
Posts: 85
jcarballo Valoración +2
Predeterminado Re: Como Exportar Gridview a Excel Usando WF con C#?

Aquí te envío un ejemplo en VB.net para exportar un dataset a Excel usando uno de varios métodos que existen, que es el que más rápido me ha resultado:

Private Sub Automation_UseArray(ByVal Path_FileName As String, ByVal dsExportar As DataSet)
Dim oExcel As Object
Dim oBook As Object
Dim oSheet As Object

'Iniciar un nuevo libro en Excel.
oExcel = CreateObject("Excel.Application")
oBook = oExcel.Workbooks.Add
Try
'Crear una matriz con n columnas y m filas.

For Each dtExportar As DataTable In dsExportar.Tables
If dtExportar.Rows.Count > 0 Then
Dim DataArray(dtExportar.Rows.Count - 1, dtExportar.Columns.Count - 1) As Object
For r As Integer = 0 To dtExportar.Rows.Count - 1
For c As Integer = 0 To dtExportar.Columns.Count - 1
DataArray(r, c) = dtExportar.Rows(r)(c)
Next
Next

'Agregar encabezados a la hoja de cálculo en la fila 1.
oSheet = oExcel.ActiveWorkbook.Worksheets.Add()
oSheet.Name = dtExportar.TableName

'oSheet = oBook.Worksheets(1)

For j As Integer = 0 To dtExportar.Columns.Count - 1
oSheet.Range(GetColumn(j + 1) & "1").Value = dtExportar.Columns(j).ColumnName
Next

Dim strRangeColumnasName As String = GetColumn(1) & "1:" & GetColumn(dtExportar.Columns.Count) & "1"
Dim strRangeAllName As String = GetColumn(1) & "1:" & GetColumn(dtExportar.Columns.Count) & (dtExportar.Rows.Count + 1).ToString


oSheet.range(strRangeColumnasName).Font.Bold = True
oSheet.range(strRangeColumnasName).Interior.ColorI ndex = 15
oSheet.range(strRangeColumnasName).Interior.Patter n = 1 'xlSolid

'Transferir la matriz a la hoja de cálculo comenzando en la celda A2.
oSheet.Range("A2").Resize(dtExportar.Rows.Count, dtExportar.Columns.Count).Value = DataArray

'7 - xlEdgeLeft, 8 - xlEdgeTop, 9 - xlEdgeBottom, 10 - xlEdgeRight, 11 - xlInsideVertical, 12 - xlInsideHorizontal
For i As Integer = 7 To 12
With oSheet.Range(strRangeAllName).Borders(i)
.LineStyle = 1 'xlContinuous
.Weight = 2 'xlThin
.ColorIndex = -4105 'xlAutomatic
End With
Next
End If
Next
'Guardar el libro y cerrar Excel.
oBook.SaveAs(Path_FileName)
oSheet = Nothing
oBook = Nothing
oExcel.Quit()
oExcel = Nothing
GC.Collect()
Catch ex As Exception
End Try
End Sub
__________________
Saludos,

Juan Carlos Carballo Quevedo
Responder Con Cita