IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Traitement fichier .csv avec valeurs manquantes


Sujet :

VB.NET

  1. #1
    Membre habitué
    Homme Profil pro
    Etudiant
    Inscrit en
    Octobre 2012
    Messages
    154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Etudiant
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2012
    Messages : 154
    Points : 167
    Points
    167
    Par défaut Traitement fichier .csv avec valeurs manquantes
    Bonjour à tous,

    Je récupère des données d'un fichier CSV. Le souci, c'est que des données peuvent être présentes ou non, voici un exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Line, 1
    Flow, 1
    Flag,
    Arrow,
     
    -----
    ... etc ...
    -----
     
    Line, 2
    Flow,
    Flag, R
    Arrow, 3
    Ca me pose un peu de problème pour l'extraction. Je ne sais pas comment faire pour poser les conditions vu que je dois récuperer tous les champs, meme ceux qui n'ont pas de valeurs.

    Voici le début de ma méthode :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    Private Sub ExtractData()
     
         Try
              Dim sr As New StreamReader(_path)
              Dim currentLine As String
     
              While Not (sr.EndOfStream)
                   currentLine = sr.ReadLine()
                   Dim splitedLine As String() = currentLine.Split(New Char() {","c})
                   Dim lineNumber As Integer
     
                   If currentLine.Contains("Line") Then
                        If splitedLine.Length > 1 Then
                             'On recupere le champs + la valeur
                        Else
                             'On recupere que le champs
                        End If
                   End If
     
                   If currentLine.Contains("Flow") Then
                        If splitedLine.Length > 1 Then
                             'On recupere le champs + la valeur
                        Else
                             'On recupere que le champs
                        End If
                   End If
     
              End While
         Catch ex As Exception
              Console.WriteLine(ex.Message + " " + _path)
         End Try
     
    End Sub
    Je trouve ca vraiment lourd surtout que j'ai environ 200 champs à traiter ..

    Est-ce que vous voyez un moyen d’optimiser cela ?

    Merci,

    Jah

  2. #2
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    un csv utilise ; comme délimiteur, je n'en vois pas ici ...

    quelle est la structure détaillée et fixe ?
    une ligne vide entre chaque objet ?
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre habitué
    Homme Profil pro
    Etudiant
    Inscrit en
    Octobre 2012
    Messages
    154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Etudiant
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2012
    Messages : 154
    Points : 167
    Points
    167
    Par défaut
    Bonjour Pol63,

    Le fichier a une extension en .csv et n'a pas de délimiteur ;

    Que veux tu dire par la structure détaillée et fixe ?

    Entre chaque objet (début "Line"), il y a juste un retour à la ligne comme pour les valeurs précédentes. En simplifiant, les .csv se présentent comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Line, 1
    Flow, 1
    Flag,
    Arrow,
    Line, 2
    Flow,
    Flag, R
    Arrow, 3
    Il y a d'autres valeurs entre Arrow et Line,2 mais c'est toujours la même facon de faire

  4. #4
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    Combien de "propriétés" par objet ?
    Quels en sont les types (string et integer nullable entre autres ?)
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

Discussions similaires

  1. Réponses: 4
    Dernier message: 26/03/2014, 15h30
  2. Traitement de fichiers CSV avec Access
    Par seb68 dans le forum VBA Access
    Réponses: 12
    Dernier message: 09/11/2008, 12h50
  3. Charger un Fichier CSV avec traitement
    Par Iphelias dans le forum SQL Procédural
    Réponses: 9
    Dernier message: 06/08/2007, 13h53
  4. Traitement fichier excel avec vb6
    Par couscoussier dans le forum VB 6 et antérieur
    Réponses: 12
    Dernier message: 12/09/2006, 16h15
  5. [CSV] Affichage d'un fichier csv avec pagination
    Par arnoweb dans le forum Langage
    Réponses: 4
    Dernier message: 26/07/2006, 15h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo