vb.net - 在 VB.net 中将 csv 数据转换为 DataTable,从第 0 行捕获列名

标签 vb.net csv import datatable

我改编了@tim-schmelter 对问题 convert csv data to DataTable in VB.net 的回答中的代码(见下文)

我想在 csv 文件第 0 行的列标题中解析

DT|Meter Number|Customer Account Number|Serial Number|Port...

但我没有任何运气试图弄清楚如何做到这一点。任何建议将不胜感激。

Public Function csvToDatatable_2(ByVal filename As String, ByVal separator As String)
    '////////////////////////////////////////
    'Reads a selected txt or csv file into a datatable 
    'based on code from  http://stackoverflow.com/questions/11118678/convert-csv-data-to-datatable-in-vb-net
    '////////////////////////////////////////
    Dim dt As System.Data.DataTable

    Try
        dt = New System.Data.DataTable
        Dim lines = IO.File.ReadAllLines(filename)
        Dim colCount = lines.First.Split(separator).Length

        For i As Int32 = 1 To colCount
            dt.Columns.Add(New DataColumn("Column_" & i, GetType(String)))
        Next

        For Each line In lines
            Dim objFields = From field In line.Split(separator)
            Dim newRow = dt.Rows.Add()
            newRow.ItemArray = objFields.ToArray()
        Next

    Catch ex As Exception
        Main.Msg2User(ex.Message.ToString)
        Return Nothing

    End Try

    Return dt

End Function

最佳答案

只需遍历文件的所有行。使用 bool 值检查第一行。

Public Function csvToDatatable_2(ByVal filename As String, ByVal separator As String)
 Dim dt As New System.Data.DataTable
 Dim firstLine As Boolean = True
 If IO.File.Exists(filename) Then
   Using sr As New StreamReader(filename) 
     While Not sr.EndOfStream
       If firstLine Then
         firstLine = False
         Dim cols = sr.ReadLine.Split(separator)
         For Each col In cols 
           dt.Columns.Add(New DataColumn(col, GetType(String)))
         Next
       Else
         Dim data() As String = sr.Readline.Split(separator)
         dt.Rows.Add(data.ToArray)
       End If
      End While
   End Using
 End If
 Return dt
End Function

关于vb.net - 在 VB.net 中将 csv 数据转换为 DataTable,从第 0 行捕获列名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30201592/

相关文章:

javascript - NewtonSoft JSON 转换器序列化但执行起来很奇怪。怎么修?

php - 通过批处理 API 将窗口 csv 关联到 drupal 节点

Kotlin 未解析对本地包的引用

c# - 强制中断程序中抛出的任何异常

c# - 如何在 .NET 中创建 shell 样式的标题栏按钮

vb.net - 如何使控件可在不同项目中重复使用?

bash - 在 csv 文件中查找列的索引号,但命令不显示结果?

asp.net-mvc - 使用 CSVHelper 将流输出到浏览器

python - 类名与文件/模块名相同导致继承问题

mysql - 如何将Excel文件导入MySQL Workbench?