2013-08-17 2 views
0

J'ai un fichier csv qui a la structure suivante:VB.NET lu seulement quelques cellules pour chaque ligne du fichier 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 
....................... 
....................... 

Ce que je voudrais faire est de lire le fichier csv, passez la première line (contient des en-têtes) et extrait les 2ème, 3ème et 4ème données de chaque ligne et remplit une vue de données.

Ceci est le code que je utilise cependant il me apporte tout le contenu 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 

Alors quelqu'un peut me montrer comment faire cela? Merci.

Répondre

1

Il pourrait être simple à lire la première ligne et jetez-le, commencer ensuite de lire les données réelles de votre fichier

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 

EDIT voir votre commentaire ci-dessous, j'ai changé la ligne qui ajoutent la row pour ajouter uniquement les chaînes à la position 1,2 et 3. Ceci est bien sûr différent des colonnes ajoutées à DataGridView. Il n'est pas clair si vous voulez changer ces colonnes pour contenir seulement ces 3 champs. Si vous voulez toujours la colonne ID et AGE dans la grille, vous pouvez changer le Ajouter à

DataGridView1.Rows.Add("", currentRow(1), currentRow(2),currentRow(3), "") 
+0

Salut, merci pour la réponse, qu'en lecture que les données cibles dans chaque ligne: 2ème, 3ème, 4ème? – OussamaLord

+0

Désolé, je ne comprends pas. La grille est peuplée de données ou non? Voulez-vous dire que vous voulez lire ces données de la grille maintenant? – Steve

+0

Salut, Oui la grille est peuplée avec toutes les données de la CSV, mais ce n'est pas ce que je veux, je veux qu'il soit peuplé avec seulement "nom", "adresse" et "email" de chaque ligne présente dans le fichier csv non "id" et pas "age" – OussamaLord

Questions connexes