2013-08-17 160 views
0

我有一個具有以下結構的CSV文件:VB.NET只讀一些細胞從CSV文件中的每一行

id,name,adress,email,age 
1,john,1 str xxxx,[email protected],19 
2,mike,2 bd xxxx,[email protected],21 
3,jeana,1 str ssss,[email protected],18 
....................... 
....................... 

我想什麼做的是讀取csv文件,跳過第一行(包含頭文件)並從每行中提取第2,3和4個數據並填充datagridview。

這是我使用的代碼,但是它帶給我所有的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 

所以有人可以告訴我該怎麼做? 謝謝。

回答

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), "") 
+0

您好,感謝您的答覆,關於閱讀每一行這一目標數據是什麼:第2,第3,第4? – OussamaLord

+0

對不起,我不明白。網格是否填充數據?你的意思是你想從網格中讀取數據嗎? – Steve

+0

嗨,是網格填充了來自csv的全部數據,但這不是我想要的,我希望它只填寫來自csv文件中每行的「名稱」,「地址」和「電子郵件」沒有「ID」,也沒有「年齡」 – OussamaLord