Partage
  • Partager sur Facebook
  • Partager sur Twitter

[C#] Lecture et exploitation d'un fichier CSV

    14 novembre 2019 à 15:37:27

    Bonjour,
    Je dois faire un petit programme en C# qui lit un fichier .csv et l'exploite dans le but de comparer des dates. L'utilisateur rentre la date du jour et le programme vérifie si il y'a des dates différentes de celle entrée. Enfin, il génère un .txt avec les lignes ou les dates sont différentes. Le fichier CSV, délimité par des ; avec des chaines de caractères entre guillemets, est organisé de façon suivante :
    "Code club";"Club";"Date"
    "0001";"MonClub1";"14/11/2019"
    "0002";"MonClub2";"13/11/2019"
    "0003";"MonClub3";"12/11/2019"
    J'ai installé CsvReader pour me simplifier le développement mais je suis perdu après l'étape de la lecture. Voici mon code :
            void Main()
            {
                using (var reader = new StreamReader("A revoir plus tard"))
                using (var csv = new CsvReader(reader))
                {
                    var records = csv.GetRecords<SyncCSV>();
                }
            }
    
            public SynchroChecker()
            {
                InitializeComponent();
            }
    
            public class SyncCSV
            {
                public string Club { get; set; }
                public string Date { get; set; }
            }
    
            private void btnResult_Click(object sender, EventArgs e)
            {
                string todayDate = txtDate.Text;
            }
    Pouvez-vous m'aider afin que je puisse continuer mon programme ?
    Merci par avance !
    Respectueusement,
    Jérémy DUQUENNOY
    • Partager sur Facebook
    • Partager sur Twitter
      14 novembre 2019 à 17:10:07

      Je ne sais pas ce qu'est précisément votre "CsvReader".

      Mais moi, je me fais pas chier, je charge tout dans une DataTable pour faire mon taf après :

      https://stackoverflow.com/questions/1050112/how-to-read-a-csv-file-into-a-net-datatable

      • Partager sur Facebook
      • Partager sur Twitter
      Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
        15 novembre 2019 à 11:58:30

        Merci pour votre aide.

        Je vais regarder plus en détails comment ça fonctionne. Un utilisateur propose également d'utiliser GenericParsing pour me simplifier le développement. Je vous tiens au jus de mon avancée et je renvoie un message si j'ai un souci.

        Merci !

        • Partager sur Facebook
        • Partager sur Twitter
          15 novembre 2019 à 12:33:42

          "GenericParsing" c'est un outil plus générique que "CsvReader", mais c'est toujours un outil "bas niveau".

          Si vous voulez juste faire de la comparaison de données, autant prendre des outils pour des données => DataTable.

          • Partager sur Facebook
          • Partager sur Twitter
          Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
            22 novembre 2019 à 23:19:46

            J'ai écrit la partie "Lecture du fichier CSV" comme ceci :
                    public DataTable ReadCsv(string nomfichier)
                    {
                        DataTable lecture = new DataTable("Synchro");
                        using(OleDbConnection cn=new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\"" +
                                Path.GetDirectoryName(nomfichier) + "\";Extended Properties='text;HDR = yes;FMT = Delimited(;)';"))
                        {
                            using (OleDbCommand cmd = new OleDbCommand(string.Format("select *from[{0}]", new FileInfo(nomfichier).Name), cn))
                            {
                                cn.Open();
                                using (OleDbDataAdapter adaptateur = new OleDbDataAdapter(cmd))
                                {
                                    adaptateur.Fill(lecture);
            
                                }
                            }
                        }
                        return lecture;
                    }
            En revanche, je ne sais pas si je peux continuer sur l'exploitation des données (comparaison des dates). Je pense avoir oublié d'ajouter les colonnes que je souhaite traiter.
            • Partager sur Facebook
            • Partager sur Twitter
              25 novembre 2019 à 10:30:09

              Le "*" dans "SELECT * FROM", c'est pas top.

              Préférez utiliser les colonnes explicitement.

              Vous pouvez customiser les colonnes des DataTable pour les interpréter comme des Dates et vous pouvez appliquer des conditions et des ordonnancements dans une DataView sur une DataTable.

              • Partager sur Facebook
              • Partager sur Twitter
              Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.

              [C#] Lecture et exploitation d'un fichier CSV

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown