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

Windows Forms Discussion :

[EXCEL/C#] Piloter Excel XP compatible Excel 2003 ?


Sujet :

Windows Forms

  1. #1
    Membre régulier Avatar de legillou
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    178
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 178
    Points : 93
    Points
    93
    Par défaut [EXCEL/C#] Piloter Excel XP compatible Excel 2003 ?
    Bonjour à tous

    Mon application en C# est terminée et fonctionne sur mon PC qui utilise Excel XP mais elle ne fonctionne pas sur un autre ordinateur ou c'est Excel 2003 qui est installé.

    Mon code pour accéder à excel est plutot simple :
    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
            private void btExcel_Click(object sender, EventArgs e)
            {
                connectionLog.Text += "Speed Excel extraction... ";
                int count = 1;
                ApplicationClass Excel = new ApplicationClass();
     
                WorkbookClass Classeur = (WorkbookClass)Excel.Workbooks.Add(Type.Missing);
                Worksheet Feuille = (Worksheet)Classeur.Worksheets.Add(Type.Missing, Type.Missing, Type.Missing, Type.Missing);
                Feuille.Cells[1, 1] = "Angle Position in CC";
                foreach (long valeur in _traceAccelerationTab)
                {
                    count++;
                    Feuille.Cells[count, 1] = valeur;
                }
                Excel.Visible = true;
                if (Feuille != null) System.Runtime.InteropServices.Marshal.ReleaseComObject(Feuille);
                if (Classeur != null) System.Runtime.InteropServices.Marshal.ReleaseComObject(Classeur);
                if (Excel != null) System.Runtime.InteropServices.Marshal.ReleaseComObject(Excel);
                connectionLog.Text += "Done \n";
            }
    Alors en fait je pense que ca viens des .dll (interop et tout le bazar ) qui semblent spécifiques à chaque Excel. Ma question est la suivante : Est ce qu'il suffit de trouver les bonnes dll pour chaque PC et donc pour chaque version d'excel et ca va marcher sans changement de code ou est ce qu'il y a des différences dans le code ?
    merci d'avance

  2. #2
    Expert éminent
    Avatar de bidou
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2002
    Messages
    3 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 055
    Points : 7 962
    Points
    7 962
    Par défaut
    Il faudra mettre la bonne référence selon la version d'Excel

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    344
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 344
    Points : 291
    Points
    291
    Par défaut
    Je te conseille d'utiliser les liaisons tardives pour ne pas dépendre de la version d'Excel .....

    Du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ApplicationClass Excel = new ApplicationClass();
    devient
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Object Excel = CreateObject("Excel.Application");
    Tu peux donc ainsi surppimer toutes les références (dll) avec Excel et ton application utilisera la version d'Excel installée ...

  4. #4
    Membre régulier Avatar de legillou
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    178
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 178
    Points : 93
    Points
    93
    Par défaut
    ahaaaah ca m'interesse beaucoup ta methode qui ne dépend pas d'excel...
    aurais tu quelques exemples d'utilisation quelque part?
    [edit] j'ai essayé la ligne de code que tu m'as donnée mais je n'ai pas CreateObject moi. J'ai CreateObjRef seulement... Y a t'il un 'using' a rajouter ou c'est parce que je suis sur .net 2.0 ?
    Je suis très interessé par des exemples de code comme ca si tu pouvais me trouver ca ca serait génial

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    344
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 344
    Points : 291
    Points
    291
    Par défaut
    Voici un petit exemple de manipulation d'une feuille Excel sans dépendance de la version d'Excel. C'est du VB.NET car je ne connais la syntaxe exacte du C# mais ca y ressemble.
    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
    Dim applicationExcel, modele, feuille As Object
     
    ' Crée une nouvelle application Excel.
    applicationExcel = CreateObject("Excel.Application")
     
    ' Prépare la feuille de travail.
    modele = applicationExcel.Workbooks.Add()
    feuille = modele.Sheets(1)
     
    ' Exporte les données sous Excel.
    feuille.Cells(1, 1).Value = "Bonjour"
     
    ' Montre le résultat.
    applicationExcel.Visible = True
    applicationExcel = Nothing
    En C#, je pense que ca doit donner un truc comme ca ....
    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
    Object applicationExcel, modele, feuille;
     
    ' Crée une nouvelle application Excel.
    applicationExcel = CreateObjectRef("Excel.Application");
     
    ' Prépare la feuille de travail.
    modele = applicationExcel.Workbooks.Add();
    feuille = modele.Sheets(1);
     
    ' Exporte les données sous Excel.
    feuille.Cells(1, 1).Value = "Bonjour";
     
    ' Montre le résultat.
    applicationExcel.Visible = True;
    applicationExcel = Nothing;

Discussions similaires

  1. Piloter une requête par Excel
    Par Maluje dans le forum Requêtes et SQL.
    Réponses: 10
    Dernier message: 30/01/2008, 17h11
  2. "Piloter" VB 2005 avec Excel 2003
    Par marine18 dans le forum VB.NET
    Réponses: 1
    Dernier message: 15/01/2008, 23h11
  3. connexion à Excel mais Pilote ISAM introuvable
    Par rdh123 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 01/09/2007, 11h53
  4. Une fonction sous Excel 2007 ne fonctionne pas sous Excel 2003
    Par Dryss51 dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 27/07/2007, 08h09
  5. piloter Internet Explorer depuis excel
    Par biggione dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 08/08/2006, 15h36

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