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 :

Récupérer et insérer données d'un fichier .csv


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Analyste Programmeur
    Inscrit en
    Mai 2011
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Analyste Programmeur

    Informations forums :
    Inscription : Mai 2011
    Messages : 45
    Par défaut Récupérer et insérer données d'un fichier .csv
    Bonjour,
    Je souhaite lire un fichier .csv et récupérer les données pour les insérer dans un dictionary.
    Plus en détail, je dispose dans mon programme d'un dictionary<Guid, String> que je veux mettre à jour selon les données se trouvant dans un fichier .csv.
    Mon problème réside dans la mise à jour de la value du dictionnaire. J'arrive bien à lire mon fichier, mais je n'arrive pas à insérer les valeurs dans mon dictionnaire...A savoir que le dictionnaire peut déjà contenir des valeurs au préalable. Il faut en quelque sorte comparer le dictionnaire avec le ficher et insérer les valeurs trouvées en conséquence.
    Donc voilà, pour résumer, je n'arrive pas à insérer les valeurs trouvées dans le fichier .csv dans mon dictionnaire.
    Merci de votre aide !

  2. #2
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2011
    Messages : 69
    Par défaut
    Bonjour Ninine,

    Tu arrives bien à lire ton fichier. Donc pour chaque ligne, tu devrais tester si le dictionnaire ne contient pas déjà la valeur. Pour cela il y a la méthode TryGetValue de la classe Dictionnary qui renvoie un booléen si la clé existe ou non, et permet de récupérer la valeur qui se trouve déjà dans le dico.

    Si la méthode renvoie true, alors la donnée se trouve déjà et tu n'as qu'à faire un monDico[maClé] = maNouvelleValeur.
    Si la méthode renvoie false, alors la donnée n'existe pas et dans ce cas tu fais un monDico.Add(maClé, maValeur).

    Si tu as encore des soucis n'hésite pas à reposer des questions!

  3. #3
    Membre averti
    Femme Profil pro
    Analyste Programmeur
    Inscrit en
    Mai 2011
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Analyste Programmeur

    Informations forums :
    Inscription : Mai 2011
    Messages : 45
    Par défaut
    En fait mon dictionnaire est un dictionary<string,dictionary<Guid,string>>
    Là en fait ça recopie toute la ligne que j'ai trouvé et pas seulement la valeur associé au Guid.
    En fait la clé de mon dictionnaire correspond à un identifiant de pays (EN,DE,ES..) et la valeur est un dictionnaire ou la clé est un id et la valeur est un mot. Le but c'est de stocker des traductions en fait. Donc le mot aura le même id dans les différentes langues, c'est juste la valeur (la traduction) qui change.
    Moi là ça me recopie toute la ligne trouvée dans le fichier, dans le mot correspondant à l'id trouvé dans la ligne, et ce dans toutes les langues. Or moi je veux que le valeur du mot, pas toute la ligne...Bon en tout cas il associe la ligne au bon mot à traduire.
    Par exemple il m'écrit "9530393e-330f-4987-80e1-62e152943271|Bonjour|Hello|Hallo|| " dans toute mes textbox où je devrais traduire "Bonjour", or moi je ne veux que le mot "Hallo" dans ma textbox correspond à l'allemand si on prend cet exemple. Dans ma textbox où on doit traduire aurevoir il me met "4ff6a5b3-514f-4aba-8332-29811bf74333|Aurevoir||||".
    Donc voilà, pour résumé, je n'arrive pas à associé la valeur trouvée dans la ligne dans la textbox correspondante.

  4. #4
    Membre émérite
    Avatar de Gurdil le nain
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2009
    Messages
    468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2009
    Messages : 468
    Par défaut
    Bonjour,

    Pourrais tu poster un aperçu de ton fichier, et un aperçu de ce que devrait contenir ta liste s'il te plait.

    Et puis apprends à utiliser la touche "Entrée", parce que c'est assez désagréable à lire.

  5. #5
    Membre averti
    Femme Profil pro
    Analyste Programmeur
    Inscrit en
    Mai 2011
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Analyste Programmeur

    Informations forums :
    Inscription : Mai 2011
    Messages : 45
    Par défaut
    Fichier .csv :
    GUID|FR|EN|DE|NL|ES
    9530393e-330f-4987-80e1-62e152943271|Bonjour|Hello|Hallo||
    4ff6a5b3-514f-4aba-8332-29811bf74333|Aurevoir||||
    436c5760-97f6-45a1-b006-aeb42bd3494f|Fin||||

    Le dictionnaire (<string, dictionary<Guid,string>)doit ici contenir :
    FR, 9530393e-330f-4987-80e1-62e152943271, Bonjour
    EN, 9530393e-330f-4987-80e1-62e152943271, Hello
    etc...

    Et sinon il y a des manières plus aimables pour me demander de mettre plus d'espace dans le message comme "Et s'il te plait, peux-tu mettre plus d'espace dans tes messages parce que c'est pas très lisible..."

  6. #6
    Membre émérite
    Avatar de Gurdil le nain
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2009
    Messages
    468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2009
    Messages : 468
    Par défaut
    Ouais, mais c'est le matin et l'amabilité n'est pas encore réveillée...

    A mon avis, le plus simple serait d'avoir un dictionnaire un peu différent, comme ceci :
    Dictionnary(Guid,Dictionnary(String, string)) :
    9530393e-330f-4987-80e1-62e152943271,(FR,Bonjour)
    Comme ça, tu testes directement la clef après la lecture et tu vérifie l'existence de la paire <code_lange,mot>.

    Je sais pas si je suis très clair (toujours le matin )

  7. #7
    Membre Expert

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    2 067
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2 067
    Par défaut
    je suis d'avis avec Gurdil le nain ta solution n'est pas la plus simple à mettre en œuvre mais voila une façon de l'exploiter:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Dictionary<string, Dictionary<Guid, string>> dico = new Dictionary<string, Dictionary<Guid, string>>();
     
                foreach (KeyValuePair<Guid, string> item in dico.SingleOrDefault(t => t.Key == "FR").Value)
                {
                    if (item.Key.ToString() == ligneCSV[0])
                    {
                        dico.SingleOrDefault(t => t.Key == "FR").Value[item.Key] = ligneCSV[1];
                    }
     
                }
    ici dico est ton dictionnaire et ligneCSV la ligne actuelle que tu lis dans ton CSV à toi de l'adapter pour que ça fonctionne comme tu le souhaite

Discussions similaires

  1. Réponses: 6
    Dernier message: 18/05/2015, 11h57
  2. Récupérer une donnée d'un fichier CSV
    Par bremer dans le forum Débuter
    Réponses: 4
    Dernier message: 28/01/2014, 16h37
  3. Réponses: 5
    Dernier message: 11/07/2010, 15h07
  4. [MySQL] Importer les données d'un fichier CSV dans une base de données
    Par joueur dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 12/11/2008, 12h59
  5. Sauvegarder les données dans un fichier CSV
    Par beb30 dans le forum MFC
    Réponses: 5
    Dernier message: 08/03/2006, 14h06

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