Aca les dejo un codigo para exportar un DataGridView a Excel.
Crea un archivo .csv y luego lo abre con Excel, evitando la dependencia de alguna version en particular. El codigo es sencillo
Se debe agregar:
Imports System.IO
Function Exportar()
Dim strStreamW As Stream
Dim strStreamWriter As StreamWriter
Dim Filas = frm_principal.Grid.Rows.Count
Dim Columnas = frm_principal.Grid.Columns.Count
Dim Archivo As String = Application.StartupPath & "\Centros.csv"
Dim Linea
Dim f, c
File.Delete(Archivo)
strStreamW = File.OpenWrite(Archivo)
strStreamWriter = New StreamWriter(strStreamW, System.Text.Encoding.UTF8)
'CABECERA
For c = 0 To Columnas - 1
Linea = Linea & frm_principal.Grid.Columns(c).Name & ";"
Next
Linea = Mid(Linea, 1, Linea.ToString.Length - 1)
strStreamWriter.WriteLine(Linea)
Linea = Nothing
'FILAS
For f = 0 To Filas - 1
For c = 0 To Columnas - 1
Linea = Linea & frm_principal.Grid.Item(c, f).Value & ";"
'MsgBox(Grid.Item(c, f).Value)
Next
Linea = Mid(Linea, 1, Linea.ToString.Length - 1)
strStreamWriter.WriteLine(Linea)
Linea = Nothing
Next
strStreamWriter.Close()
Try
Process.Start(Archivo) 'Ejecuta el archivo creado
Catch Ex As Exception
MsgBox(Ex.Message, MsgBoxStyle.Critical, Ex.Source)
End Try
End Function
En un boton:
Call Exportar()
Espero les sirva.
el code esta bueno... no lo he visto completo pero veo que concatenas palabras de la forma tradicional (al estilo vb 6) intenta hacer las concatenacion utilizando la clase StringBuilder (System.Text) eso hara las concatenaciones mucho mas rapido y utilizara menos memoria....
Atentamente,
Juan Manuel Lombana
Medellín - Colombia
Hola,
Así es, StringBuilder es muchísimo más Rápido que simplemente concatenar. Ésto se llama "Buenas Prácticas".
Saludos.
Saludos me tu comment sobre exportar un datagridview a excel me parece preciso justo estoy que quiero hacer eso.
Mas bien una consulta, estoy colocando tu codigo pero no me corre cuando coloco call exportar en el boton me sale un mensaje que mi datagrid no pertenece al formulario.
Mi form lo tengo de la siguiente manera:
Tengo un MDIform en el cual por un menu llamo a mi formulario (frmchoferes) dicho formulario es el que tiene el data grid y el boton donde migraria a excel esta en el MDI en un icono en la barra de estado del formulario.
Lo que hice es lo sgte. el codigo de la funtion exportar lo coloque dentro del formulario que tiene el grid. El Imports System.IO tambien lo coloque alli.
y el call exportar() lo coloque en el icono en el MDI Pero antes que lo corra me sale un mensaje que no se encuentra
como lo tengo que colocar
Gracias
Logre correr tu codigo muy buena pero coloca todo en una sola columna si quiero que lo mantenga en columna que cambiaria
Logre correr tu codigo. Esta muy bueno. Pero cuando abre el excel, me muestra toda la info en una sola columna y junto como se puede hacer para que lo muestre separado por columna
Gracias