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 :

Manipuler fichier excel avec c#


Sujet :

C#

  1. #1
    Membre du Club
    Homme Profil pro
    Debuttant en developpement d'application
    Inscrit en
    Novembre 2014
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : Guinée

    Informations professionnelles :
    Activité : Debuttant en developpement d'application

    Informations forums :
    Inscription : Novembre 2014
    Messages : 86
    Points : 55
    Points
    55
    Par défaut Manipuler fichier excel avec c#
    Bonsoir à tous,
    je travaille sur une application qui envoie des mail,
    j'aimerais recuperer la liste des destinataires (emails)
    à partir d'un fichier excel. S'il vous plais si quelqu'un a une idée.
    MERCI D'AVANCE.

  2. #2
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 924
    Points
    55 924
    Billets dans le blog
    131
    Par défaut
    Salut.

    Tu as deux méthodes, l'une qui ouvre le fichier, l'autre qui l'attaque par Odbc (mais qui demande que tes données soient dans une plage pouvant servir de "table").

    Voici la première méthode qui ouvre le fichier. Dans ton projet, tu dois aller cocher la référence à la librairie Microsoft Excel. Tu dois également inclure la librairie Excel (using Excel = Microsoft.Office.Interop.Excel;)

    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
                List<string> addresses = new List<string>();
                string filename = @"d:\fichier.xlsx";
                string sheetname = "feuil1";
                Excel.Application app = new Excel.Application();
                Excel.Workbook wb = app.Workbooks.Open(filename);
                Excel.Worksheet ws = wb.Worksheets[sheetname];
                Excel.Range rng = ws.Range["a2"];
                while (rng.Value != null)
                {
                    addresses.Add(rng.Value);
                    rng = rng[2];
                }
                wb.Close(false);
                app.Quit();

    La seconde utilise une connexion ODBC pour accéder aux données. Elle requiert un peu de connaissance en sql, bien entendu. Par contre, elle ne demande pas d'ajouter une référence à Excel ni la ligne using Excel = ..., mais nécessite using Odbc = System.Data.Odbc;. Elle est plus rapide à l'exécution, mais comme dit plus haut, tes données doivent être organisées en table. Note bien le nom de la table avec le $ ajouté au nom de la feuille, le tout entouré de crochets...

    Code c# : 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
     
                string connectionstring = 
                    @"DSN=Excel Files;DBQ=D:\fichier.xlsx;" + 
                    @"DefaultDir=D:\Documents;DriverId=1046;MaxBufferSize=2048;PageTimeout=5;";
                Odbc.OdbcConnection cn = new Odbc.OdbcConnection(connectionstring);
                string sql = "select Emails from [Feuil1$]";
                Odbc.OdbcCommand cm = new Odbc.OdbcCommand(sql, cn);
                List<string>Emails = new List<string>();
     
                try
                {
                    cn.Open();
                    Odbc.OdbcDataReader rd = cm.ExecuteReader();
                    while(rd.Read())
                        Emails.Add(rd["Emails"].ToString());
                }
                catch (Odbc.OdbcException e)
                {
                    Console.WriteLine(e.ToString());
                }
                finally
                {
                    cn.Close();
                }

    Ces codes seront adaptés à ta situation. Je donne ceux-ci pour exemple, mais tu auras intérêt à travailler avec une classe, éventuellement statique, pour éviter du code poubelle.
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  3. #3
    Membre du Club
    Homme Profil pro
    Debuttant en developpement d'application
    Inscrit en
    Novembre 2014
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : Guinée

    Informations professionnelles :
    Activité : Debuttant en developpement d'application

    Informations forums :
    Inscription : Novembre 2014
    Messages : 86
    Points : 55
    Points
    55
    Par défaut
    Merci pour votre aide, ça à marché,
    seulement j'ai utiliser OLDB.
    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
     String cUrl = "Provider=Microsoft.ACE.OLEDB.12.0;" +
                            "Data Source=" + "E:\\TP ASP C#\\TP3\\Classeur1.xlsx" + ";" +
                            "Extended Properties=\"Excel 12.0 Xml;HDR=YES\"";
                OleDbConnection conn = new OleDbConnection();
                conn.ConnectionString = cUrl;
                OleDbCommand commande = new OleDbCommand("SELECT EMAIL " +
                                                         "FROM [Feuil1$]", conn);
                List<String> liste = new List<string>();
                conn.Open();
                OleDbDataReader read = commande.ExecuteReader();            
                do
                {
                    while (read.Read())
                    {
                        liste.Add(Convert.ToString(read["EMAIL"]));
                    }
                }
                while (read.NextResult());

  4. #4
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 924
    Points
    55 924
    Billets dans le blog
    131
    Par défaut
    L'un ou l'autre, c'est kif pour obtenir ce résultat.

    Attention à penser à fermer la connexion en fin de parcours (c'est pourquoi j'avais un try-catch-finally). De plus, l'imbrication des boucles Do-While est inutile. Le While suffit.
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  5. #5
    Membre du Club
    Homme Profil pro
    Debuttant en developpement d'application
    Inscrit en
    Novembre 2014
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : Guinée

    Informations professionnelles :
    Activité : Debuttant en developpement d'application

    Informations forums :
    Inscription : Novembre 2014
    Messages : 86
    Points : 55
    Points
    55
    Par défaut
    ok, merci pour vos conseils.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Manipuler des fichiers Excel avec Perl
    Par Buboba dans le forum Modules
    Réponses: 2
    Dernier message: 04/09/2012, 13h54
  2. Manipulation de fichier Excel avec Talend
    Par simbabou dans le forum Développement de jobs
    Réponses: 1
    Dernier message: 22/04/2011, 13h35
  3. Réponses: 11
    Dernier message: 14/05/2009, 20h30
  4. manipuler fichier excel 2003 avec l'api jxl ?
    Par hoor3in dans le forum Documents
    Réponses: 2
    Dernier message: 30/04/2008, 13h16
  5. Manipuler un fichier excel avec python
    Par dipajero dans le forum Général Python
    Réponses: 4
    Dernier message: 09/02/2006, 23h14

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