Я импортирую CSV-файл в таблицу данных в приложении vb.net. Когда я импортирую файл csv, мой код добавляет дополнительный набор «вокруг моих дат. Это вызывает ошибку, когда у моего входного массива больше значений, чем столбцов в моей таблице данных. Как удалить лишнее» с помощью оператора split или другогоway.
Исходная строка из CSV-файла
10411392601,Josue Smolcic 32278,10411392601,ProJet 7000,Not Burned-In,0.0,,0,, ,10411392601 was started on 2019-10-02 11:41:13.
This Machine is Pending and still requires a passing inspection in Assembly / Integration. See Inspection Record #12367.,1.0,,This Machine is Pending and still requires a passing inspection in Assembly / Integration.
,"Oct 02, 2019","Oct 02, 2019 11:42 AM","Oct 02, 2019 11:41 AM",Pending, (2019-10-02 11:42:11)
Когда мой код запускается, когда я добавляю часы в финальную переменную, я получаю это.
"10411392601,Josue Smolcic 32278,10411392601,ProJet 7000,Not Burned-
In,0.0,,0,, ,10411392601 was started on 2019-10-02 11:41:13. This Machine is Pending and still requires a passing inspection in Assembly / Integration. See Inspection Record #12367.,1.0,,This Machine is Pending and still requires a passing inspection in Assembly / Integration.
,""Oct 02, 2019"",""Oct 02, 2019 11:42 AM"",""Oct 02, 2019 11:41 AM"",Pending, (2019-10-02 11:42:11)"
ПросмотрВ нижней части обоих примеров, которые вы видите около октябрьских дат, есть дополнительный набор скобок. Как мне удалить их?
Вот мой код VB.
Private Sub MergetblAllMachines()
Dim path As String = "Pathway.csv"
Dim f As Integer = 0
Dim myreader As New StreamReader(path)
Dim fullfilestr As String = myreader.ReadToEnd
myreader.Close()
myreader.Dispose()
Dim lines As String() = fullfilestr.Split(ControlChars.Lf)
Dim recs As New DataTable()
Dim sarr As String() = lines(0).Split(","c)
For Each s As String In sarr
f = f + 1
recs.Columns.Add(New DataColumn())
' MsgBox(s)
Next
Dim row As DataRow
Dim finalline As String = " "
For Each line As String In lines
row = recs.NewRow()
finalline = line.Replace(Convert.ToString(ControlChars.Cr), "")
row.ItemArray = finalline.Split(","c)
recs.Rows.Add(row) '-----Here is where my code bugs out------
Next
end sub
-
-
-
---------------------- Обновлено (правильный код) -----------------
попыткичтобы использовать класс textfieldparser, я удалил двойные кавычки, но теперь мне трудно правильно разбить строки. Вот мой обновленный код.
Dim path As String = "path.csv"
Dim f As Integer = 0
Dim myreader As New StreamReader(path)
Dim fullfilestr As String = myreader.ReadToEnd
myreader.Close()
myreader.Dispose()
Dim lines As String() = fullfilestr.Split(ControlChars.Lf)
Dim recs As New DataTable()
Dim sarr As String() = lines(0).Split(","c)
For Each s As String In sarr
f = f + 1
recs.Columns.Add(New DataColumn())
' MsgBox(s)
Next
Dim SplitRow As String = Nothing
Using myreader1 As New Microsoft.VisualBasic.FileIO.TextFieldParser("path.csv")
myreader1.TextFieldType = Microsoft.VisualBasic.FileIO.FieldType.Delimited
myreader1.Delimiters = New String() {","}
Dim currentrow As String()
While Not myreader1.EndOfData
Try
currentrow = myreader1.ReadFields()
recs.Rows.Add(currentrow)
Catch ex As Exception
End Try
End While
End Using
После выполнения этого все все строки находятся в первой ячейке каждой строки в таблице данных. Мне нужно разделить запятые, а затем заполнить остальные строки. Примечание: Recs - это дата, в которую я пытаюсь поместить все.