CSVファイルを読み取ってデータテーブルを作成する小さなプログラムがあります。要件の 1 つは、コンマが引用符で囲まれている場合、コンマ (名前などのコンマ) を無視することです。例。
Name, Age, Location
"Henderson, David", 32, London
John Smith, 19, Belfast
プログラムは Henderson の後のカンマを無視し、Henderson, David を 1 つのフィールドとして読み取る必要があります。私の現在のコードは、最後に余分な列を追加するこの仕事を行うことができません。どうすればそれを達成できますか?解決策は、引用符の間のコンマを置き換えるべきではありません。ありがとう。
私の現在のコード。
Public Function BuildDataTable() As DataTable
Dim myTable As DataTable = New DataTable("MyTable")
Dim i As Integer
Dim myRow As DataRow
Dim fieldValues As String()
Dim myReader As StreamReader = New StreamReader(_fileFullPath, Encoding.GetEncoding("iso-8859-1"))
Try
fieldValues = myReader.ReadLine().Split(_seperator)
'Create data columns accordingly
If _hasheader = False Then
For i = 0 To fieldValues.Length() - 1
myTable.Columns.Add(New DataColumn("Column(" & i & ")"))
Next
Else
'if the file has header, take the first row as header for datatable
For i = 0 To fieldValues.Length() - 1
myTable.Columns.Add(New DataColumn(fieldValues(i).Replace(" ", "")))
Next
End If
myRow = myTable.NewRow
If _hasheader = False Then
For i = 0 To fieldValues.Length() - 1
myRow.Item(i) = fieldValues(i).ToString
Next
myTable.Rows.Add(myRow)
End If
While myReader.Peek() <> -1
fieldValues = myReader.ReadLine().Split(_seperator)
myRow = myTable.NewRow
For i = 0 To fieldValues.Length() - 1
myRow.Item(i) = fieldValues(i).Trim.ToString
Next
If Not csv2xml.AreAllColumnsEmpty(myRow) = True Then
myTable.Rows.Add(myRow)
End If
End While
Catch ex As Exception
End Try
End Function