J'ai ce code pour lire un fichier CVS. Il lit chaque ligne, divise chaque ligne par le délimiteur ',' et stocke les valeurs des champs dans le tableau 'strline()'.Lire uniquement des champs particuliers du fichier CSV dans vb.net
Comment extraire uniquement les champs obligatoires du fichier CSV?
Par exemple, si j'ai un fichier CSV comme
type, groupe, Non, Non Séquence, Row Non, Date (saut de ligne) 0, Admin, 3,345678,1,26052010 (saut de ligne) 1 , Personnel, 5,78654,3,26052010
I N'a besoin que de la valeur des colonnes Groupe, Numéro de séquence et date.
Merci d'avance pour vos idées.
Dim myStream As StreamReader = Nothing
' Hold the Parsed Data
Dim strlines() As String
Dim strline() As String
Try
myStream = File.OpenText(OpenFile.FileName)
If (myStream IsNot Nothing) Then
' Hold the amount of lines already read in a 'counter-variable'
Dim placeholder As Integer = 0
strlines = myStream.ReadToEnd().Split(Environment.NewLine)
Do While strlines.Length <> -1 ' Is -1 when no data exists on the next line of the CSV file
strline = strlines(placeholder).Split(",")
placeholder += 1
Loop
End If
Catch ex As Exception
LogErrorException(ex)
Finally
If (myStream IsNot Nothing) Then
myStream.Close()
End If
End Try
+1 string.split n'est pas seulement faux, c'est aussi très lent par rapport à une machine d'état –
+1 pour avoir crié un avertissement important à l'OP. –
Je suis d'accord que c'est un bon avertissement sur String.Split et "etc en général, mais tout dépend de l'origine des données et de la spécification.La plupart du temps j'ai lu des fichiers CSV et utilisé String. Split, si j'avais fini avec trop de colonnes j'avais échoué le fichier et dit au producteur du fichier de corriger ses données –