En la entrada de hoy vamos a traer una función muy practica, crearemos un archivos CSV desde un objeto gridview.

El objeto gridview en .net muestra los valores de un origen de datos en una tabla en la que cada columna representa un campo y cada fila representa un registro, estos datos son los que exportaremos al CSV.

Los archivos CSV (del inglés comma-separated values) son un tipo de documento en formato abierto sencillo para representar datos en forma de tabla, en las que las columnas se separan por comas (o punto y coma en donde la coma es el separador decimal: Chile, Perú, Argentina, España, Brasil…) y las filas por saltos de línea.

 

Y sin mas preámbulos vamos con la función, a la cual se le pasa un objeto gridview como parámetro.

 

Public Sub CreaCSV(TB As DataGridView)
      Try
          If TB.RowCount < 1 Then
              MessageBox.Show("No existen registros en la tabla", "ExControl", MessageBoxButtons.OK, MessageBoxIcon.Information)
          End If

          Dim Dg As New SaveFileDialog
          Dg.Filter = "CSV|*.csv"
          Dg.Title = "Crear archivos"
          Dg.ShowDialog()

          If Dg.FileName.Length > 3 Then
              ' Write each directory name to a file.
              Using fi As StreamWriter = New StreamWriter(Dg.FileName)
                  Dim c, f As Integer
                  Dim l As String = ""
                  For c = 0 To TB.ColumnCount - 1
                      l += TB.Columns(c).HeaderText
                      If c < TB.ColumnCount - 1 Then l += ";"
                  Next
                  fi.WriteLine(l)
                  fi.WriteLine("")

                  For f = 0 To TB.Rows.Count - 1
                      Dim li As String = ""
                      For c = 0 To TB.ColumnCount - 1
                          li += Strings.Replace(TB(c, f).Value.ToString, ";", ".")
                          If c < TB.ColumnCount - 1 Then li += ";"
                      Next
                      fi.WriteLine(li)
                  Next
                  fi.Close()
              End Using

          End If

      Catch ex As Exception
          MessageBox.Show("Nos se pudo completar la acción, comprube permisos de carpeta", "ExControl", MessageBoxButtons.OK, MessageBoxIcon.Information)
      End Try

  End Sub