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

Delphi Discussion :

Tstringgrid vers excel


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Novembre 2006
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 147
    Par défaut Tstringgrid vers excel
    Bonjour,

    Avec Delphi 7, sous windows 10.

    Je suis capable d'exporter le contenu d'un Tstringgrid au format excel avec ce 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
    39
    40
    41
     
    procedure XlsWriteCellLabel(XlsStream: TStream; const ACol, ARow: Word;
      const AValue: string);
    var
      L: Word;
    const
      {$J+}
      CXlsLabel: array[0..5] of Word = ($204, 0, 0, 0, 0, 0);
      {$J-}
    begin 
      L := Length(AValue); 
      CXlsLabel[1] := 8 + L; 
      CXlsLabel[2] := ARow; 
      CXlsLabel[3] := ACol; 
      CXlsLabel[5] := L; 
      XlsStream.WriteBuffer(CXlsLabel, SizeOf(CXlsLabel)); 
      XlsStream.WriteBuffer(Pointer(AValue)^, L); 
    end; 
     
     
    function SaveAsExcelFile(AGrid: TStringGrid; AFileName: string): Boolean;
    const 
      {$J+} CXlsBof: array[0..5] of Word = ($809, 8, 00, $10, 0, 0); {$J-} 
      CXlsEof: array[0..1] of Word = ($0A, 00); 
    var 
      FStream: TFileStream; 
      I, J: Integer;
    begin 
      FStream := TFileStream.Create(PChar(AFileName), fmCreate or fmOpenWrite); 
      try  
        CXlsBof[4] := 0; 
        FStream.WriteBuffer(CXlsBof, SizeOf(CXlsBof));
        for i := 0 to AGrid.ColCount - 1 do 
          for j := 0 to AGrid.RowCount - 1 do  
            XlsWriteCellLabel(FStream, I, J, AGrid.cells[i, j]); 
        FStream.WriteBuffer(CXlsEof, SizeOf(CXlsEof));  
        Result := True; 
      finally 
        FStream.Free; 
      end; 
    end;

    J'arrive à ouvrir le .xls généré avec excel 2013 mais l'application à laquelle il est destiné refuse de l'ouvrir. Si, par contre, je l'ouvre avec excel 2013 et le sauve aux format [Excel 97 - Modèle Excel 2003], l'application en question accepte d'en faire son repas.

    Ma question est donc la suivante : est-il selon vous possible de spécifier quelque chose dans le code que j'utilise pour rendre le .xls généré compatible avec leformat [Excel 97 - Modèle Excel 2003] ?

    Ou mieux, quelqu'un connait une façon d'exporte le contenu d'un Stringgrid à ce format avec autre chose (composant, code, OLE etc.)

    Par avance merci.

    Eric Beaumard

  2. #2
    Membre Expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 509
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 509
    Par défaut
    Bonjour,

    as tu essayé avec OLE ou bien avec TExcelApplication ?


    A+
    Charly

  3. #3
    Membre Expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 509
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 509
    Par défaut
    Tu peux aussi essayer ADOX, solution gratuite et qui n'a pas besoin d'Excel sur le poste

    Regarde cette discussion à partir du post 15 de Papy214

    A+
    Charly

  4. #4
    Membre chevronné Avatar de blonde
    Femme Profil pro
    Développeur Delphi
    Inscrit en
    Septembre 2003
    Messages
    278
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Delphi

    Informations forums :
    Inscription : Septembre 2003
    Messages : 278
    Par défaut
    Citation Envoyé par Eric Beaumard Voir le message
    J'arrive à ouvrir le .xls généré avec excel 2013 mais l'application à laquelle il est destiné refuse de l'ouvrir. Si, par contre, je l'ouvre avec excel 2013 et le sauve aux format [Excel 97 - Modèle Excel 2003], l'application en question accepte d'en faire son repas.
    Une idée, si tu compares les entêtes des fichiers format 2013 et format 2003 dans Notepad++ par exemple, est-ce que tu repères une différence ?

  5. #5
    Membre confirmé
    Inscrit en
    Novembre 2006
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 147
    Par défaut
    Merci à tous et toutes pour vos réponses elles m'ont permis de résoudre mon problème.

  6. #6
    Membre Expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 509
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 509
    Par défaut
    Bonjour Eric,

    peux tu nous dire ce que tu as fait ? cela peut intéresser d'autres personnes ...

    A+
    Charly

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

Discussions similaires

  1. TStringGrid vers Excel
    Par ac/dc dans le forum Débuter
    Réponses: 6
    Dernier message: 06/12/2013, 07h30
  2. Comment exporter un TStringGrid vers Excel par Linkin
    Par MelkInarian dans le forum Delphi
    Réponses: 2
    Dernier message: 09/02/2007, 09h37
  3. [CR] Exportation vers Excel
    Par djamel64 dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 01/12/2003, 14h52
  4. exportation vers excel
    Par Pm dans le forum XMLRAD
    Réponses: 3
    Dernier message: 24/01/2003, 14h48
  5. [] [Excel] Exporter un graphe MSChart vers Excel
    Par Gonzo dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 18/12/2002, 17h49

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