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