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