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

Sauvegarde de fichier exel en c++ builder


Sujet :

C++

  1. #1
    Futur Membre du Club
    Inscrit en
    Mai 2007
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 10
    Points : 7
    Points
    7
    Par défaut Sauvegarde de fichier exel en c++ builder
    Bonjour tout le monde j'ai une question sur le c++ builder

    Voila je sais enregister le contenue d'1 StringGrid sur un fichier exel mais uniquement lorsqu'il s'agit d'entier ou reel ou de type char

    mais pour le cas d'une chaise de caracter je ne sais pas comment m'y prendre j'ai lance une recherche sur le forum mais j'ai rien trouve

    Voila mon code souce comme exepmle pour integer

    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
    Variant vMSExcel;
     
    vMSExcel = Variant::CreateObject("Excel.Application");
    vMSExcel.OlePropertySet("Visible", true);
     
     
     
    Variant vXLWorkbook, vXLWorkbooks;
     
    vXLWorkbooks = vMSExcel.OlePropertyGet("Workbooks");
    vXLWorkbook = vXLWorkbooks.OleFunction("Add");
     
     
    Variant vWorksheet, vSheetName;
     
    vSheetName = "Feuil1";
     
    vWorksheet = vXLWorkbook.OlePropertyGet("Worksheets",vSheetName);
     
     
    Variant vValue, vLn,vCl, vCell;
    int q,p;
    for(p=0;p<2;p++)
    {
    vLn=p+1;
    vLn=vLn.operator int();
    for(q=0;q<60;q++)
    {
    vCl =q+1;
    vCl =vCl.operator int();
    vCell = vWorksheet.OlePropertyGet("Cells",vLn,vCl);
    vValue = StringGrid2->Cells[q][p];
    vValue=vValue.operator int();                  ////a modifier
    vCell.OlePropertySet("Value", vValue);
    }
    }
    Variant vFileName;
    vFileName = "File.xls";
    vXLWorkbook.OleProcedure("Saveas", vFileName);
    la parite a modifier je metter un type string au lieu de int mais ça marche pas aidez moi SVP

    Merci d'avance

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Pour écrire une cellule dans une feuille excel, tu vas faire quelque chose comme

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    AnsiString Cellule="A1";
    AnsiString Libelle="MonTexte";
    Variant VRange=Sheet.OlePropertyGet("Range",Cellule.c_str());
    VRange.OlePropertySet("Value",Libelle.c_str());
    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    int lig=1;
    int col=1;
    AnsiString Libelle="MonTexte";
    Variant VRange=Sheet.OlePropertyGet("Cells",lig,col);
    VRange.OlePropertySet("Value",Libelle.c_str());
    Si tu remplaces Libelle par un StringGrid1->Cells[l][c], ca devrait marcher...

    Maintenant, si tu exportes un gros tableau comme ca, ca va être atrocement lent, et une partie de tes utilisateurs (en fait tous les utilisateurs normaux, qui n'aiment pas attendre 30 secondes pour exporter un tableau...) vont te hair...

    Une façon plus rapide de faire est de copier d'abord tes données dans un tableau de Variant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
        int vals[4]={0};
        vals[1]=nblignes-1;
        vals[3]=nbcols-1;
        Variant V1(vals,3,varOleStr);
        for(int i=0;i<nbcols;++i)
            for(int j=0;j<nblignes;j++) V1.PutElement(MaStringGrid->Cells[i][j],j,i);
    (tu peux remplacer varOleStr par varDouble, quand tu exportes des nombres)

    puis à recopier tout cela dans excel ( (l1,c1) et (l2,c2) étant les coordonnées des coins haut gauche et bas droit de ton tableau)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
        Variant VR1=Sheet.OlePropertyGet("Cells",l1,c1);
        Variant VR2=Sheet.OlePropertyGet("Cells",l2,c2);
        Variant VRange=XLSheet.OlePropertyGet("Range",VR1,VR2);
        VRange.OlePropertySet("Value",V1);
    Francois

  3. #3
    Futur Membre du Club
    Inscrit en
    Mai 2007
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 10
    Points : 7
    Points
    7
    Par défaut
    J'ai essayé ton premier code source et ça a marché
    j'essayerai plus tard ton 2eme code source et je t'enverrai ma réponse
    Mais pour le moment le plus important c'est que ça marche

    Merci pour tout mon ami


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

Discussions similaires

  1. Sauvegarde automatique d'un fichier exel
    Par Papoux dans le forum Excel
    Réponses: 14
    Dernier message: 01/10/2013, 14h49
  2. sauvegarder un fichier Access sur un réseau
    Par ginger dans le forum Access
    Réponses: 9
    Dernier message: 08/11/2004, 15h20
  3. Réponses: 2
    Dernier message: 14/05/2004, 12h55
  4. [C#] Pourquoi je ne peux pas sauvegarder le fichier Xml ?
    Par gregoun dans le forum Services Web
    Réponses: 5
    Dernier message: 05/05/2004, 10h00

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