Ver Mensaje Individual
  #1 (permalink)  
Antiguo 06/08/2010, 15:21
alejimram_22
 
Fecha de Ingreso: octubre-2009
Mensajes: 75
Antigüedad: 14 años, 6 meses
Puntos: 1
Pregunta DataGridView a Excel en vb2008

Hola expertos, tengo un problema a la hora de exportar el contenido de un DataGridView a Excel, el código funciona bien, lo que pasa es que es muy lento el proceso y solo son 480 registros, se que es porque voy metiendo la informacion de las columnas por cada fila, quisiera saber si conocen algún otro método para hacerlo más rápido, les dejo el código, espero que me puedan ayudar.

Gracias.


Private Sub GridAExcel()

'Creamos las variables
Dim exApp As New Application
Dim exLibro As Workbook
Dim exHoja As Worksheet

' Variables para # de columnas y # de renglones
Dim iCol As Integer
Dim iRow As Integer

Try
'Añadimos el Libro al programa, y la hoja al libro

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

iCol = Me.dgv_prueba.ColumnCount
iRow = Me.dgv_prueba.RowCount

Me.Cursor = Cursors.WaitCursor
Me.lbl_procesar.Visible = True
Me.pgb_progreso.Maximum = iRow
Me.pgb_progreso.Minimum = 0
Me.pgb_progreso.Visible = True


'Encabezados del reporte
For i As Integer = 1 To iCol
If dgv_prueba.ColumnHeadersVisible = True Then
exHoja.Cells.Item(1, i) = dgv_prueba.Columns(i - 1).Name 'Go_DataSet.Tables("T2").Columns(i - 1).Namespace.ToString
exHoja.Cells.Item(1, i).HorizontalAlignment = 3
End If
Next

'Por cada fila va metiendo las columnas
For Fila As Integer = 0 To iRow - 1
For Col As Integer = 0 To iCol - 1
exHoja.Cells.Item(Fila + 2, Col + 1) = dgv_prueba.Rows(Fila).Cells(Col).Value 'Go_DataSet.Tables("T2").Rows(Fila).Item(Col).ToSt ring
Next
'Indica el progreso del reporte
Me.pgb_progreso.Value = Fila.ToString
Next

'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).HorizontalAlignment = 3
exHoja.Columns.AutoFit()

Me.Cursor = Cursors.Default
Me.lbl_procesar.Visible = False
Me.pgb_progreso.Visible = False

'Aplicación visible
exApp.Application.Visible = True

'exHoja = Nothing
exLibro.Close()
exApp.Quit()

Catch ex As Exception
MsgBox("Error al exportar a Excel", MsgBoxStyle.Information, "Data Vortex")
End Try

End Sub