jeudi 1 avril 2010

Asp.net 3.5 - Importer des données CSV avec LINQ en C# 3.5

Le petit code suivant est un exemple de code que l’on peut insérer dans une Windows Form C#. En l’occurrence, le click sur le bouton ouvre une fenêtre parcourir et charge le fichier csv dans une liste d’objet de type MyEntite.
 
Remarque avant de lire :
 
txt_splitParam.Text : est une zone de saisie permettant de définir le caractère de split
Chk_SkipFirstLine : permet de spécifier si’lon souhaite ne pas lire la première ligne du csv
openFileDialogImportData : Contrôle openFileDialog
 
 
 
        /// <summary>
        /// Provoque l'ouverture d'une openFileDialog et de choisir le fichier à charger
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Btn_Parcourir_Click(object sender, EventArgs e)
        {
            openFileDialogImportData.Title = "Chargement";
            //Extension par défaut
            openFileDialogImportData.DefaultExt = "csv";
            //Filtres
            openFileDialogImportData.Filter = "fichiers textes (*.csv)|*.csv|Tous les fichiers (*.*)|*.*";
            openFileDialogImportData.FilterIndex = 1;
            //Ouverture boite de dialogue OpenFile
            if (openFileDialogImportData.ShowDialog(this) == DialogResult.OK)
            {
 
                //Ouverture du fichier sélectionné
                //son nom est dans openFileDialogImportData.FileName               
                try
                {
                
                    //Select les lignes du csv, le skip  permet de sauter les noms de colonnes
                    int l_ToSkip = 0;
                    if (Chk_SkipFirstLine.Checked)
                        l_ToSkip = 1;
                    l_LstImportData = (
                        from line in File.ReadAllLines(openFileDialogImportData.FileName).Skip(l_ToSkip)
                        let x = Regex.Split(line, txt_splitParam.Text)
                        where x. … ce que vous voulez
)
                    select new Entity.MyEntite
                    {
                         MaProp = x[1], x[1] étant une colonne du csv
                        ……
                    }).ToList();
                    btn_importNew.Enabled = true;
                }
                catch (Exception ex)
                {
                    MessageBox.Show(string.Format("Exception Message: {0}", ex.Message));
                }
                finally
                {
                    //TODO : Finally do something if necessary
                }
            }
        }

Aucun commentaire:

Enregistrer un commentaire