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

C# Discussion :

Problème de lecture d'un fichier CSV via DataSet


Sujet :

C#

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations forums :
    Inscription : Octobre 2012
    Messages : 19
    Points : 19
    Points
    19
    Par défaut Problème de lecture d'un fichier CSV via DataSet
    Bonjour,

    J'ai un petit problème plutôt gênant lorsque je souhaite lire mes fichiers CSV.
    J'utilise OLEDB pour extraire mes données dans un DataSet pour faciliter la lecture. Cependant lorsque j'essaye de lire mes valeurs de mes points demi-heures, je me retrouve avec des DateTime aberrants du type "31/12/1899 00:00:00" au lieu de mes double. J'ai essayé de jouer avec les "Extended Properties" de OLEDB (HDR=YES/NO, IMEX=0/1) mais pas de changement.

    Voici un extrait de mon fichier CSV :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Date;EDP;Acteur;Type réserve;Programme;00h30;01h00;01h30;02h00;02h30;03h00;02h30 B;03h00 B;03h30;04h00;04h30;05h00;05h30;06h00;06h30;07h00;07h30;08h00;08h30;09h00;09h30;10h00;10h30;11h00;11h30;12h00;12h30;13h00;13h30;14h00;14h30;15h00;15h30;16h00;16h30;17h00;17h30;18h00;18h30;19h00;19h30;20h00;20h30;21h00;21h30;22h00;22h30;23h00;23h30;24h00;
    01/11/14;UNIT1;ENT1;PRIMAIRE;PAJ-1;0,0;0,0;0,0;0,0;0,0;0,0;;;0,0;0,0;0,0;0,0;0,0;0,0;0,0;0,0;0,0;0,0;0,0;0,0;0,0;0,0;0,0;0,0;0,0;0,0;0,0;0,0;0,0;0,0;0,0;0,0;0,0;0,0;0,0;0,0;0,0;0,0;0,0;0,0;0,0;0,0;0,0;0,0;0,0;0,0;0,0;0,0;0,0;0,0;
    01/11/14;UNIT1;ENT1;PRIMAIRE;PAJ;0,0;0,0;0,0;0,0;0,0;0,0;;;0,0;0,0;0,0;0,0;0,0;0,0;0,0;0,0;0,0;0,0;0,0;0,0;0,0;0,0;0,0;0,0;0,0;0,0;0,0;0,0;0,0;0,0;0,0;0,0;0,0;0,0;0,0;0,0;0,0;0,0;0,0;0,0;0,0;0,0;0,0;0,0;0,0;0,0;0,0;0,0;0,0;0,0;
    01/11/14;UNIT1;ENT1;PRIMAIRE;PAJ Hors Fortuit;0,0;0,0;0,0;0,0;0,0;0,0;;;0,0;0,0;0,0;0,0;0,0;0,0;0,0;0,0;0,0;0,0;0,0;0,0;0,0;0,0;0,0;0,0;0,0;0,0;0,0;0,0;0,0;0,0;0,0;0,0;0,0;0,0;0,0;0,0;0,0;0,0;0,0;0,0;0,0;0,0;0,0;0,0;0,0;0,0;0,0;0,0;0,0;0,0;
    J'ai trouvé une bidouille palliative, mais elle implique la modification du fichier avant lecture (remplacement des virgules par des points). C'est vraiment du dernier recours, mais je n'ai pas envie d'en arriver là

    Y a-t-il une solution à mon problème avec OLEDB sans avoir a modifier le fichier au préalable ?

  2. #2
    Membre régulier
    Homme Profil pro
    Architecte technique
    Inscrit en
    Avril 2003
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Avril 2003
    Messages : 79
    Points : 107
    Points
    107
    Par défaut
    Salut frearnaud,
    J'imagine que c'est lié à ta ligne d'en-tête!
    Lorsque ton CSV est mappé dans ton DataSet, il doit se baser sur l'en-tête pour determiner le type.
    As tu essayé de renommer des noms de colonnes 00h30, 01h30... pour ne pas avoir un format horaire, vois si tu as toujours le problème ?

  3. #3
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations forums :
    Inscription : Octobre 2012
    Messages : 19
    Points : 19
    Points
    19
    Par défaut
    Salut euyeusu, merci pour ta réponse.
    Ça ne change malheureusement rien, je retombe encore sur des DateTime

    J'ai l'impression que tout mon problème vient des virgules, car si je les remplace par des points, je n'ai aucun problème... Mais ça me fait modifier mon fichier, ce que j'aimerais éviter.

  4. #4
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    Cela signifie probablement que tu vas devoir mettre en oeuvre un parser un peu plus personnalisable. Il existe une classe dans le .NET Framework qui permet de le faire très simplement : TextFieldParser. Pour l'utiliser il faut rajouter une référence dans ton projet vers la DLL "Microsoft.VisualBasic.dll". Tu peux l'utiliser dans un projet C# sans problème.
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

Discussions similaires

  1. Problème d'import de fichier CSV via LOAD DATA
    Par Aenur56 dans le forum Requêtes
    Réponses: 1
    Dernier message: 05/06/2012, 15h03
  2. Problème de lecture d'un fichier .csv.
    Par Azuchi dans le forum VB 6 et antérieur
    Réponses: 23
    Dernier message: 20/12/2010, 11h45
  3. Problème de split lors d'une lecture d'un fichier csv
    Par Mawinette dans le forum Entrée/Sortie
    Réponses: 7
    Dernier message: 25/03/2009, 11h48
  4. Problème de lecture dans un fichier xml
    Par Pyra dans le forum Langage
    Réponses: 2
    Dernier message: 18/12/2005, 00h13
  5. Réponses: 1
    Dernier message: 20/10/2005, 10h32

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