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 :

Excel et C++ Builder6 pour alimenter un TChart


Sujet :

C++Builder

  1. #1
    Membre averti
    Inscrit en
    Décembre 2002
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 35
    Par défaut Excel et C++ Builder6 pour alimenter un TChart
    Bonjour!
    en utilisant un composant Tchart j'arrive a introduire des données de façon manuelle, ou avec les fonctions!
    est ce qu'il existe une façon simple de rentrer les données directement d'un fichier Excel au composant Chart ?
    en evitant d'enregistrer le fichier en .txt puis charger le fichier et ajouter chaque valeur avec la commande Add (je crois je ne suis pas devant mon Ide).
    meme si cette solution est réalisable je cherche la plus simple possible
    Merci de me répondre A+

  2. #2
    Membre éprouvé
    Avatar de doudoustephane
    Homme Profil pro
    Gérant
    Inscrit en
    Août 2005
    Messages
    1 129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Gérant

    Informations forums :
    Inscription : Août 2005
    Messages : 1 129
    Par défaut
    ton message n'etant pas clair, voici deux solutions de travailler avec Excel a partir de BCB6 :

    1) tu utilises cela : http://lfe.developpez.com/Excel/

    2) tu utilises le TExcelApplication fournit dans BCB6 (je ne l'ai pas utiliser personnellement) : http://c.developpez.com/faq/bcb/?page=msofficeexcel

    et, un petit conseil, pense aux

  3. #3
    Membre averti
    Inscrit en
    Décembre 2002
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 35
    Par défaut
    SLT!
    Ok merci ben
    Chart1->SeriesList->Series[0]->Add(5,"Code" , 0x000080FF ) ;
    a la place de 5 je met les valeurs prise du fichier excel!
    sinon est ce qu'il ya une methode pour relier directement un fichier excel et un Tchart!?
    Je cherche dans la FAQ de mon coté, Merci
    A+

  4. #4
    Membre averti
    Inscrit en
    Décembre 2002
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 35
    Par défaut
    Bonjour,
    voila apres quelque modification d'un code qui me servait pour charger le code de taches (en assembleur). comme je n'ai pas pu acceder a un fichier Excel depuis le Borland C++ builder6 (trop compliqué!!!) je l'avoue avec le manque d'exemples aussi je n'ai pas pu le faire alors voici mon idée :
    je copie la premiére colonne du fichier excel dans un fichier texte, ensuite je copie la deuxiéme colonne dans un autre fichier texte. Et avec mon petit programme en cliquant sur le bouton load dont voici le code :
    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
     
    int handle;
    char ch;
    String chaine="";
    String Code,Code2;
    if (OpenDialog1->Execute())
    Code=OpenDialog1->FileName;
    if (OpenDialog1->Execute())
    Code2=OpenDialog1->FileName;
    const char* temp=Code.c_str();
    handle = open(temp,O_CREAT | O_RDWR|O_TEXT,S_IREAD | S_IWRITE);
    lseek(handle, 0L, SEEK_SET);
    do
    {
    read(handle, &ch, 1);
    if (ch!='\n') chaine=chaine+ch;
    if ((ch == '\n')||(eof(handle)))
    {
    Chart1->SeriesList->Series[0]->Add(StrToFloat(chaine),"" , clLime ) ;
    chaine="";
    }
    }while (!eof(handle));
    close(handle);
    //Fichier2
    temp=Code2.c_str();
    handle = open(temp,O_CREAT | O_RDWR|O_TEXT,S_IREAD | S_IWRITE);
    lseek(handle, 0L, SEEK_SET);
    do
    {
    read(handle, &ch, 1);
    if (ch!='\n') chaine=chaine+ch;
    if ((ch == '\n')||(eof(handle)))
    {
    Chart1->SeriesList->Series[1]->Add(StrToFloat(chaine),"" , clLime ) ;
    chaine="";
    }
    }while (!eof(handle));
    close(handle);
    j'envoie les données directement aux Séries du Tchart et j'obtient les graphes voulus.
    J'esper que c'est plus claire et que vous pouvez m'aider maintenant meme si cette solution marche et que les données en .txt (copier coller) sont plus petite (poids du fichier) que dans le fichier Excel. Je pense que mon probléme est plus claire.
    Merci A+

  5. #5
    Membre averti
    Inscrit en
    Décembre 2002
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 35
    Par défaut
    Composant :
    Tchart
    ExcelApplication
    Button
    Check button du nom de chek
    Memo

    J’ai réussi a afficher les valeurs de la première colonne mais en changeant le A par B (pour la deuxième colonne) dans CellRef il n’affiche rien !
    Le code d’origine est de BuilderSpec dans Tek-Tips Forums.
    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
    void __fastcall TForm1::LoadClick(TObject *Sender)
    {
    if ( OpenDialog1->Execute() )
        {
            _WorkbookPtr wb;
            AnsiString SheetName;
            _WorksheetPtr ws;
            Excel_2k::SheetsPtr sheets;
            Excel_2k::RangePtr R;
     
            AnsiString FN = OpenDialog1->FileName;
     
            ExcelApplication1->Connect();
     
            wb = ExcelApplication1->Workbooks->Open(WideString(FN));
            ws = ExcelApplication1->ActiveSheet;
            SheetName = ws->get_Name();
            sheets = wb->get_Sheets();
            int i = 1;
            long cont=sheets->get_Count();
            AnsiString CellContent="1";
            AnsiString CellRef;
     
            while (CellContent!="")
            {
                ws = sheets->get_Item((TVariant)1);
     
                if ( ws->get_Visible() == -1 )
                {
                    CellRef = "A"+IntToStr(i);
                    i++;
                    R = ws->get_Range((TVariant)CellRef.c_str());
                    CellContent = (String)((TVariant)R->get_FormulaR1C1());
                    if (CellContent!="")
                    {
                    Chart1->SeriesList->Series[0]->Add(StrToFloat(CellContent),"" , clLime ) ;
                    if (Check->Checked==true) Memo1->Lines->Add ( /*"Cell A1 contains " +*/ CellContent );
                    }
                }
           }
            ExcelApplication1->Disconnect();
         }
     
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::ClearClick(TObject *Sender)
    {
    Chart1->SeriesList->Series[0]->Clear();
    Chart1->SeriesList->Series[1]->Clear();        
    }
    //---------------------------------------------------------------------------
    Merci de m’aider j’attends vos critiques.

  6. #6
    Membre averti
    Inscrit en
    Décembre 2002
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 35
    Par défaut
    eBonjour!
    ben c'est comme si je disais bonjour a moi même mais c'est pas grave!
    j'ai résolu le probléme.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CellContent = (String)((TVariant)R->get_FormulaR1C1());
    est remplacé par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CellContent = (String)((TVariant)R->get_value());
    A+

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

Discussions similaires

  1. [VB.NET] Importation données Excel pour alimenter BDD Sql Server
    Par Aphrauditte dans le forum Windows Forms
    Réponses: 5
    Dernier message: 03/05/2006, 16h24
  2. [VBA] Excell : demande d'aide pour une macro
    Par Fealendril dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 11/01/2006, 16h28
  3. Réponses: 2
    Dernier message: 18/11/2005, 16h29
  4. Réponses: 11
    Dernier message: 29/06/2005, 17h55
  5. [VB.NET] Problème pour alimenter une listbox.
    Par gueguen23 dans le forum Windows Forms
    Réponses: 6
    Dernier message: 17/01/2005, 14h05

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