Vb.net 将函数更改为将制表符分隔的文件读入数据表?
我需要改变下面的函数,从一个制表符分隔的文件读取任何想法如何做到这一点Vb.net 将函数更改为将制表符分隔的文件读入数据表?,vb.net,datatable,Vb.net,Datatable,我需要改变下面的函数,从一个制表符分隔的文件读取任何想法如何做到这一点 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)
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
将
line.Split(“,”)更改为line.Split(vbTab)
。这将允许您使用制表符作为分隔符,而不是逗号。将line.Split(“,”
更改为line.Split(vbTab)
。这将允许您使用制表符作为分隔符,而不是逗号。我可能会替换以下行:
dt.Rows.Add(line.Split(","))
与:
dt.Rows.Add(line.Split(vbTab))
应该根据制表符分隔的值进行拆分
也就是说,我真的建议使用一个专门的库来实现这一点,因为SCV/TSV可能相当复杂。我喜欢。我可能会替换以下行:
dt.Rows.Add(line.Split(","))
与:
dt.Rows.Add(line.Split(vbTab))
应该根据制表符分隔的值进行拆分
也就是说,我真的建议使用一个专门的库来实现这一点,因为SCV/TSV可能相当复杂。我喜欢。\t
在VB.NET中不起作用。使用ControlChars.Tab
或vbTab
。是的,我刚刚意识到我在用C#思考。谢谢你指出这一点。\t
在VB.NET中不起作用。使用ControlChars.Tab
或vbTab
。是的,我刚刚意识到我在用C#思考。感谢您指出这一点。内置于.NET框架中的TextFieldParser
类支持读取CSV和TSV。我隐约记得,在处理复杂的CSV时,KbCsv库具有优越性,其中列中包含逗号……我毫不怀疑。如果没有其他功能的话,TextFieldParser
的公共接口很笨重,这使得它很难使用。我从来没有听说过KBCsv,但很容易想象它比微软的要好。然而,有时使用内置类是很好的,当它们可用时,只是为了避免额外的第三方依赖关系。内置到.NET framework中的TextFieldParser
类支持读取CSV和TSV。我隐约记得,KbCsv库在处理复杂的CSV时具有优越性,列中包含逗号…我不怀疑。如果没有其他功能的话,TextFieldParser
的公共接口很笨重,这使得它很难使用。我从来没有听说过KBCsv,但很容易想象它比微软的要好。然而,有时使用内置类(当它们可用时)是很好的,只是为了避免额外的第三方依赖关系。