Exportar MAS RAPIDO a Excel DataGridView con mas de 10,000 Registros
Publicado por Felipe De Jesus (1 intervención) el 03/09/2019 20:26:02
Hola colegas, estoy trabajando en una aplicacion de windows Forms que llena un datagrid view y luego al hacer click en un boton exporta la tabla a excel, el problema es que trabajo con tablas que contienen miles de registros y tarda una eternidad para generar el archivo, hablando de horas..
¿Alguien conoce una mejor manera de exportar la tabla rapidamente?
El codigo de la funcion que exporta el grid view es el siguiente:
¿Alguien conoce una mejor manera de exportar la tabla rapidamente?
El codigo de la funcion que exporta el grid view es el siguiente:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
Function llenarExcel(ByVal ElGrid As DataGridView) As Boolean
report_creator.pb_excel.Visible = True
report_creator.pb_excel.Value = 0
'Creamos las variables
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
Try
'Añadimos el Libro al programa, y la hoja al libro
exLibro = exApp.Workbooks.Add
exHoja = exLibro.Worksheets.Add()
' ¿Cuantas columnas y cuantas filas?
Dim NCol As Integer = ElGrid.ColumnCount
Dim NRow As Integer = ElGrid.RowCount
'Aqui recorremos todas las filas, y por cada fila todas las columnas
'y vamos escribiendo.
exHoja.Cells.Item(1, 2) = "Reportado: " & report_creator.lb_tabla.Text()
exHoja.Cells.Item(1, 4) = "Actualizado a: " & DateTime.Now.ToLocalTime
For i As Integer = 1 To NCol
exHoja.Cells.Item(3, i) = ElGrid.Columns(i - 1).Name.ToString
Next
For Fila As Integer = 0 To NRow - 1
For Col As Integer = 0 To NCol - 1
report_creator.pb_excel.Value = Fila
report_creator.pb_excel.Maximum = NRow
exHoja.Cells.Item(Fila + 4, Col + 1) = ElGrid.Item(Col, Fila).Value
Next
Next
report_creator.pb_excel.Visible = False
'Titulo en negrita, Alineado al centro y que el tamaño de la columna
'se ajuste al texto
exHoja.Rows.Item(1).HorizontalAlignment = 1
exHoja.Rows.Item(3).Font.Bold = 1
exHoja.Rows.Item(3).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")
Return False
End Try
Return True
End Function
Valora esta pregunta


0