Exportar DataGridView a Excel (CODIGO)

Iniciado por elmaro, 5 Febrero 2008, 18:04 PM

0 Miembros y 1 Visitante están viendo este tema.

elmaro

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.


MANULOMM

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


[D4N93R]

Hola,

Así es, StringBuilder es muchísimo más Rápido que simplemente concatenar. Ésto se llama "Buenas Prácticas".

Saludos.

LROJASAYLLON

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

LROJASAYLLON

Logre correr tu codigo muy buena pero coloca todo en una sola columna si quiero que lo mantenga en columna que cambiaria

LROJASAYLLON

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