
Exportar en forma rapida GridView a excel
Publicado por Francisco Javier (3 intervenciones) el 15/10/2015 18:23:34
Hola a todos
Tengo un problema con como exportar en forma rapida un grid a excel. La forma que lo tengo actualmente cumple la funcion de exportarlo, pero no lo hace rapido, por ejemplo, en un grid que tiene 3000 registros con mas de 10 columnas se demora como 4 minutos en exportarlo.
El codigo recorre el grid al momento de exportarlo, pero estoy buscando alguna manera de que me tome el rango total del grid y exportarlo en forma rapida.
Aca esta el codigo actual.
Espero que me puedan ayudar.
Gracias
Tengo un problema con como exportar en forma rapida un grid a excel. La forma que lo tengo actualmente cumple la funcion de exportarlo, pero no lo hace rapido, por ejemplo, en un grid que tiene 3000 registros con mas de 10 columnas se demora como 4 minutos en exportarlo.
El codigo recorre el grid al momento de exportarlo, pero estoy buscando alguna manera de que me tome el rango total del grid y exportarlo en forma rapida.
Aca esta el codigo actual.
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
Private Sub btn_expo_pend_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_expo_pend.Click
Dim app As Microsoft.Office.Interop.Excel._Application = New Microsoft.Office.Interop.Excel.Application()
Dim workbook As Microsoft.Office.Interop.Excel._Workbook = app.Workbooks.Add(Type.Missing)
Dim worksheet As Microsoft.Office.Interop.Excel._Worksheet '= Nothing.worksheet = workbook.Sheets("Hoja1")
worksheet = workbook.ActiveSheet
For i As Integer = 1 To dgv_pend_mensa.Columns.Count
worksheet.Cells(1, i) = dgv_pend_mensa.Columns(i - 1).HeaderText
Next
For i As Integer = 0 To dgv_pend_mensa.Rows.Count - 1
For j As Integer = 0 To dgv_pend_mensa.Columns.Count - 1
worksheet.Cells(i + 2, j + 1) = dgv_pend_mensa.Rows(i).Cells(j).Value.ToString()
Next
Next
worksheet.PageSetup.Zoom = 85
worksheet.PageSetup.Orientation = Microsoft.Office.Interop.Excel.XlPageOrientation.xlLandscape
worksheet.PageSetup.LeftMargin = 0
worksheet.PageSetup.RightMargin = 0
worksheet.Cells.Font.Size = 9
worksheet.Rows.Item(1).Font.Bold = 1
worksheet.Columns.AutoFit()
worksheet.Columns.HorizontalAlignment = 2
worksheet.PageSetup.CenterHeader = "Pendientes Mensajero:" & cmb_mensa_pend.Text & "FECHA " & Date.Today & " "
worksheet.PageSetup.CenterFooter = "Pendientes =" & lbl_cod_pen.Text & ""
worksheet.PageSetup.PrintTitleRows = "$1:$1"
worksheet.PageSetup.PrintTitleColumns = "$A:$H"
app.Visible = True
GC.Collect()
txt_cod_pend.Text = ""
cmb_mensa_pend.Text = ""
dgv_pend_mensa.Rows.Clear()
End Sub
Gracias
Valora esta pregunta


0