none
Exportar datagridview a csv

    Question

  • Hola no se si alguno de ustedes conozca alguna forma de exportar el contenido de un datagridview a un archivo csv en Visual Basic.net Express 2008 me genera un error que dice referencia a objeto no establecida como instancia de un objeto no se a que se deba este error si alguien sabe se los agradeceria por que ese codigo lohe modificado lo cambie en fin que no he hecho.

     

    • Edited by Odinsrv Thursday, June 10, 2010 11:28 PM
    Tuesday, June 01, 2010 3:03 PM

Answers

  • hola

    podrias usar algo como esto

    Imports System
    Imports System.Collections.Generic
    Imports System.ComponentModel
    Imports System.Data
    Imports System.Drawing
    Imports System.Linq
    Imports System.Text
    Imports System.Windows.Forms
    Imports System.Data.SqlClient

    Namespace DataGridView_ExportToCSV
        Public Partial Class Form1
            Inherits Form
            Public Sub New()
                InitializeComponent()
            End Sub

            Private Sub Form1_Load(sender As Object, e As EventArgs)
                'Fetch the Employee details
                Dim sqlDa As New SqlDataAdapter("Select EmployeeID, firstname," + "Lastname from Employees", "Server=localhost;Database=Northwind;Trusted_Connection=True;")
                Dim ds As New DataSet()
                'Fill the DataSet
                sqlDa.Fill(ds, "Employees")
                'Set the DataSource of DataGrid View
                dataGridView1.DataSource = ds.Tables(0)
            End Sub

            Private Sub button1_Click(sender As Object, e As EventArgs)
                Dim strExport As String = ""
                'Loop through all the columns in DataGridView to Set the
                'Column Heading
                For Each dc As DataGridViewColumn In dataGridView1.Columns
                    strExport += dc.Name + "   "
                Next
                strExport = strExport.Substring(0, strExport.Length - 3) + Environment.NewLine.ToString()


                'Loop through all the row and append the value with 3 spaces
                For Each dr As DataGridViewRow In dataGridView1.Rows
                    For Each dc As DataGridViewCell In dr.Cells
                        If dc.Value IsNot Nothing Then
                            strExport += dc.Value.ToString() + "   "
                        End If
                    Next

                    strExport += Environment.NewLine.ToString()
                Next


                strExport = strExport.Substring(0, strExport.Length - 3) + Environment.NewLine.ToString()
                'Create a TextWrite object to write to file, select a file name with .csv extention
                Dim tw As System.IO.TextWriter = New System.IO.StreamWriter("data.csv")
                'Write the Text to file
                tw.Write(strExport)
                'Close the Textwrite
                tw.Close()
            End Sub
        End Class
    End Namespace

     

    verifica lo qeu marco en negrita como recorre las filas y celdas de la grilla

    este codigo lo exporte a vb.net de este otro link

    Export DataGridView into .csv file

     

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    • Marked as answer by Odinsrv Tuesday, June 01, 2010 7:12 PM
    Tuesday, June 01, 2010 3:10 PM
  • hola

    el codigo que esta puesto en el mensaje esta en vb.net, es el mismo que esta en el link pero convertido

    analiza dodne marco en negrita, alli marca como recorrer y trabajar con row y cell de la grilla

    note tambien que no usa la ; como separador de datos, pero es simple de agregar

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    • Marked as answer by Odinsrv Tuesday, June 01, 2010 7:12 PM
    Tuesday, June 01, 2010 3:27 PM

All replies

  • hola

    podrias usar algo como esto

    Imports System
    Imports System.Collections.Generic
    Imports System.ComponentModel
    Imports System.Data
    Imports System.Drawing
    Imports System.Linq
    Imports System.Text
    Imports System.Windows.Forms
    Imports System.Data.SqlClient

    Namespace DataGridView_ExportToCSV
        Public Partial Class Form1
            Inherits Form
            Public Sub New()
                InitializeComponent()
            End Sub

            Private Sub Form1_Load(sender As Object, e As EventArgs)
                'Fetch the Employee details
                Dim sqlDa As New SqlDataAdapter("Select EmployeeID, firstname," + "Lastname from Employees", "Server=localhost;Database=Northwind;Trusted_Connection=True;")
                Dim ds As New DataSet()
                'Fill the DataSet
                sqlDa.Fill(ds, "Employees")
                'Set the DataSource of DataGrid View
                dataGridView1.DataSource = ds.Tables(0)
            End Sub

            Private Sub button1_Click(sender As Object, e As EventArgs)
                Dim strExport As String = ""
                'Loop through all the columns in DataGridView to Set the
                'Column Heading
                For Each dc As DataGridViewColumn In dataGridView1.Columns
                    strExport += dc.Name + "   "
                Next
                strExport = strExport.Substring(0, strExport.Length - 3) + Environment.NewLine.ToString()


                'Loop through all the row and append the value with 3 spaces
                For Each dr As DataGridViewRow In dataGridView1.Rows
                    For Each dc As DataGridViewCell In dr.Cells
                        If dc.Value IsNot Nothing Then
                            strExport += dc.Value.ToString() + "   "
                        End If
                    Next

                    strExport += Environment.NewLine.ToString()
                Next


                strExport = strExport.Substring(0, strExport.Length - 3) + Environment.NewLine.ToString()
                'Create a TextWrite object to write to file, select a file name with .csv extention
                Dim tw As System.IO.TextWriter = New System.IO.StreamWriter("data.csv")
                'Write the Text to file
                tw.Write(strExport)
                'Close the Textwrite
                tw.Close()
            End Sub
        End Class
    End Namespace

     

    verifica lo qeu marco en negrita como recorre las filas y celdas de la grilla

    este codigo lo exporte a vb.net de este otro link

    Export DataGridView into .csv file

     

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    • Marked as answer by Odinsrv Tuesday, June 01, 2010 7:12 PM
    Tuesday, June 01, 2010 3:10 PM
  • Hola leandro espero que estes bien lo que sucede es que ese codigo es de C# No se si lo tenga en basic.net
    Tuesday, June 01, 2010 3:24 PM
  • hola

    el codigo que esta puesto en el mensaje esta en vb.net, es el mismo que esta en el link pero convertido

    analiza dodne marco en negrita, alli marca como recorrer y trabajar con row y cell de la grilla

    note tambien que no usa la ; como separador de datos, pero es simple de agregar

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    • Marked as answer by Odinsrv Tuesday, June 01, 2010 7:12 PM
    Tuesday, June 01, 2010 3:27 PM
  • Hola:

    Si el control DataGridView se encuentra enlazado a un objeto DataTable, el ejemplo que encontrarás en el enlace que indico a continuación, hace exactamente lo que tu deseas hacer. Bueno, lo único que tienes que cambiar es la extensión del archivo de texto resultante, para que tenga la extensión csv.

    Cómo crear un archivo de texto delimitado con los datos existentes en un objeto DataTable

    Un saludo


    Enrique Martínez [MS MVP - VB]
    Tuesday, June 01, 2010 3:33 PM
  • Hola odinsrv mira el codigo que tu utilizaste lo ejecute al correrlo paso a paso, me percate que el error se generaba al llegar a esta linea:

    MsgBox(ex.Message.ToString, MsgBoxStyle.Critical)

    lo que debes hacer para que no te cause error es sustituirla por algo asi

    MsgBox("Archivo" MsgBoxStyle.Information, "A")

    espero te ayude

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    • Proposed as answer by berha Friday, June 11, 2010 9:30 PM
    Friday, June 11, 2010 9:29 PM