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 :

Exporter contenu DBgrid vers fichier excel [Non suivi]


Sujet :

C++Builder

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 7
    Points : 7
    Points
    7
    Par défaut Exporter contenu DBgrid vers fichier excel
    Bonjour !

    Comment faire pour exporter le contenu d'une DBgrid vers un fichier excel ?

    merci !

  2. #2
    Membre expert
    Avatar de Sunchaser
    Homme Profil pro
    OPNI (Objet Programmant Non Identifié)
    Inscrit en
    Décembre 2004
    Messages
    2 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : OPNI (Objet Programmant Non Identifié)
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 059
    Points : 3 204
    Points
    3 204
    Par défaut
    Bonsoir,
    J'ai trouvé un thème similaire dans une question Delphi : réponse...
    En espérant que tu aimes la jouer de la traduction Delphi/Builder, sinon ils parlent aussi de la Jvcl et d'une fonction adéquate.

    En espérant t'aider,

    @ +

  3. #3
    say
    say est déconnecté
    Membre expérimenté
    Avatar de say
    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 176
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 176
    Points : 1 300
    Points
    1 300
    Par défaut
    J'ai ça : (trouvé sur le forum il me semble )
    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
    58
    59
    60
    61
    62
    void __fastcall MyTools::XLSExport(TDataSet* source,AnsiString dest)
    {
        bool QuitExcelToEnd;
        Variant vFilename, vSaveChanges;
        Variant vMSExcel, vXLWorkbook, vXLWorkbooks, vWorksheet, vRange, vCell, vValue, vColl;
        int NumLine = 1;  // contient le numéro de la ligne où l'on commence à écrire les données sous Excel
        int NumCol = 65;  // "A" code ASCII 65 (réf. à la 1ère colonne sous Excel)
        try
        {
           vMSExcel = Variant::GetActiveObject("Excel.Application");   // Capture d'une instance existante d'Excel
        }
        // Si Excel n'est pas déjà ouvert, une exception est levée ...
        catch(EOleSysError& )
        {
           vMSExcel = Variant::CreateObject("Excel.Application");      // Si Excel n'est pas lancé, on l'exécute
        }
        vMSExcel.OlePropertySet("Visible", true);
        QuitExcelToEnd = false;                                     // On ne fermera pas Excel après le traitement.
        vMSExcel.OlePropertySet("WindowState", -4140 );
        vXLWorkbooks = vMSExcel.OlePropertyGet("Workbooks");           // Récupération du pointeur vers la collection des Workbooks
        vXLWorkbook = vXLWorkbooks.OleFunction("Add");                 // Ajout d'un nouveau Workbook à la collection
        vWorksheet = vXLWorkbook.OlePropertyGet("Worksheets","Feuil1");   // On active le sheet par défaut "Feuil1"
     
        source->First();                  // On se place sur le 1er enregistrement de la requête
        for (int j = 0; j < source->FieldCount; j++)     // ... et son nb de champs pr libellés colonnes
        {
          AnsiString Ref = "";                               // contiendra la référence à la cellule Excel, i.e. "A1"
          Ref.cat_sprintf("%c%d", NumCol+j, NumLine);      // donne "A1" pour 65 et 1
          vRange = StringToOleStr(Ref);                      // Ref est converti en Range (bien qu'il s'agisse toujours d'un Variant)
          vCell = vWorksheet.OlePropertyGet("Range", vRange);// récupération du pointeur vers la cellule sélectionnée ("A1")
          vValue = StringToOleStr(source->Fields->Fields[j]->DisplayName);
          vCell.OlePropertySet("Value", vValue);             // affectation de la valeur de la requête à la cellule référencée ("A1")
        }
        NumLine = 2;                    //on se place sur la ligne suivant les libellés...
        for (int t = 0; t < source->RecordCount; t++)       // nb d'enregistrements de la requête
        {
     
           for (int i = 0; i < source->FieldCount; i++)     // ... et son nb de champs
           {
              AnsiString Ref = "";                               // contiendra la référence à la cellule Excel, i.e. "A1"
              Ref.cat_sprintf("%c%d", NumCol+i, NumLine+t);      // donne "A1" pour 65 et 1
              vRange = StringToOleStr(Ref);                      // Ref est converti en Range (bien qu'il s'agisse toujours d'un Variant)
              vCell = vWorksheet.OlePropertyGet("Range", vRange);// récupération du pointeur vers la cellule sélectionnée ("A1")
              vValue = StringToOleStr(source->Fields->Fields[i]->AsString);
              vCell.OlePropertySet("Value", vValue);             // affectation de la valeur de la requête à la cellule référencée ("A1")
           }
           source->Next();             // on passe à l'enregistrement suivant       
        }
     
        vFilename = StringToOleStr(dest);   // le nom de fichier de la SaveDialog est converti au format OLE
        vMSExcel.OlePropertySet("DisplayAlerts", true);         // on désactive les DisplayAlerts d'Excel (pour éviter les messages d'overwriting d'Excel)
        vXLWorkbook.OleProcedure("Saveas", vFilename);           // sauvegarde du fichier sous le nom préalablement sélectionné
        vSaveChanges = true;    // true : modif save, false : not save, Unassigned : demande à l'utilisateur
        //vXLWorkbook.OleFunction("Close", vSaveChanges, vFilename);  // fermeture du classeur qui a recueilli les données
        vMSExcel.OlePropertySet("DisplayAlerts", true);          // réactivation des DisplayAlerts
        if (QuitExcelToEnd)                                      // Excel doit-il être fermé ?
        {                                                        // Si oui ...
           vMSExcel.OleFunction("Quit");                         // on le ferme
           vMSExcel = Unassigned;                                // ... et le pointeur de son instance est réinitialisé
        }
     
    }

Discussions similaires

  1. [Débutant] exporter liste view vers fichier excel
    Par Msysteme dans le forum C#
    Réponses: 8
    Dernier message: 23/09/2012, 02h13
  2. Exportation HTML/PHP vers fichier Excel existant
    Par fthem dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 5
    Dernier message: 10/01/2008, 15h07
  3. export de données vers fichier excel
    Par babafredo dans le forum ASP
    Réponses: 4
    Dernier message: 12/09/2007, 09h27
  4. exporter requete access vers fichier excel
    Par pmax35 dans le forum ASP
    Réponses: 11
    Dernier message: 07/08/2007, 17h06
  5. exporter contenu d'un fichier excel vers base mysql ?
    Par ouldfella dans le forum Requêtes
    Réponses: 5
    Dernier message: 08/03/2007, 10h31

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