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 Discussion :

Ouverture/écriture fichier Excel


Sujet :

Windows

  1. #1
    Futur Membre du Club
    Inscrit en
    Juin 2004
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 27
    Points : 7
    Points
    7
    Par défaut Ouverture/écriture fichier Excel
    Bonjour à tous,

    Ceci est mon premier message sur ce forum, forum que je lisais régulièrement pour mon boulot...

    Je souhaite ouvrir un fichier Excel 97 existant sous Visual C++. Mais je ne vois pas vraiment comment faire.

    Avant, j'utilisais un code qui créait un nouveau fichier Excel :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    using namespace Excel;
    _ApplicationPtr pXL;
    pXL.CreateInstance(L"Excel.Application.8");
    pXL->Visible = VARIANT_TRUE;
    WorkbooksPtr pBooks = pXL->Workbooks;
    _WorkbookPtr pBook  = pBooks->Add((long)xlWorksheet);
    _WorksheetPtr pSheet = pXL->ActiveSheet;
    pBook->SaveAs(...);
    Apparement, avec ce code, je ne peux pas ouvrir de fichier existant.. Ou je ne sais pas comment faire...

    Vous avez des solutions ?

    Merci pour toutes vos réponses

  2. #2
    Futur Membre du Club
    Inscrit en
    Juin 2004
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 27
    Points : 7
    Points
    7
    Par défaut
    Personne n'a une idée ?

  3. #3
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 750
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 750
    Points : 10 670
    Points
    10 670
    Billets dans le blog
    3
    Par défaut
    Piloter Excel (via l'Automation) fait appel à des notions assez voire très complexes (COM). Qui plus est en C++ c'est loin d'être évident.
    Tu as ici sur ce site une FAQ qui est une très bonne introducction au domaine :
    http://www.developpez.com/windows/dcom/t1.html
    Ensuite il va falloir étudier la MSDN afin de comprendre comment piloter Excel :
    http://support.microsoft.com/default.aspx?kbid=196776
    http://support.microsoft.com/default.aspx?scid=kb;EN-US;216686
    http://www.msdn.microsoft.com/office/understanding/excel/default.aspx

  4. #4
    Futur Membre du Club
    Inscrit en
    Juin 2004
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 27
    Points : 7
    Points
    7
    Par défaut
    Merci

    Ca a l'air assez complexe et long !!!
    Je vais mater tout ca...

    Encore merci

  5. #5
    Futur Membre du Club
    Inscrit en
    Juin 2004
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 27
    Points : 7
    Points
    7
    Par défaut
    J'ai pu lire les différents documents mais j'ai toujours un problème. Je n'arrive pas à ouvrir un fichier Excel existant. J'arrive à me demander si c'est vraiment possible tellement j'ai rien trouvé là dessus.

    J'utilise le code suivant :

    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
    		
    _Application app;
    Workbooks books;
    _Workbook book;
    Worksheets sheets;
    _Worksheet sheet;
    f(!app.CreateDispatch("Excel.Application"))
    {
    	AfxMessageBox("Couldn't start Excel and get Application object.");
    	return 0;
    }
    //Get a new workbook.
    books = app.GetWorkbooks();
    book = books.Add (covOptional);
    
    //Get the first sheet.
    sheets = book.GetSheets();
    sheet = sheets.GetItem(COleVariant((short)1));
    Excel se lance bien et cré un nouveau fichier.

    Ca serait vraiment sympa si qqun avait un élément de réponse

    Merci

    @++

  6. #6
    Membre éclairé

    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 085
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 085
    Points : 886
    Points
    886
    Par défaut
    Regarde aussi dans l'aide excel, c'est grâce à elle que j'ai pu me débrouiller , ses codes d'exemples sont en VB .

  7. #7
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 750
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 750
    Points : 10 670
    Points
    10 670
    Billets dans le blog
    3
    Par défaut
    Apparement (si ça marche comme Word) ce serait simplement :
    app.Documents.Open( "fic.xsl" );
    http://support.microsoft.com/default.aspx?scid=kb;EN-US;179494
    Y'a un lien en bas vers la doc.

  8. #8
    Membre éclairé

    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 085
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 085
    Points : 886
    Points
    886
    Par défaut
    Non, comme ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Application.WorkBooks.Open(Fichier);

  9. #9
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    Peut être qq élément de réponse pour l'automation dans la faq Delphi :
    http://delphi.developpez.com/faq/?page=exceldelphi

  10. #10
    Futur Membre du Club
    Inscrit en
    Juin 2004
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 27
    Points : 7
    Points
    7
    Par défaut
    Merci pour ces réponses

    Mais j'ai pas réussi. Apparement ca fonctionne pas comme Word (ca serait trop facile) :o

    Enfin, ceci n'existe pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.WorkBooks.Open(Fichier);
    L'exemple DELPHI donne la meme structure, qui apprement n'existe pas

    Je vais chercher plus en détail sur le site de Microsot...

  11. #11
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 750
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 750
    Points : 10 670
    Points
    10 670
    Billets dans le blog
    3
    Par défaut
    Dans ton Application est à remplacer par app...
    Voire directement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    books.Open(Fichier);

  12. #12
    Membre éclairé

    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 085
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 085
    Points : 886
    Points
    886
    Par défaut
    Bon , premierement, la meilleur aide se trouve dans excel : Aide-->Aide sur microsoft excel--> informations de programmation.

    Et pour mon code , dans ton cas, se sera
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    App.WorkBooks.Open(Fichier);
    Il faut que app soit instancié en tant que "Excel.Application"

  13. #13
    Futur Membre du Club
    Inscrit en
    Juin 2004
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 27
    Points : 7
    Points
    7
    Par défaut
    Encore emrci pour vos réponses.

    Concernant l'aide sur Excel, je n'ai pas l'aide concernant la programmation dans Excel

    Le code suivant existe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    books.Open(Fichier);
    Mais je n'ai pas trouvé d'aide sur cette méthode dans la MSDN...

    Soit elle n'existe pas (ce dont je doute) soit je suis mauvais...

    J'abuse peut-etre un peu là, mais vous savez ou je peux trouver de l'aide sur les arguments de cette méthode ?

    Merci beaucoup

  14. #14
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 750
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 750
    Points : 10 670
    Points
    10 670
    Billets dans le blog
    3
    Par défaut
    Un de mes posts te disais le lien à suivre.
    http://support.microsoft.com/default.aspx?scid=kb;EN-US;222101

  15. #15
    Futur Membre du Club
    Inscrit en
    Juin 2004
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 27
    Points : 7
    Points
    7
    Par défaut
    Salut

    J'avais bien suivi ce lien mais ils ne parlent pas d'ouverture de fichier Excel en C++.
    C'est soit la création d'un classeur en C++, ou l'ouverture d'un classeur en VBA...
    Et en VBA, la méthode d'ouverture ne prend qu'un seul argument tandis qu'en C++ il y en a plusieurs, mais pas moyen de savoir à quoi ils correspondent...

    Je vais chercher sur le site de Microsoft encore, en espérant trouver des infos..

    @++

  16. #16
    Futur Membre du Club
    Inscrit en
    Juin 2004
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 27
    Points : 7
    Points
    7
    Par défaut
    J'utilise le code suivant, qui bien sur ne fonctionne pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    COleVariant vtOptional((long)DISP_E_PARAMNOTFOUND,VT_ERROR);
    
    if(!app.CreateDispatch("Excel.Application"))
    {
    	AfxMessageBox("Couldn't start Excel and get Application object.");
    	return 0;
    }
    
    books = app.GetWorkbooks();
    books.Open("D:\\Classeur1.xls",vtOptional,vtOptional,vtOptional,vtOptional,vtOptional,vtOptional,vtOptional,vtOptional,vtOptional,vtOptional,vtOptional,vtOptional);
    Inutile de préciser que Classeur1.xls existe bien à l'emplacement indiqué...

    Si vous avait des suggestions, je suis preneur...

    Merci pour tout..

    ++

  17. #17
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    Salut,
    tu devrais trouvez 'qq infos' ici
    http://www.cetus-links.org/oo_ole.html
    mais faut chercher

  18. #18
    Futur Membre du Club
    Inscrit en
    Juin 2004
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 27
    Points : 7
    Points
    7
    Par défaut
    C'est bon !!!

    J'avais mis en commentaire la ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    books = app.GetWorkbooks();
    Maintenant, ca tourne nickel !!!

    Merci beaucoup pour votre aide


    PS: j'ai cherché quand même, mais c pas évident de trouver....

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

Discussions similaires

  1. Ouverture de fichier Excel
    Par Fred2209 dans le forum C++Builder
    Réponses: 4
    Dernier message: 23/11/2006, 14h44
  2. Ouverture de fichier Excel avec macros
    Par Mathusalem dans le forum MATLAB
    Réponses: 2
    Dernier message: 15/06/2006, 11h39
  3. Ouverture de fichiers excel par ordre alphabetique
    Par max2245 dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 30/12/2005, 16h54
  4. Réponses: 5
    Dernier message: 11/11/2005, 09h47

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