La Web del Programador: Comunidad de Programadores
 
    Pregunta:  60554 - EXPORTAR EXCEL
Autor:  Sayda Capacho
Hola a todos, necesito de una gran ayuda,

Debo hacer una exportación a Excel y no se como hacerlo alguien me puede colaborar con esto

  Respuesta:  David Enriquez
Muy facil...
primero que nada agrega la referencia Microsoft Excel XX.X Object Library...en mi caso es: Microsoft Excel 12.0 Object Library

Parte de esto lo vi en un foro... pero lo acople a mis necesidades...

Dim exApp As New Microsoft.Office.Interop.Excel.Application
Dim exLibro As Microsoft.Office.Interop.Excel.Workbook
Dim exHoja As Microsoft.Office.Interop.Excel.Worksheet
Dim Filas As Integer
Dim respuesta As Integer
Dim EXE As String = "SAS View"

Try
Filas = GridX.Rows.Count
If Filas <= 0 Then
MsgBox("No hay información para exportar a Excel", vbInformation, EXE)
'ExportaExcel = ""
Exit Sub
End If

If Filas >= 1000 Then
respuesta = MsgBox("Esta exportación tardará varios minutos..... ¿Desea continuar?", vbYesNo, EXE)
If respuesta = 6 Then 'Continuar
Else
'ExportaExcel = ""
Exit Sub
End If
End If

' -- Crear nueva instancia de Excel
exApp = CreateObject("Excel.Application")
' -- Agregar nuevo libro
exApp.Workbooks.Add()
'exApp.ActiveWorkbook.SaveAs(Path.GetFullPath("Libro1"), xlNormal, "", "", False, False)
'exLibro = exApp.Workbooks.Open(FileXLS)
' -- Referencia a la Hoja activa ( la que añade por defecto Excel )
exHoja = exApp.ActiveSheet

'exLibro = exApp.Workbooks.Add
'exHoja = exLibro.Worksheets.Add()

'Asignación de valores de total de filas y columnas
Dim NCol As Integer = GridX.ColumnCount
Dim NRow As Integer = GridX.RowCount

'Aqui recorremos todas las filas, y por cada fila todas las columnas y vamos escribiendo.
'Barra1.Maximum = NRow
'Ciclo para recorrer solo la cabecera, para obtener nombres de columnas
For i As Integer = 1 To NCol
exHoja.Cells.Item(1, i) = GridX.Columns(i - 1).Name.ToString
'exHoja.Cells.Item(1, i).HorizontalAlignment = 3
Next

'Ciclo para recorrer los datos del grid
For Fila As Integer = 0 To NRow - 1
For Col As Integer = 0 To NCol - 1
exHoja.Cells.Item(Fila + 2, Col + 1) = GridX.Rows(Fila).Cells(Col).Value
Next
'Barra1.Value = Fila
Next
'Barra1.Value = 0
'Titulo en negrita, Alineado al centro y que el tamaño de la columna se ajuste al texto
exHoja.Rows.Item(1).Font.Bold = 1
'exHoja.Rows.Item(1).font.name = "arial"
'exHoja.Rows.Item(1).font.size = 13
'

exHoja.Rows.Item(1).HorizontalAlignment = 3
exHoja.Columns.AutoFit()

'Aplicación visible
exApp.Application.Visible = True
exHoja = Nothing
exLibro = Nothing
exApp = Nothing

Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Critical, "Error al exportar a Excel")
exHoja = Nothing
exLibro = Nothing
exApp = Nothing
'Return False
End Try

Lo anterior sirve para exportar lo que hay en un grid a Excel...si los datos los tienes fijos en objetos solo revisa la parte del ciclo FOR para que hagas los ajustes necesarios...

buena suerte