Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 将函数更改为将制表符分隔的文件读入数据表?_Vb.net_Datatable - Fatal编程技术网

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,但很容易想象它比微软的要好。然而,有时使用内置类(当它们可用时)是很好的,只是为了避免额外的第三方依赖关系。