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

Problème Export Excel


Sujet :

C++Builder

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    118
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 118
    Points : 93
    Points
    93
    Par défaut Problème Export Excel
    Bonjour à tous,

    je viens de m'apercevoir que mon logiciel à un bug :

    je programme avec BCB 5.02 sous win2000 pro avec office 2000.
    dans mon logiciel, j'ai implémenté une fonction export qui me créé un fichier
    Excel avec diverses infos. Jusque là pas de problème, tout fonctionne !

    Seulement lorsque j'installe mon soft sur mes deux autres PC (winxp pro +
    office 2003 sur l'un, et winxp pro + office 2000 sur l'autre) j'ai une erreur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Une exception s'est produite
    Difficile de savoir d'où cela vient

    Une idée

    Merci d'avance

  2. #2
    Membre chevronné
    Avatar de kmaniche
    Inscrit en
    Janvier 2006
    Messages
    1 717
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 717
    Points : 1 884
    Points
    1 884
    Par défaut
    Bonjour,

    A mon avie c'est lié à la version des composant office installé avec c++builder, au monment où tu installe c++builder il te demande de choisir la version d'office installé sur le système. donc, probablement sur ton 1er pc (win 2k+office 2k) tu à choir OFFICE 200.

    Je pense qu'il faut recompiler avec ceux d'OFFICE Xp par exemple.

    Voilà.

    @+

  3. #3
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Points : 3 766
    Points
    3 766
    Par défaut
    Xav++ a ecrit:
    Bonjour à tous,

    je viens de m'apercevoir que mon logiciel à un bug :

    je programme avec BCB 5.02 sous win2000 pro avec office 2000.
    dans mon logiciel, j'ai implémenté une fonction export qui me créé un fichier
    Excel avec diverses infos. Jusque là pas de problème, tout fonctionne !

    Seulement lorsque j'installe mon soft sur mes deux autres PC (winxp pro +
    office 2003 sur l'un, et winxp pro + office 2000 sur l'autre) j'ai une erreur


    Code :
    Une exception s'est produite
    Difficile de savoir d'où cela vient

    Une idée

    Merci d'avance
    Peut tu nous dire ce que tu utilise comme composant pour gerer Excel un composant BCB ou OleExcel.

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    118
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 118
    Points : 93
    Points
    93
    Par défaut
    Bonjour à tous,

    blondelle : j'utilise les composants OleExcel. Autre chose bizarre : j'ai également
    une fonction Import qui là fonctionne parfaitement sur tous les PC.

    kmaniche : la version office installée est bien Office2k mais cela devrait donc
    fonctionner avec mon pc winxp + office2k non ?

    Voilà, je vais continuer de chercher aujourd'hui. Dernière chose, dans la version
    précédente de mon soft, il me semble que cela fonctionnait sur les pc XP. Or
    dans la nouvelle version, je n'ai pas touché à cette fonction ????????

    Merci

  5. #5
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Points : 3 766
    Points
    3 766
    Par défaut
    Xav++ a ecrit:
    Bonjour à tous,

    blondelle : j'utilise les composants OleExcel. Autre chose bizarre : j'ai également
    une fonction Import qui là fonctionne parfaitement sur tous les PC.

    kmaniche : la version office installée est bien Office2k mais cela devrait donc
    fonctionner avec mon pc winxp + office2k non ?

    Voilà, je vais continuer de chercher aujourd'hui. Dernière chose, dans la version
    précédente de mon soft, il me semble que cela fonctionnait sur les pc XP. Or
    dans la nouvelle version, je n'ai pas touché à cette fonction ????????

    Merci
    Si tu utilise OleExcel tu ne doit inclure que:
    Quelle entête faut-il ajouter pour utiliser le pilotage OLE ?

    auteur : Ricky81
    Il faut ajouter utilcls.h.
    #include <utilcls.h>
    Si tu utilise les composants BCB tu vas avoir des problemes de portabilite avec les versions d'office.
    Si tu utilise OleWord uniquement tel que decrit dans la FAQ tu t'affranchis des versions d'office.

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    118
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 118
    Points : 93
    Points
    93
    Par défaut
    Si tu utilise OleExcel tu ne doit inclure que:
    Citation:
    Quelle entête faut-il ajouter pour utiliser le pilotage OLE ?

    auteur : Ricky81
    Il faut ajouter utilcls.h.
    #include <utilcls.h>

    Si tu utilise les composants BCB tu vas avoir des problemes de portabilite avec les versions d'office.
    Si tu utilise OleWord uniquement tel que decrit dans la FAQ tu t'affranchis des versions d'office.
    J'ai bien inclus uniquement utilcls.h, et aucun composant BCB !!!

  7. #7
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Points : 3 766
    Points
    3 766
    Par défaut
    Salut Xav++.
    Normalement le code est portable sous Windows 2000 et XP, est tu sur qu'il ne reste pas une petite erreur dans ton code.

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    118
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 118
    Points : 93
    Points
    93
    Par défaut
    Citation Envoyé par blondelle
    Salut Xav++.
    Normalement le code est portable sous Windows 2000 et XP, est tu sur qu'il ne
    reste pas une petite erreur dans ton code.
    Je te mets le code en ligne ce soir pour que tu puisses vérifier mais
    il fonctionne parfaitement sur mon PC de développement ?????
    C'est à ni rien comprendre.

    Pour mémoire, il s'agit du code sur lequel on avait travaillé ensemble il y a
    quelque temps. A l'époque, j'essayais de le faire avec un fichier .csv.
    Mais finalement j'ai changé de méthode et je remplis le fichier .xls directement.

    En tout cas merci de ton aide

    Xav

  9. #9
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Points : 3 766
    Points
    3 766
    Par défaut
    Salut Xav++.
    A tu reussi a faire fonctionner ton programme.

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    118
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 118
    Points : 93
    Points
    93
    Par défaut
    Bonjour Blondelle,

    je n'ai pas pu bosser dessus cette semaine. Je te laisse voir le code
    si tu as une idée de génie

    Merci d'avance

    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
     
    int NbParties = CalculNbParties();
     ProgressBar1->Max = NbParties;
     ProgressBar1->Position = 0;
     
     int Progression = 0;
     AnsiString Text = "Export des résultats en cours... Ligne "+IntToStr(Progression)+"/"+IntToStr(NbParties);
     
     AnsiString nf = nomfichier;
     int x = nf.Length();
     nf[x-2]='x';
     nf[x-1]='l';
     nf[x]='s';
     
     Variant vXLWorkbooks, vXLWorkbook, vWorksheet, vMSExcel;
     AnsiString vFileName = nf;                                     //nom du fichier
     vMSExcel = Variant::CreateObject("Excel.Application");         //ouverture Excel
     vMSExcel.OlePropertySet("Visible", false);                     //invisble pour l'utilisateur
     vMSExcel.OlePropertySet("SheetsInNewWorkbook", 1);             //une seule feuille ouverte
     vXLWorkbooks = vMSExcel.OlePropertyGet("Workbooks");           //travail par classeur
     vXLWorkbook = vXLWorkbooks.OleFunction("Add");                 //ajout d'un classeur
     vWorksheet = vXLWorkbook.OlePropertyGet("Worksheets",1);       //sélection de la 1ère feuille
     vWorksheet.OlePropertySet("Name", "Tournoi");                  //nom de la feuille
     
     Variant vRange, vValue;                                        //mise au bon format des colonnes
     vRange = vWorksheet.OlePropertyGet("Range", "A:A");            //format texte pour la colonne A
     vValue = "@";
     vRange.OlePropertySet("NumberFormat", vValue);
     vRange = vWorksheet.OlePropertyGet("Range", "B:B");            //format texte pour la colonne B
     vValue = "@";
     vRange.OlePropertySet("NumberFormat", vValue);
     vRange = vWorksheet.OlePropertyGet("Range", "C:C");            //format JMA pour la colonne C
     vValue = "jj/mm/aaaa";
     vRange.OlePropertySet("NumberFormat", vValue);
     
     Variant vCell, vL, vC, vValueCell;
     
     vL = 1; //on remplit la première ligne
     vC = 1;
     vValueCell = "LICV";
     vCell = vWorksheet.OlePropertyGet("Cells", vL, vC);
     vCell.OlePropertySet("Value", vValueCell);
     vCell.OlePropertySet("HorizontalAlignment",-4108);               //Centrer  horizontalement la cellule
     vC = 2;
     vValueCell = "LICD";
     vCell = vWorksheet.OlePropertyGet("Cells", vL, vC);
     vCell.OlePropertySet("Value", vValueCell);
     vCell.OlePropertySet("HorizontalAlignment",-4108);
     vC = 3;
     vValueCell = "DATE";
     vCell = vWorksheet.OlePropertyGet("Cells", vL, vC);
     vCell.OlePropertySet("Value", vValueCell);
     vCell.OlePropertySet("HorizontalAlignment",-4108);
     vL = 2;
     
     for (int i=0; i<t->nbtab(); i++)
      {...}

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    118
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 118
    Points : 93
    Points
    93
    Par défaut
    Bon j'ai craqué ! J'ai installé BCB6 sur le PC où mon soft plante afin
    de pouvoir éxécuter le pas à pas. Le problème vient de la ligne suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    vMSExcel.OlePropertySet("SheetsInNewWorkbook", 1);
    Je vais chercher d'où cela peut venir sur la FAQ

    Xav

  12. #12
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Points : 3 766
    Points
    3 766
    Par défaut
    Salut Xav++.
    Je reprend mon ordinateur et je vois que tu a poste deux fois, et que tu a partiellement trouve l'erreur.
    Ta ligne incriminee est sencee faire quoi?

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    118
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 118
    Points : 93
    Points
    93
    Par défaut
    En fait cette ligne est censée ouvrir une seule feuille dans le classeur.
    Mais même si je la supprime, j'ai des erreurs sur les lignes suivantes.
    Je dois avoir un problème sur mon variant vWorkSheet ??????

    Mais là je cale

    Xav

  14. #14
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Points : 3 766
    Points
    3 766
    Par défaut
    Xav++ a ecrit:
    En fait cette ligne est censée ouvrir une seule feuille dans le classeur.
    Mais même si je la supprime, j'ai des erreurs sur les lignes suivantes.
    Je dois avoir un problème sur mon variant vWorkSheet ??????

    Mais là je cale

    Xav
    Pour selectionner une feuille.
    le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    vWorksheet = vXLWorkbook.OlePropertyGet("Worksheets", "SheetsInNewWorkbook");
    vWorksheet.OleProcedure("Select");
    A partir de la tu a selectionne la feuille dans laquelle tu veut travailler.

    Ton code ci dessous:
    vXLWorkbooks = vMSExcel.OlePropertyGet("Workbooks"); //travail par classeur
    vXLWorkbook = vXLWorkbooks.OleFunction("Add"); //ajout d'un classeur
    vWorksheet = vXLWorkbook.OlePropertyGet("Worksheets",1); //sélection de la 1ère feuille
    vWorksheet.OlePropertySet("Name", "Tournoi");
    Si j'ai bien compris tu inserre une feuille et tu la renomme

  15. #15
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Points : 3 766
    Points
    3 766
    Par défaut
    Pour ouvrir une nouvelle feuille et la renommer
    le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    // on cree une nouvelle feuille
    //
    vWorksheets = vXLWorkbook.OlePropertyGet("Worksheets");
    vWorksheets.OleProcedure("Add");
    vWorksheet = vMSExcel.OlePropertyGet("ActiveSheet");
    ///////////
    // on renomme la nouvelle feuille
    //
    vWorksheet.OlePropertySet("Name", "Tournoi");

  16. #16
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Points : 3 766
    Points
    3 766
    Par défaut
    Pour ajouter un nouveau classeur et le renommer.
    Le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    // on cree un nouveau classeur
    //
    vXLWorkbook = vMSExcel.OlePropertyGet("Workbooks");
    vXLWorkbook.OleProcedure("Add");
    vWorksheet = vMSExcel.OlePropertyGet("ActiveSheet");
    ///////////
    // on renomme la feuille du nouveau classeur
    vWorksheet.OlePropertySet("Name", "Tournoi");

  17. #17
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    118
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 118
    Points : 93
    Points
    93
    Par défaut
    Citation Envoyé par blondelle
    Pour ajouter un nouveau classeur et le renommer.
    Le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    // on cree un nouveau classeur
    //
    vXLWorkbook = vMSExcel.OlePropertyGet("Workbooks");
    vXLWorkbook.OleProcedure("Add");
    vWorksheet = vMSExcel.OlePropertyGet("ActiveSheet");
    ///////////
    // on renomme la feuille du nouveau classeur
    vWorksheet.OlePropertySet("Name", "Tournoi");
    C'est exactement ce que je veux faire. Mais le problème c'est que j'ai
    une erreur à la ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    vXLWorkbook.OleProcedure("Add");
    C'est très énervant

    En tout cas merci pour ton aide

    Xac

  18. #18
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Points : 3 766
    Points
    3 766
    Par défaut
    Salut Xav++.
    J'ai essaye ton code j'ai juste enleve le debut pour la progresse barre, et il fonctionne je suis sous XP pack1 et Excel 2003.
    Decrit moi pas a pas ce que tu veu faire car je ne comprend pas tout ton code par exemple l'utilitee de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    vMSExcel.OlePropertySet("SheetsInNewWorkbook", 1);
    Ton classeur a obligatoirement une feuille a l'ouverture, est ce que tu veu selectionner cette feuille, la renommer, ou veu tu ajouter une nouvelle feuille

  19. #19
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    118
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 118
    Points : 93
    Points
    93
    Par défaut
    Salut,

    cette ligne c'est juste pour qu'il n'y ait qu'une seule feuille dans le classeur et non 3.
    Le problème, c'est que le code à l'air correct mais pas sur mon PC ????????

    Là je sèche

  20. #20
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    118
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 118
    Points : 93
    Points
    93
    Par défaut
    Re,

    j'ai même fait le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Variant vXLWorkbooks, vXLWorkbook, vMSExcel;
    vMSExcel = Variant::CreateObject("Excel.Application");     
    vMSExcel.OlePropertySet("Visible", true);                    
    vXLWorkbooks = vMSExcel.OlePropertyGet("Workbooks");          
    vXLWorkbook = vXLWorkbooks.OleFunction("Add");
    et ça plante toujours sur la même ligne ??????

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 3 123 DernièreDernière

Discussions similaires

  1. Problème exportation excel vers la racine
    Par bogsy15 dans le forum C++Builder
    Réponses: 1
    Dernier message: 03/05/2007, 15h59
  2. Problème export excel sur une requete avec critère
    Par eddyG dans le forum Requêtes et SQL.
    Réponses: 7
    Dernier message: 20/09/2006, 12h46
  3. [C#2.0]Problème export Excel
    Par SLE dans le forum Windows Forms
    Réponses: 2
    Dernier message: 07/07/2006, 11h17
  4. Problème export excel
    Par eddyG dans le forum Access
    Réponses: 4
    Dernier message: 04/07/2006, 19h42
  5. [Tableaux] Problème export excel
    Par la fouine dans le forum Langage
    Réponses: 1
    Dernier message: 02/06/2006, 08h32

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