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 :

Comment intégrer des données sous Excel dans un StringGrid sous C++ Builder ?


Sujet :

C++Builder

  1. #1
    Membre régulier
    Inscrit en
    Mars 2007
    Messages
    148
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Mars 2007
    Messages : 148
    Points : 83
    Points
    83
    Par défaut Comment intégrer des données sous Excel dans un StringGrid sous C++ Builder ?
    Salut à tous,

    J'ai lu la FAQ et je n'ai pas trouvé ce que je cherche précisément.

    Les données qui sont à ma disposition sont sous Excel et comme je programme en C++ Builder5, je veux les intégrer dans un StringGrid afin que je puisse les manipuler.

    Dans la FAQ, j'ai trouvé le problème inverse. C'est à dire, intégrer des données d'un StringGrid dans une feuille de calcul sous Excel.

    Si quelqu'un à une idée, j'aimerai bien la connaitre.

    A bientôt

  2. #2
    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 Hoopsy:
    En partant de ce poste
    La partie de code a modifier dans Excel
    remplacer:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    // pour ecrire dans une cellule
    // Cells ligne, colonne
    vCell = vWorksheet.OlePropertyGet("Cells", 2, 2);
    // on ecrit une valeur dans la cellule
    vCell.OlePropertySet("Value", "toto");
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    // pour lire dans une cellule
    // Cells ligne, colonne
    vCell = vWorksheet.OlePropertyGet("Cells", 2, 2);
    // on recupere le contenu de la cellule
    vValue = vCell.OlePropertyGet("Value");
    pour ecrire dans le StrinGgrid
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    StringGrid1->Cells[colonne][ligne] = Valeur_A_Ecrire;
    Dans une boucle tu lit tes valeurs Excel et tu les ecrit dans le StrinGgrid.
    --
    Plutot que d'essayer de réinventer la roue, apprenons à nous en servir

  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
    Si tu part d'un fichier deja ecrit voici comment ouvrir ce fichier.
    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
     
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
    try
     {
        vMSExcel = Variant::GetActiveObject("Excel.Application");
    }
     catch(...)
     {
        vMSExcel = Variant::CreateObject("Excel.Application");
    }
    vMSExcel.OlePropertySet("Visible", true);
    vFileName = "c:\\classeur1.xls";
    vXLWorkbooks = vMSExcel.OlePropertyGet("Workbooks");
    vXLWorkbook = vXLWorkbooks.OleFunction("Open", vFileName);
    }
    --
    Plutot que d'essayer de réinventer la roue, apprenons à nous en servir

  4. #4
    Membre régulier
    Inscrit en
    Mars 2007
    Messages
    148
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Mars 2007
    Messages : 148
    Points : 83
    Points
    83
    Par défaut
    Salut,

    Je vais essayer ça.

    Merci pour vos réponses.

    A bientôt

  5. #5
    Membre régulier
    Inscrit en
    Mars 2007
    Messages
    148
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Mars 2007
    Messages : 148
    Points : 83
    Points
    83
    Par défaut
    Salut,

    Je viens juste d'étudier vos réponses car j'avais des examens.

    Je n'arrive toujours pas à copier les données d'Excel vers un StringGrid.

    Mon idée c'est d'utiliser un TOpenDialog, ce que j'ai fais, et de choisir le fichier. Donc j'aurai le FileName que je met dans un Edit1 et après je copierai les données du fichier dans un StringGrid.

    J'ai essayé ce programme, mais j'ai une erreur "une exception s'est produite" :

    Dans cet exemple je suppose que la taille des données sous Excel est 2*5.

    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
    void __fastcall TForm1::Button4Click(TObject *Sender)
    {
    Variant vMSExcel;
    vMSExcel = Variant::GetActiveObject("Excel.Application");
    vMSExcel.OlePropertySet("Visible", true);
     
    Variant vFileName, vXLWorkbook, vXLWorkbooks;
    vMSExcel.OlePropertySet("Visible", true);
    vFileName = Edit1-Text;
    vXLWorkbooks = vMSExcel.OlePropertyGet("Workbooks");
    vXLWorkbook = vXLWorkbooks.OleFunction("Open", vFileName);
     
    Variant vWorksheet, vSheetName;
     
    vSheetName = "Feuil1";
     
    vWorksheet = vXLWorkbook.OlePropertyGet("Worksheets",vSheetName);
     
     
    Variant vValue, vLn,vCl, vCell;
    int i,j;
    for(j=0;j<2;j++)
    {
    vLn=j+1;
    vLn=vLn.operator int();
    for(i=0;i<5;i++)
    {
    vCl =i+1;
    vCl =vCl.operator int();
    vCell = vWorksheet.OlePropertyGet("Cells",vLn,vCl);
    vValue = vCell.OlePropertyGet("Value");
    StringGrid1->Cells[j][i] =vValue;
    }
    }
    }
    Il faut que j’aie le nombre de colonne et de ligne des données d’Excel pour que je puisse définir le StringGrid.

    Je suis dans le pétrin, aider moi .

    A bientôt

  6. #6
    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 Hoopsy:
    Voici comment connaitre le nombre de lignes et de colonnes concecutives
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    // on compte le nombre de lignes et le nombre de colonnes
    //
    Variant Rows, Count, vUsedRange, vLines;
    vWorksheet = vXLWorkbook.OlePropertyGet("Worksheets", 1);
    vUsedRange = vWorksheet.OlePropertyGet("UsedRange");
    vLines = vUsedRange.OlePropertyGet("Rows");
    int nb_lignes = vLines.OlePropertyGet("Count");
    vLines = vUsedRange.OlePropertyGet("Columns");
    int nb_colonnes = vLines.OlePropertyGet("Count");
    --
    Plutot que d'essayer de réinventer la roue, apprenons à nous en servir

  7. #7
    Membre régulier
    Inscrit en
    Mars 2007
    Messages
    148
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Mars 2007
    Messages : 148
    Points : 83
    Points
    83
    Par défaut
    Salut blondelle,

    Merci pour votre implication.

    Je suis en train de programmer étape par étape pour éviter de faire des erreurs.

    Sur ma forme j'ai un StringGrid1 (pour contenir les données), Edit1 (pour contenir le chemin du fichier Excel sélectionné), OpenDialog1 (pour parcourir) et deux boutons (l'un pour sélectionner un fichier Excel et l'autre pour faire le transfert des données).

    J'ai programmé la sélection du fichier (Button1) mais j'ai une erreur lors de l'ouverture de ce fichier (Button2) .

    Voici le programme :

    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
     
    //-------------------------------------------------------------------------
     
    #include <vcl.h>
    #include <utilcls.h>
    #include "Unit1.h"
    //-------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TForm1 *Form1;
    //-------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent* Owner)
            : TForm(Owner)
    {
    }
    //-------------------------------------------------------------------------
     
     
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
    Form1->OpenDialog1->Filter = "Fichier Excel |*.XLS";
    Form1->OpenDialog1->Execute();
    Edit1->Text=Form1->OpenDialog1->FileName;
    }
     
    //-------------------------------------------------------------------------
     
    void __fastcall TForm1::Button2Click(TObject *Sender)
    {
    Variant vMSExcel;
     
    vMSExcel = Variant::CreateObject("Excel.Application");
    vMSExcel.OlePropertySet("Visible", true);
     
    Variant vFileName, vXLWorkbooks, vXLWorkbook;
     
    vFileName = Edit1->Text;
    vXLWorkbooks = vMSExcel.OlePropertyGet("Workbooks");
    vXLWorkbook = vXLWorkbooks.OleFunction("Open", vFileName);
    }
     
    //-------------------------------------------------------------------------
    Est-ce que vous voyez l'erreur ???? Si c'est le cas dites le moi, please.

    A bientôt

  8. #8
    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 Hoopsy:
    Tu ne peut pas recuperer un Variant d'un Edit, mais seulement une String ou AnsiString.
    La partie de code modifiee
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Variant vMSExcel;
    vMSExcel = Variant::CreateObject("Excel.Application");
    vMSExcel.OlePropertySet("Visible", true);
    Variant vXLWorkbooks, vXLWorkbook;
    String vFileName; // <--- ici
    vFileName = Edit1->Text;
    vXLWorkbooks = vMSExcel.OlePropertyGet("Workbooks");
    vXLWorkbook = vXLWorkbooks.OleFunction("Open", vFileName.c_str()); // <--- ici
    --
    Plutot que d'essayer de réinventer la roue, apprenons à nous en servir

  9. #9
    Membre régulier
    Inscrit en
    Mars 2007
    Messages
    148
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Mars 2007
    Messages : 148
    Points : 83
    Points
    83
    Par défaut
    Salut blondelle,

    Je te remercie pour ta rapidité.

    Maintenant ça marche 5/5.

    Je continue la suite, j'espère que je ne rencontrerai plus de problèmes. Quelque soit x je te contacterai.

    A bientôt et merci encore

  10. #10
    Membre régulier
    Inscrit en
    Mars 2007
    Messages
    148
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Mars 2007
    Messages : 148
    Points : 83
    Points
    83
    Par défaut
    Salut blondelle,

    C'est bon, tout marche à merveille.

    Je te remercie encore pour tes réponses claires.

    A bientôt

  11. #11
    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
    Je suis content pour toi
    A+
    --
    Plutot que d'essayer de réinventer la roue, apprenons à nous en servir

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

Discussions similaires

  1. Comment intégrer des données XML dans flash CC?
    Par vanezou dans le forum Flash
    Réponses: 0
    Dernier message: 05/05/2014, 17h59
  2. Comment enregistrer des données de DataGridView dans dataset
    Par hellspawn_ludo dans le forum Windows Forms
    Réponses: 4
    Dernier message: 10/05/2007, 08h23
  3. [VBA-E]Transfere des données d'Excel dans une table Access
    Par flo83 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 07/04/2006, 09h22
  4. Importer des données de Excel dans pages .ASP
    Par sperron dans le forum ASP
    Réponses: 8
    Dernier message: 24/03/2006, 16h31
  5. [MySQL] Comment insérer des données contenant un "\" dans
    Par ALEX77 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 04/09/2005, 16h04

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