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 :

faire un graphique en utilisant les valeurs d'un datagridview


Sujet :

C#

  1. #21
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2022
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2022
    Messages : 48
    Points : 1
    Points
    1
    Par défaut
    je ne comprend pas comment je dois faire pour alimenter ma liste avec mon document csv, sachant que ce document ne sera jamais "complet" car toutes les 30 minutes ou une heure il y aura des nouvelles données..
    j'ai une autre question pour mes graphique est ce que c'est possible de prendre par exemple que les données comprise entre le 1er et le 30 de chaque mois ? car au début je voulais prendre toute la liste mais du coup on aurait eu les données de toute l'année

  2. #22
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 673
    Points : 5 257
    Points
    5 257
    Par défaut
    Comment tu alimentais ta grille ?
    J'ai dans l'idée que tu dois pouvoir partir du code qui alimentait ta grille et l'adapter.

    Essaie et poste ce que tu as tenté si tu n'y parviens pas.

  3. #23
    Membre habitué
    Homme Profil pro
    Passioné ...
    Inscrit en
    Juillet 2020
    Messages
    145
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Allier (Auvergne)

    Informations professionnelles :
    Activité : Passioné ...
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2020
    Messages : 145
    Points : 158
    Points
    158
    Par défaut
    Autre question : Ton document csv te donne une ligne de mesures à la fois ? ou reprend il l'ensemble des mesures à chaque envoi ?

  4. #24
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2022
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2022
    Messages : 48
    Points : 1
    Points
    1
    Par défaut
    Je vais essayer de faire ça alors mais là j'ai un bug d'affichage qui vient d'apparaître j'essaye de le régler et après je fais ma grille

    Pour mon csv, toutes les 30 minutes je recois les nouvelles valeurs si tout ce passe bien

  5. #25
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2022
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2022
    Messages : 48
    Points : 1
    Points
    1
    Par défaut
    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
                if (dataGridView1.Rows.Count > 0)
                {
                    dataGridView1.Rows.Clear();
     
     
     
                    string path = "C:/Users/Lucas/Documents/test.csv";
                    string[] contenu = File.ReadAllLines(path);
                    if (contenu.Count() > 0)
                    {
                        for (int i = 1; i < contenu.Count(); i++)
                        {
                            // On découpe la ligne à chaque fois qu'il y a le caractère ";"
                            string[] rowData = contenu[i].Split(';');
                            dataGridView1.Rows.Add(rowData[0], rowData[1], rowData[2], rowData[3], rowData[4], rowData[5], rowData[6], rowData[7], rowData[8], rowData[9], rowData[10]);
     
                        }
     
                    }
                    dataGridView1.EnableHeadersVisualStyles = false;
                    dataGridView1.ColumnHeadersDefaultCellStyle.BackColor = Color.FromArgb(196, 211, 249);
                }
    du coup je voulais utilisé ce même code je me suis dis qu'on pouvait dire par exemple que rowData[0] était égale a la liste date et ensuite de suite mais je sais pas si en faisant ca est ce que la liste va t elle etre mise a jour automatiquement ou il faudrait plutot que je crée d'abord la liste puis j'affiche la liste dans la colonne1 etc ?

  6. #26
    Membre habitué
    Homme Profil pro
    Passioné ...
    Inscrit en
    Juillet 2020
    Messages
    145
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Allier (Auvergne)

    Informations professionnelles :
    Activité : Passioné ...
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2020
    Messages : 145
    Points : 158
    Points
    158
    Par défaut
    Bonjour,

    Oui, c'est bien pour remplir ta datagridview. Effectivement, chaque donnée va aller dans sa colonne, du moment que l'ordre est le même ...
    Par contre, tu lis avec ReadAllLine : es tu sûr qu'une seule ligne de données est dans le fichier ? si oui pas de problème mais s'il y a deux lignes ( ou plus ) il va falloir trouver de quoi séparer les deux lignes puis alimenter 2 rows ( ou plus ) ...

  7. #27
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2022
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2022
    Messages : 48
    Points : 1
    Points
    1
    Par défaut
    L'ordre de mes colonnes dans mon fichier CSV est le même que celle de mon datagridview donc c'est bon non ?
    Et oui le fichier aura dèjà des mesures il ne sera jamais vide et elle vont arrivé ligne par ligne car toute les 30mn j'ai une nouvelle mesure d'humidité, température ...

  8. #28
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 673
    Points : 5 257
    Points
    5 257
    Par défaut
    L'idée est d'utiliser le même concept pour remplir une collection de données.
    Donc, la lecture du fichier se fera de la même façon.

    Il s'agit ici
    1. de créer une collection de données (une List<donnees> fera très bien l'affaire)
    2. de reprendre les lignes 7 à 19 en remplaçant la ligne 15 par l'ajout d'une instance de ta classe à la collection de données.
    2.a => créer l'instance de ta classe données avec "new"
    2.b => faire matcher les propriétés l'objet de données obtenu avec les rowData[x]
    3.c => ajouter l'objet de données à la liste avec la méthode Add de cette liste (la List<donnees>)

    Et une fois la collection remplie, l'affecter en tant que DataSource de dataGridView1.
    Cette même collection servira à créer ton graphique.

    Edit :
    L'affectation du datasource aura potentiellement un autre effet, celui de changer le titre des colonnes.
    Pour palier à cela, il suffit de mettre un attribut DisplayName au dessus de chaque propriété.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    publc class donnees
    {
       [DisplayName("Température Intérieure")]
       public Double TemperatureInterieure { get; set; }
     
       ....
    }

  9. #29
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2022
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2022
    Messages : 48
    Points : 1
    Points
    1
    Par défaut
    re bonjour,
    c'est un peu bête comme question mais je ne comprend pas ou je suis sensé placer le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
           string path = "C:/Users/Lucas/Documents/test.csv";
                    string[] contenu = File.ReadAllLines(path);
                    if (contenu.Count() > 0)
                    {
                        for (int i = 1; i < contenu.Count(); i++)
                        {
                            // On découpe la ligne à chaque fois qu'il y a le caractère ";"
                            string[] rowData = contenu[i].Split(';');
                            dataGridView1.Rows.Add(rowData[0], rowData[1], rowData[2], rowData[3], rowData[4], rowData[5], rowData[6], rowData[7], rowData[8], rowData[9], rowData[10]);
     
                        }
     
                    }
    ensuite pour créer ma liste je l'ai mis au tout début sur la page ou se situe mon datagridview mais je ne sais pas si c'est le bonne endroit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    List<Donnees> list = new List<Donnees>();
    j'ai juste mis ça.
    Pour l'instant j'ai que ça comme question ..
    Merci encore pour votre aide

  10. #30
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 673
    Points : 5 257
    Points
    5 257
    Par défaut
    Tu dois remplacer la ligne 9
    par quelque chose de ce genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    list.Add(new Donnees { TemperatureInterieure = Decimal.Parse(rowData[0]), TemperaturExterieure  = Decimal.Parse(rowData[1], ...,  Heure = DateTime.ParseExact(rowData[1], "HH:mm:ss", new CultureInfo("fr-FR")); })
    Pour l'emplacement de list, cela va dépendre de comment tu vas l'utiliser.
    Pour l'instant elle sert au remplissage de la grille, alors tu peux la déclarer dans cette fenêtre.
    Mais tu prévois également de l'afficher dans un graphique.
    Si ce graphique est accessible uniquement depuis la fenêtre où se trouve la grille, alors tu peux laisser liste où elle est, et te contenter de la passer à la fenêtre qui affiche le graphique.
    Si ce graphique est accessible sans charger la grille il faut déclarer la liste à un autre endroit.

    Par contre, il est préférable de ne pas l'appeler simplement "list" car c'est un terme trop générique et il peux facilement être confondu avec List qui est un nom de type.

  11. #31
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2022
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2022
    Messages : 48
    Points : 1
    Points
    1
    Par défaut
    d'accord merci je vais changer le nom de la liste et oui mon graphique est sur une autre form du coup je vais devoir déclarer ma liste dans lautre form si j'ai bien suivi.
    Et du coup tout mon code pour afficher le csv dans le dgv je dois le laisser?

  12. #32
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 673
    Points : 5 257
    Points
    5 257
    Par défaut
    Pour l'endroit de la déclaration de la liste, cela dépend.
    Est ce que la fenêtre du graphique peut être lancée sans passer par celle de la grille ?
    Est-ce que d'autres fenêtre auront besoin de ces données ?

    Si la réponse à ces deux question est oui, alors il faut déclarer cette liste dans un endroit à part et accessible par les deux fenêtres.
    Sinon, tu peux laisser la liste où elle est.

    Le code pour afficher la grille n'a plus de raison d'être.
    A la place il suffit de placer cette ligne après la boucle qui remplit la liste.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dataGridView1.Datasource = list; // <= remplacer list par le nouveau nom que tu as choisis

  13. #33
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2022
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2022
    Messages : 48
    Points : 1
    Points
    1
    Par défaut
    oui plusieurs fenêtre on besoin de ces données et on n'est pas obligé de passer par la fenêtre du dgv pour y accéder.
    Je dois mettre ma list dans la page d'accueil, la page qui s'ouvre lorsque l'on lance le logiciel ?

  14. #34
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2022
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2022
    Messages : 48
    Points : 1
    Points
    1
    Par défaut
    Nom : eeee.png
Affichages : 124
Taille : 8,4 Ko
    quand j'utilise Decimal.Parse(rowData[0]) j'ai une erreur je ne comprend comment la résoudre

  15. #35
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2022
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2022
    Messages : 48
    Points : 1
    Points
    1
    Par défaut
    j'ai remplacé Double par Decimal et les erreurs sont parti je sais pas si ça va fonctionner mais d'après moi ça devrait être bon ..
    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
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
     
    namespace Relais_R3X
    {
        public class Donnees
        {
     
            public Decimal TemperatureInterieur { get; set; }
            public Decimal TemperatureExterieur { get; set; }
            public Decimal HumiditeInterieur { get; set; }
            public Decimal HumiditeExterieur { get; set; }
            public Decimal Enssolleillement { get; set; }
            public Decimal TemperatureBatterie { get; set; }
            public Decimal TensionBatterie { get; set; }
            public Decimal DirectionDuVent { get; set; }
            public Decimal VitesseDuVent { get; set; }
            public DateTime Date { get; set; }
            public DateTime Heure { get; set; }
     
        }
    }
    fenêtre principal :
    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
            private void Form1_Load(object sender, EventArgs e)
            {
     
     
     
                string path = "C:/Users/Lucas/Documents/test.csv";
                string[] contenu = File.ReadAllLines(path);
                if (contenu.Count() > 0)
                {
                    for (int i = 1; i < contenu.Count(); i++)
                    {
                        // On découpe la ligne à chaque fois qu'il y a le caractère ";"
                        string[] rowData = contenu[i].Split(';');
                        listdedonnees.Add(new Donnees { Date = DateTime.ParseExact(rowData[0], "dd:MM:yy", new CultureInfo("fr-FR")), Heure = DateTime.ParseExact(rowData[1], "HH:mm:ss", new CultureInfo("fr-FR")), TemperatureInterieur = Decimal.Parse(rowData[2]), TemperatureExterieur = Decimal.Parse(rowData[3]), HumiditeInterieur = Decimal.Parse(rowData[4]), HumiditeExterieur = Decimal.Parse(rowData[5]), DirectionDuVent = Decimal.Parse(rowData[6]), VitesseDuVent = Decimal.Parse(rowData[7]), Enssolleillement = Decimal.Parse(rowData[8]), TemperatureBatterie = Decimal.Parse(rowData[9]), TensionBatterie = Decimal.Parse(rowData[10]) });  ;
     
                    }
     
                }
            }

  16. #36
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 673
    Points : 5 257
    Points
    5 257
    Par défaut
    Citation Envoyé par lucascsharp Voir le message
    oui plusieurs fenêtre on besoin de ces données et on n'est pas obligé de passer par la fenêtre du dgv pour y accéder.
    Je dois mettre ma list dans la page d'accueil, la page qui s'ouvre lorsque l'on lance le logiciel ?
    Je l'aurais plutôt mis dans une unité à part et non liée à de l'IHM pour éviter un couplage fort entre les différents écrans.
    Il va également falloir penser à gérer le fait qu'elle soit déjà remplie ou non.
    Faut-il la mettre à jour régulièrement ?

    Citation Envoyé par lucascsharp Voir le message
    Nom : eeee.png
Affichages : 124
Taille : 8,4 Ko
    quand j'utilise Decimal.Parse(rowData[0]) j'ai une erreur je ne comprend comment la résoudre
    C'est une erreur de ma part (par pur reflex car j'utilise principalement des Decimal et non des Double), désolé.
    Tu as deux solutions :
    - Soit remplacer les Double par des Decimal comme tu l'as fait.
    - Soit utiliser Double.Parse à la place de Decimal.Parse.

    La solution à utiliser va dépendre de ce qui est important pour ce projet.
    Utiliser Double va favoriser la performance aux dépends de la précision.
    Ceci car les calculs appliqués à un Double sont effectués en interne en base 2 (plus faciles à effectuer pour un ordinateur).

    Utiliser Decimal va favoriser la précision aux dépends de la performance.
    Les calculs sont effectués en interne en base 10.

    En bref, utiliser Decimal lorsque la précision est importante.
    Sinon, utiliser Double.

  17. #37
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2022
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2022
    Messages : 48
    Points : 1
    Points
    1
    Par défaut
    une unité a part et non liée a de l'ihm ? ça veut dire que je dois créer une nouvelle classe ou je met mon code dedans ?
    oui il faut le mettre à jour régulièrement, moi j'avais utilisé un timer pour actualiser mon datagridview j'avais pour idée d'utiliser la même méthode non?

    Merci pour les infos sur double et decimal, du coup j'ai tout mis en double je pense qu'il y aura suffisamment de précision

  18. #38
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 673
    Points : 5 257
    Points
    5 257
    Par défaut
    Dans Visual studio l'unité à part se traduit en effet par l'ajout d'une nouvelle classe.
    Cela est d'autant plus nécessaire car il est préférable de séparer l'accès au données et l'IHM.

    Donc, tu peux conserver ton timer sur les écrans.
    Et recharger tes données depuis la nouvelle classe créée;
    Cette classe pourrait ressembler à ceci (de cette manière la liste est gérée par la classe).
    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
    public static class DataLoader
    {
       public static List<Donnee> Load(String path)
       {
                List<Donnee> listdedonnees = new List<Donnees>();
                string[] contenu = File.ReadAllLines(path);
                if (contenu.Count() > 0)
                {
                    for (int i = 1; i < contenu.Count(); i++)
                    {
                        // On découpe la ligne à chaque fois qu'il y a le caractère ";"
                        string[] rowData = contenu[i].Split(';');
                        listdedonnees.Add(new Donnees { Date = DateTime.ParseExact(rowData[0], "dd:MM:yy", new CultureInfo("fr-FR")), Heure = DateTime.ParseExact(rowData[1], "HH:mm:ss", new CultureInfo("fr-FR")), TemperatureInterieur = Decimal.Parse(rowData[2]), TemperatureExterieur = Decimal.Parse(rowData[3]), HumiditeInterieur = Decimal.Parse(rowData[4]), HumiditeExterieur = Decimal.Parse(rowData[5]), DirectionDuVent = Decimal.Parse(rowData[6]), VitesseDuVent = Decimal.Parse(rowData[7]), Enssolleillement = Decimal.Parse(rowData[8]), TemperatureBatterie = Decimal.Parse(rowData[9]), TensionBatterie = Decimal.Parse(rowData[10]) });  ;
     
                    }
     
                }
     
                return listdedonnees;
       }
    }
    Remarques : j'ai passé le path en paramètre afin d'être plus souple.

  19. #39
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2022
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2022
    Messages : 48
    Points : 1
    Points
    1
    Par défaut
    mais du coup vu que le path est en paramètre mon chemin d'accès je dois le mettre ou ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Date = DateTime.ParseExact(rowData[0], "dd:MM:yy", new CultureInfo("fr-FR"))
    j'ai une autre question je voulais savoir c'était quoi le new cultureinfo("fr-FR") car moi ça ne fonctionne pas et j'ai regarder la doc du ParseExact il mette un provider mais moi je peux pas mettre CultureInfo.InvariantCulture comme eux

  20. #40
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 673
    Points : 5 257
    Points
    5 257
    Par défaut
    Le path est à fournir lors de l'appel à DataLoader.Load();
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    private void Form1_Load(object sender, EventArgs e)
    {
        string path = "C:/Users/Lucas/Documents/test.csv";
        dataGridView1.Datasource = DataLoader.Load(path);
    }
    CultureInfo est le provider.
    D'ailleurs CultureInfo.InvariantCulture renvoie un objet de type CultureInfo
    Tu entends quoi par "ça ne fonctionne pas" ?
    Est-ce que ça plante ?
    Est-ce que la date n'est pas bonne ?

    La documentation présente également cet exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    dateString = "15/06/2008 08:30";
          format = "g";
          provider = new CultureInfo("fr-FR");
          try {
             result = DateTime.ParseExact(dateString, format, provider);
             Console.WriteLine("{0} converts to {1}.", dateString, result.ToString());
          }
          catch (FormatException) {
             Console.WriteLine("{0} is not in the correct format.", dateString);
          }

    Et ceci fonctionne très bien chez moi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    String dt = "26:04:2022";
    DateTime date = DateTime.ParseExact(dt, "dd:MM:yyyy", new CultureInfo("fr-FR"));
    Mais j'ai adapté la chaine au format que tu as fourni.
    Tu as réellement le caractère ":" comme séparateur ?
    Ton problème vient probablement de là si la date dans ton CSV utilise un slash.

Discussions similaires

  1. Utiliser les valeurs d'une requete dans une autre requete ?!
    Par nekro65 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 16/03/2009, 11h16
  2. Graphique utilisant les valeurs d'une Listbox
    Par fermat dans le forum Débuter
    Réponses: 2
    Dernier message: 19/09/2008, 12h21
  3. Faire une moyenne en ignorant les valeurs nulles
    Par Giansolo dans le forum MATLAB
    Réponses: 2
    Dernier message: 08/06/2007, 14h38
  4. Réponses: 1
    Dernier message: 21/12/2006, 11h17
  5. Réponses: 5
    Dernier message: 05/10/2006, 10h18

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