我需要更改以下函数,以从制表符分隔文件中读取任何想法如何执行此操作?
Public Function ConvertCsvToDatatable(ByVal ColumnNames As Boolean) As DataTable
Try
Dim dt As New DataTable
For Each columnName In getColumns(ColumnNames)
dt.Columns.Add(columnName)
Next
Dim fileReader As New StreamReader(FileName)
If ColumnNames Then
fileReader.ReadLine()
End If
Dim line As String = fileReader.ReadLine
While Not IsNothing(line)
line = line.Replace(Chr(34), "")
dt.Rows.Add(line.Split(","))
line = fileReader.ReadLine
End While
fileReader.Close()
Return dt
Catch ex As Exception
'log to file
End Try
Return Nothing
End Function
答案 0 :(得分:2)
将line.Split(",")
更改为line.Split(vbTab)
。这将允许您使用制表符作为分隔符而不是逗号。
答案 1 :(得分:2)
我可能会替换以下行:
dt.Rows.Add(line.Split(","))
使用:
dt.Rows.Add(line.Split(vbTab))
那应该在制表符分隔值上分开......
那就是说,我真的会推荐一个专门的库来做这件事,因为SCV / TSV可能相当复杂。我喜欢KBCsv。