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

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre confirm�
    Inscrit en
    Mars 2007
    Messages
    148
    D�tails du profil
    Informations personnelles :
    �ge : 40

    Informations forums :
    Inscription : Mars 2007
    Messages : 148
    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
    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.

  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
    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);
    }

  4. #4
    Membre confirm�
    Inscrit en
    Mars 2007
    Messages
    148
    D�tails du profil
    Informations personnelles :
    �ge : 40

    Informations forums :
    Inscription : Mars 2007
    Messages : 148
    Par d�faut
    Salut,

    Je vais essayer �a.

    Merci pour vos r�ponses.

    A bient�t

  5. #5
    Membre confirm�
    Inscrit en
    Mars 2007
    Messages
    148
    D�tails du profil
    Informations personnelles :
    �ge : 40

    Informations forums :
    Inscription : Mars 2007
    Messages : 148
    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
    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");

  7. #7
    Membre confirm�
    Inscrit en
    Mars 2007
    Messages
    148
    D�tails du profil
    Informations personnelles :
    �ge : 40

    Informations forums :
    Inscription : Mars 2007
    Messages : 148
    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
    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

  9. #9
    Membre confirm�
    Inscrit en
    Mars 2007
    Messages
    148
    D�tails du profil
    Informations personnelles :
    �ge : 40

    Informations forums :
    Inscription : Mars 2007
    Messages : 148
    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 confirm�
    Inscrit en
    Mars 2007
    Messages
    148
    D�tails du profil
    Informations personnelles :
    �ge : 40

    Informations forums :
    Inscription : Mars 2007
    Messages : 148
    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
    Par d�faut
    Je suis content pour toi
    A+

+ 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