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 :

Ecrire dans une cellule excel


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2007
    Messages : 22
    Par défaut Ecrire dans une cellule excel
    Bonjour à tous,

    Je suis face à un petit souci : j'aimerai depuis une application en C# écrire des données dans une cellule ciblée d'un document Excel existant.

    voici mon code :
    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
    26
    27
    28
    29
    30
    31
    32
            private void xlsDriving()
            {
                object Missing = System.Reflection.Missing.Value;
                string fileName = @"c:\\test.xls";
     
                System.Threading.Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.CreateSpecificCulture("en-US");
     
                Excel._Application xlApp;
                Excel._Workbook xlClasseur;
                Excel._Worksheet xlFeuill1;
     
                xlApp = new Excel.Application();
                xlApp.Visible = false;
     
                xlClasseur = xlApp.Workbooks.Open(fileName, 0, true, 5, "", "", true, Excel.XlPlatform.xlWindows, "\t", false, false, true, 0, true, true);
                Excel.Sheets xlFeuilles = xlClasseur.Sheets;
                xlFeuill1 = (Excel._Worksheet)xlFeuilles["Sheet1"];
     
                if (textBox3.Text != "no data")
                {
                    string Value = textBox3.Text;
                    Excel.Range r = xlFeuill1.get_Range("B9", Missing);
                    object[,] cell = (object[,])r.Cells.get_Value(Microsoft.Office.Interop.Excel.XlRangeValueDataType.xlRangeValueDefault);
                    cell[1, 1] = Value;
                }
     
     
                xlClasseur.Save(); // Enregistre les modifs des cellules
                xlClasseur.Close(false, Missing, Missing); // ferme le XLS
                xlApp.Quit(); // On met fin au pilotage
     
            }
    Lors de l'execution j'obtiens cette erreur et je ne trouve pas de solution :
    Erreur à la ligne : cell[1,1] = Value; :
    Object reference not set to an instance of an object.
    Merci d'avance pour votre aide.

    Sylvain.

  2. #2
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Par défaut
    Essaye:

    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
    26
    27
    28
    29
    30
    31
    32
     
    private void xlsDriving()
            {
                object Missing = System.Reflection.Missing.Value;
                string fileName = @"c:\\test.xls";
     
                System.Threading.Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.CreateSpecificCulture("en-US");
     
                Excel._Application xlApp;
                Excel._Workbook xlClasseur;
                Excel._Worksheet xlFeuill1;
     
                xlApp = new Excel.Application();
                xlApp.Visible = false;
     
                xlClasseur = xlApp.Workbooks.Open(fileName, 0, true, 5, "", "", true, Excel.XlPlatform.xlWindows, "\t", false, false, true, 0, true, true);
                Excel.Sheets xlFeuilles = xlClasseur.Sheets;
                xlFeuill1 = (Excel._Worksheet)xlFeuilles["Sheet1"];
     
                if (textBox3.Text != "no data")
                {
                    string Value = textBox3.Text;
                    Excel.Range r = xlFeuill1.get_Range("B9", Missing);
                    r.Value = Value;
                }
     
     
                xlClasseur.Save(); // Enregistre les modifs des cellules
                xlClasseur.Close(false, Missing, Missing); // ferme le XLS
                xlApp.Quit(); // On met fin au pilotage
     
            }

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2007
    Messages : 22
    Par défaut
    J'ai essayé avec ta modification,
    Donc en fait r.Value n'existait pas donc j'ai utilisé r.Value2 (qui doit être la même chose), je n'ai plus d'erreur à l'execution mais lorsque j'ouvre mon fichier excel à la fin du traitement, je ne trouve pas la valeur sur la cellule B9...

  4. #4
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Par défaut
    Heuresement que j'ai regardé sur le net j'allais dire une grosse connerie

    La solution est là normalement :
    http://msdn2.microsoft.com/en-us/library/77bx579s.aspx

    Deux autres liens qui pourront t'être utile :
    http://msdn2.microsoft.com/fr-fr/office/bb964249.aspx
    http://msdn.microsoft.com/newsgroups...&lang=en&cr=US

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2007
    Messages : 22
    Par défaut
    Merci pour ces liens mais la encore je me trouve face à un nouveau probleme :

    J'utilise comme sur le premier lien dans ma boucle ce code-ci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
                if (textBox3.Text != "no data")
                {
                    string Value = textBox3.Text;
                    Microsoft.Office.Tools.Excel.NamedRange nr = this.Controls.AddNamedRange(this.Range["B9", Missing], "NamedRange1");
     
                    nr.Value2 = Value;
                }
    mais la surviens un autre probleme : je n'ai pas la reference
    Microsoft.Office.Tools.Excel
    dans mon .COM ...

    Que faire ?

  6. #6
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Par défaut
    1) la rajouter dans l'assembly.
    2) sors moi la déclaration de la variable de la boucle !!!!
    Pas la peine de redéclarer à chaque fois! Tu réaffectes juste la valeur.
    Pareil pour le string.

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 8
    Par défaut
    Salut,

    dans ton projet tu cliques "Références" (bouton droit) -> "Ajouter une référence" -> tu choisis l'onglet "COM" et tu ajoutes la référence "Microsoft Excel xx Object Librairy".
    Le xx correspond à la version.

    Je pense que cela devrait mieux marcher.

Discussions similaires

  1. Réponses: 1
    Dernier message: 08/12/2009, 09h24
  2. comment ecrire dans une cellule excel ?
    Par mlkmpo dans le forum C#
    Réponses: 8
    Dernier message: 17/07/2008, 08h55
  3. [VBA-PP]Ecrire dans une feuille Excel
    Par alpking dans le forum Macros et VBA Excel
    Réponses: 21
    Dernier message: 27/04/2006, 18h18
  4. [VBA-PP]fonction qui écrit un chiffre dans une cellule excel
    Par alpking dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 26/04/2006, 19h34
  5. Réponses: 4
    Dernier message: 15/04/2005, 15h25

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