0

我有一个具有以下结构的 csv 文件:

id,name,adress,email,age
1,john,1 str xxxx,john@gmail.com,19
2,mike,2 bd xxxx,mike@gmail.com,21
3,jeana,1 str ssss,jeana@gmail.com,18
.......................
.......................

我想做的是读取 csv 文件,跳过第一行(包含标题)并从每行中提取第二、第三和第四数据并填充数据网格视图。

这是我正在使用的代码,但它为我带来了所有 csv 内容:

DataGridView1.ColumnCount = 4
DataGridView1.Columns(0).Name = "ID"
DataGridView1.Columns(1).Name = "NAME"
DataGridView1.Columns(2).Name = "ADRESS"
DataGridView1.Columns(3).Name = "AGE"
Using MyReader As New Microsoft.VisualBasic.FileIO.TextFieldParser _
            (openFile.FileName)//the csv path

                'Specify that reading from a comma-delimited file'
                MyReader.TextFieldType = FileIO.FieldType.Delimited
                MyReader.SetDelimiters(",")
                Dim currentRow As String()
                While Not MyReader.EndOfData
                    Try
           currentRow = MyReader.ReadFields()
           With DataGridView1.Rows.Add(currentRow) 'Add new row to data gridview'
                        End With
                    Catch ex As Microsoft.VisualBasic.FileIO.MalformedLineException
                        MsgBox("Line " & ex.Message & "is not valid and will be skipped.")
                    End Try
                End While
            End Using

那么有人可以告诉我怎么做吗?谢谢。

4

1 回答 1

1

可以简单地读取第一行并将其丢弃,然后开始从文件中读取真实数据

Using MyReader As New TextFieldParser(openFile.FileName)
   MyReader.TextFieldType = FileIO.FieldType.Delimited
   MyReader.SetDelimiters(",")
   Dim currentRow As String()
   ' Read the first line and do nothing with it
   If Not MyReader.EndOfData Then
       currentRow = MyReader.ReadFields()
   End If
   While Not MyReader.EndOfData
      Try
          ' Read again the file
          currentRow = MyReader.ReadFields()
          DataGridView1.Rows.Add(currentRow(1), currentRow(2),currentRow(3)) 
      Catch ex As Microsoft.VisualBasic.FileIO.MalformedLineException
          MsgBox("Line " & ex.Message & "is not valid and will be skipped.")
      End Try
  End While
End Using

编辑看到您在下面的评论然后我更改了添加行的行以仅在位置 1,2 和 3 添加字符串。这当然与添加到 DataGridView 的列不同。目前尚不清楚是否要将这些列更改为仅包含这 3 个字段。如果您仍然想要网格中的 ID 和 AGE 列,您可以更改添加到

DataGridView1.Rows.Add("", currentRow(1), currentRow(2),currentRow(3), "") 
于 2013-08-17T14:37:16.107 回答