Foros del Web » Programación para mayores de 30 ;) » .NET »

Datagrid a Excel muy lento

Estas en el tema de Datagrid a Excel muy lento en el foro de .NET en Foros del Web. Hola a todos tengo una duda y me gustaria saber si me pueden ayudar tengo una aplicacion en vb.net con la cual lleno un datagridview ...
  #1 (permalink)  
Antiguo 17/01/2014, 11:10
 
Fecha de Ingreso: noviembre-2012
Ubicación: Santiago
Mensajes: 3
Antigüedad: 11 años, 5 meses
Puntos: 0
Pregunta Datagrid a Excel muy lento

Hola a todos

tengo una duda y me gustaria saber si me pueden ayudar

tengo una aplicacion en vb.net con la cual lleno un datagridview desde una base de datos la que luego la exporto a excel. hasta ahi todo bien

uso una plantilla para generar la hoja de excel y esa plantilla ademas tiene un cuadro de estadisticas que se va llenando con el reporte que exporto del datagrid wiev

el problema es que lo hace muy lento tan lento que puede demorrarse media hora ...y son 3000 datos solamente con 5 columnas

me he dado cuenta que si genero el reporte con la misma plantilla pero sin el cuadro estadistico lo hace mas rapido, pero necesito ese cuadro estadistico.

como puedo mejorar el tiempo del reporte con el cuadro estadistico

les dejo el codigo donde exporto a excel

Código:
Private Sub ExportarExcel()
Try
'Variables del programa
Dim rutaPlantilla As String = "C:\plantillaxls\plantilla1.xlsx"
Dim rutaGuardado As String = "C:\Reportes\Reporte_SRB EIMLC " + Me.DateTimePicker1.Value.ToShortDateString & ".xls"
Dim xlApp As Excel.Application = New Excel.Application()
Dim _libroExcel As Excel.Workbook = Nothing
Dim _HojaExcel As Excel.Worksheet = Nothing
Dim _Rango As Excel.Range = Nothing
Dim misValue As Object = System.Reflection.Missing.Value


_libroExcel = xlApp.Workbooks.Open(rutaPlantilla, misValue, misValue, misValue _
, misValue, misValue, misValue, misValue _
, misValue, misValue, misValue, misValue _
, misValue, misValue, misValue)


_libroExcel = xlApp.ActiveWorkbook

_HojaExcel = CType(_libroExcel.Worksheets.Item(1), Excel.Worksheet)
_HojaExcel = _libroExcel.Worksheets(1)
_HojaExcel.Columns("A").NumberFormat = "@"
Try

' columnas y filas
Dim ncol As Integer = DataGridView1.ColumnCount
Dim nrow As Integer = DataGridView1.RowCount

For i As Integer = 1 To ncol
_HojaExcel.Cells.Item(8, i) = DataGridView1.Columns(i - 1).Name.Trim
_HojaExcel.Cells.Item(1, i).horizontalalignment = 6


Next

For fila As Integer = 0 To nrow - 1
For col As Integer = 0 To ncol - 1
_HojaExcel.Cells.Item(fila + 9, col + 1) = DataGridView1.Rows(fila).Cells(col).Value
Next
Next


'Guardamos el libro 
_libroExcel.SaveAs(rutaGuardado, Excel.XlFileFormat.xlWorkbookNormal, misValue, misValue, misValue, misValue, Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue)

_libroExcel.Close(True, misValue, misValue)
xlApp.Quit()
MessageBox.Show("Datos Exportados" & rutaGuardado)

Catch ex As System.Exception

MessageBox.Show(ex.Message & "\n\n======= Error al escribir el excel: ======\n\n" & _
ex.StackTrace)

Finally
End Try
Catch exl As System.Exception

MessageBox.Show(exl.Message & _
"\n\n======= Error al abrir el archivo ======\n\n" & _
exl.StackTrace)

End Try
End Sub

de antemano gracias

Etiquetas: datagrid, excel, lento, vb
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:54.