none
Leer archivo txt separado por tabulador y cargarlo en un datagridview RRS feed

  • Pregunta

  • Buenas necesito leer un archivo txt que contiene varias columnas de información separadas por tabulador y luego cargar cada campo de cada línea en un datagridview, les pongo un poco de información que contiene el archivo

    W-97448    4    Canales José Francisco     ELITE MASCULINO    Finish    1    28/10/2017    11:40:06.830    03:32:06.830    03:32:06.830    39    129    58    Ok
    TW-92592    112    VILLA Nathaniel     ELITE MASCULINO    Finish    1    28/10/2017    11:40:08.431    03:32:08.431    03:32:08.431    33    121    58    Ok
    GW-97596    94    MORALES Isaac     ELITE MASCULINO    Finish    1    28/10/2017    11:40:09.353    03:32:09.353    03:32:09.353    36    127    58    Low
    LR-79585    91    VARCE José Alberto     ELITE MASCULINO    Finish    1    28/10/2017    11:40:09.558    03:32:09.558    03:32:09.558    34    128    58    Ok
    GZ-52814    14    PARIS Bryan     ELITE MASCULINO    Finish    1    28/10/2017    11:40:10.472    03:32:10.472    03:32:10.472    24    125    58    Low
    NF-03479    43    RODRIGUEZ Paulo     ELITE MASCULINO    Finish    1    28/10/2017    11:40:10.849    03:32:10.849    03:32:10.849    32    120    58    Ok
    GG-63895    44    PEREZ Jordan     ELITE MASCULINO    Finish    1    28/10/2017    11:41:33.406    03:33:33.406    03:33:33.406    31    119    61    Ok

    De este archivo solo utilizaré algunos campos de cada línea pero me urge saber como cargo en cada celda del datagridview cada dato que está separado por un tabulado, cada líne finaliza en el campo OK o LOW.


    Frank Cruz

    jueves, 2 de noviembre de 2017 21:20

Respuestas

  • Pequeño detalle je... , no hay problema, quita el segundo for, y rellena las celdas personalizadas segun el valor de row ej

     '--------------
     For i As Integer = 0 To Sep.Count - 1
                Dim row() As String = Split(Sep(i), vbTab)
                Dgv.Rows.Add()
    
                Dgv.Rows(i).Cells(0).Value = row(2)
                Dgv.Rows(i).Cells(1).Value = row(3)
                Dgv.Rows(i).Cells(2).Value = row(4)
                Dgv.Rows(i).Cells(3).Value = row(9)
            Next

    Recuerda la base 0 de las columnas

    Saludos



    • Editado Marcelo PF jueves, 2 de noviembre de 2017 22:57
    • Marcado como respuesta Frank Jarquin viernes, 3 de noviembre de 2017 0:25
    jueves, 2 de noviembre de 2017 22:56

Todas las respuestas


  • Una buena guia


    Si necesitas ayuda sube tu avance de otro modo no puedo ayudarte , Suerte!

    jueves, 2 de noviembre de 2017 21:41
  • Hola frank, si el texto tiene tab como separador y newline puedes utilizar lo siguiente

      Private Sub Button18_Click(sender As Object, e As EventArgs) Handles Button18.Click
            Dim Path As String = "C:\Path del texto\Texto.txt"
            Dim Dato As String = ""
            Dim Sep() As String
            FileOpen(1, Path, OpenMode.Binary, OpenAccess.Default)
            Dato = Space(FileLen(Path))
            FileGet(1, Dato)
            FileClose(1)
            Sep = Split(Dato, Environment.NewLine)
            MsgBox(Dato)
            For i As Integer = 0 To Sep.Count - 1
                Dim row() As String = Split(Sep(i), vbTab)
                Dgv.Rows.Add()
                For a As Integer = 0 To row.Count - 1
                    Dgv.Rows(i).Cells(a).Value = row(a)
                Next
            Next
    
    
        End Sub

    Se entiende que el DGV debe tener previamente las columnas diceñadas para aceptar el Text y los tipos

    Saludos


    • Editado Marcelo PF jueves, 2 de noviembre de 2017 22:16
    jueves, 2 de noviembre de 2017 22:15
  • Saludos Marcelo, gracias por su respuesta, se me olvidó decirle que de ese archivo sólo me interesa tomar los datos 2,3,4 y 9 de cada línea que son los campos que me interesa mostrar en el datagridview. A ver si me puede ayudar.

    Frank Cruz

    jueves, 2 de noviembre de 2017 22:33
  • Pequeño detalle je... , no hay problema, quita el segundo for, y rellena las celdas personalizadas segun el valor de row ej

     '--------------
     For i As Integer = 0 To Sep.Count - 1
                Dim row() As String = Split(Sep(i), vbTab)
                Dgv.Rows.Add()
    
                Dgv.Rows(i).Cells(0).Value = row(2)
                Dgv.Rows(i).Cells(1).Value = row(3)
                Dgv.Rows(i).Cells(2).Value = row(4)
                Dgv.Rows(i).Cells(3).Value = row(9)
            Next

    Recuerda la base 0 de las columnas

    Saludos



    • Editado Marcelo PF jueves, 2 de noviembre de 2017 22:57
    • Marcado como respuesta Frank Jarquin viernes, 3 de noviembre de 2017 0:25
    jueves, 2 de noviembre de 2017 22:56
  • Muchas gracias Marcelo, ya con su código me orienté y ya logré hacer parte del código que necesito. Saludos.

    Frank Cruz

    viernes, 3 de noviembre de 2017 0:25