Читать Файл .txt отделенные запятой

Из-за помощи я нуждаюсь в том, чтобы переместить эти дрова, отделенные запятой в datatable.

это линии. в конце линии также расставание - одно из-за запятой.

000000000000056680640,07/07/2016,1606169715409,000000933.00,DB,EXI IB INFOTEP 501606169715409  RD$.00,409,0000000000000,
000000000000056680640,08/07/2016,0000000000004,000000044.02,DB,PAGO IMPUESTO 0.15  DGII 4 TRANS POR $ 29348.29 Del 01/07/2016 Al 07/07/2016,524,0000000000000,
000000000000056680640,11/07/2016,0000777517509,000007000.00,CR,IB MB desde 777517509 ,201,0000000000000,
000000000000056680640,13/07/2016,0000120000002,000050490.00,CR,DEPOSITO CHEQUE Y EFECTIVO,108,0000120000002,
000000000000056680640,13/07/2016,0160438491157,000008564.40,DB,EXI IB DGII 160438491157  RD$.00,409,0000000000000,
000000000000056680640,13/07/2016,0000000000000,000000075.00,DB,COMISION PAGO IMPUESTO X IB  RD$.00,524,0000000000000,
000000000000056680640,13/07/2016,0003579084854,000001851.27,DB,EXI IB DGII 3579084854  RD$.00,409,0000000000000,
1
задан 15.06.2017, 23:06
2 ответа

Обычно есть проблема с файлами, отделенными запятыми, и состоит в том, что это формат, который не стандартизирован, и различные люди (и системы) принимают различные вещи в деталях.

В словах статьи Comma-separated оцени Wikipedia на английском, переведенный свободно:

Формат файла CSV не стандартизирован. Основная мысль отделять поля с запятой - ясная, но эта идея осложняет, когда данные о полях в свою очередь содержат запятые или, даже, завершения линии.

Различные осуществления CSV могут не выносить вышеупомянутые данные в полях, или могут использовать кавычки, чтобы заключать поле. Кавычки не решают все: Какие-то поля могли бы содержать также кавычки, так что некие осуществления CSV могли бы включать символы или последовательности утечки.

В общем моя рекомендация состоит в том, чтобы делать надежное осуществление в любой системе, что в будущем избавит тебе от краски стыда и головных болей. Из-за фортуны, у тебя нет, почему писать код, который берется за детали.

Ты можешь основываться, например, на классе TextFieldParser

Маленький пример использования мог бы быть:

Using MyReader As New Microsoft.VisualBasic.FileIO.
    TextFieldParser("c:\logs\bigfile")

    MyReader.TextFieldType = 
        Microsoft.VisualBasic.FileIO.FieldType.Delimited
    MyReader.Delimiters = New String() {","}
    MyReader.CommentTokens = New String() {""}
    MyReader.HasFieldsEnclosedInQuotes = True
    Dim currentRow As String()
    'Loop through all of the fields in the file. 
    'If any lines are corrupt, report an error and continue parsing. 
    While Not MyReader.EndOfData
        Try
            currentRow = MyReader.ReadFields()

            Dim newRow = dTable.Rows.Add()
            newRow.ItemArray = currentRow

        Catch ex As Microsoft.VisualBasic.FileIO.MalformedLineException
            MsgBox("Line " & ex.Message & 
            " is invalid.  Skipping")
        End Try
    End While
End Using
2
ответ дан 24.11.2019, 13:36

Ты можешь находить пример в documentaciГіn , и это важное знание, что из-за convenciГіn у архива .CSV (Comma separated оценил) должна быть эта структура для sea считаемый как таковой:

a, Elenasys , 12345
b, Ronnie, 12345
c, Doru, 534543
d, Hassan, 6234234
e, Haris K., 78345345

Восток serГ - в пример как превращать стоимость, полученную от .csv в DataTable

    Dim lines = IO.File.ReadAllLines("C:\path\archivo.csv")
    Dim dTable = New DataTable
    Dim numeroColumnas = lines.First.Split(","c).Length
    For i As Int32 = 1 To numeroColumnas
        'Agrega columnas a DataTable.
        dTable.Columns.Add(New DataColumn("Columna_" & i, GetType(String)))
        Debug.Print("Columna_" & i)
    Next

    '**********************
    For Each line In lines
        Dim objFields = From field In line.Split(","c)
        Dim newRow = dTable.Rows.Add()
        newRow.ItemArray = objFields.ToArray()
        Debug.Print("columna_1: " & objFields.ToArray().GetValue(0).ToString)
        Debug.Print("columna_2: " & objFields.ToArray().GetValue(1).ToString)
        Debug.Print("columna_3: " & objFields.ToArray().GetValue(2).ToString)
    Next

    Debug.Print("finaliza!")
1
ответ дан 24.11.2019, 13:36
  • 1
    большое спасибо @Elenasys из-за твоего ответа я только что протестировал твой пример и я функция и # 243; верно – JOSE ANGEL RAMIREZ HERNANDEZ 20.08.2016, 03:19
  • 2
    Этот ответ правилен, если известно, что CSV - простые , для implementaci и # 243; n м и # 225; s надежная, смотри мой ответ на этот же самый вопрос. – jachguate 20.08.2016, 04:21