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

Autres IDE Pascal Discussion :

Enregistrer un TStringGrid en fichier CSV ou bien XML [CodeTyphon]


Sujet :

Autres IDE Pascal

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2015
    Messages : 92
    Par défaut Enregistrer un TStringGrid en fichier CSV ou bien XML
    Bonjour, je souhaiterais enregistrer un TStringGrid en un fichier CSV ou bien XML.
    J'ai essayé un SaveToFile('nom du fichier.csv') : il me donne un fichier texte ordinaire. Pouvez-vous m'aider s'il vous plaît ?

    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
    63
    64
    unit Unit1;
     
    {$mode objfpc}{$H+}
     
    interface
     
    uses
      Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, Grids,
      StdCtrls;
     
    type
     
      { TFormMonFormulaire }
     
      TFormMonFormulaire = class(TForm)
        btnSauvegarderXML: TButton;
        btnSauvegarderCSV: TButton;
        Button1: TButton;
        btnFermer: TButton;
        StringGrid1: TStringGrid;
        procedure btnFermerClick(Sender: TObject);
        procedure btnSauvegarderCSVClick(Sender: TObject);
        procedure btnSauvegarderXMLClick(Sender: TObject);
        procedure StringGrid1Click(Sender: TObject);
      private
        { private declarations }
      public
        { public declarations }
      end;
     
    var
      FormMonFormulaire: TFormMonFormulaire;
     
    implementation
     
    {$R *.lfm}
     
    { TFormMonFormulaire }
     
    procedure TFormMonFormulaire.StringGrid1Click(Sender: TObject);
    var i : Integer;
    begin
          With StringGrid1 do
     
           For i:=1 To ColCount-1 do
              Cells[i,0]:='Col '+IntToStr(i);
    end;
     
    procedure TFormMonFormulaire.btnSauvegarderXMLClick(Sender: TObject);
    begin
          StringGrid1.SaveToFile('Grille.XML');
    end;
     
    procedure TFormMonFormulaire.btnFermerClick(Sender: TObject);
    begin
      Close;
    end;
     
    procedure TFormMonFormulaire.btnSauvegarderCSVClick(Sender: TObject);
    begin
     
    end;
     
    end.

  2. #2
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 166
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 166
    Billets dans le blog
    9
    Par défaut
    Enregistrer est une chose, convertir en est une autre ! Pour le CSV, c'est assez facile : il suffit d'ajouter des virgules, éventuellement des guillemets et peut-être autre chose que j'oublie, mais rien de bien compliqué. Pour le XML, vous serez obligé de passer par une bibliothèque, mais je crois que Lazarus a déjà tout ce qu'il faut. Regardez dans les exemples.

    Mais quel est votre besoin exactement ? Parce CSV ou XML, ce n'est pas la même chose. Et pourriez-vous nous donner un échantillon du texte que vous souhaitez traiter ?

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2015
    Messages : 92
    Par défaut
    Citation Envoyé par Roland Chastain Voir le message
    Enregistrer est une chose, convertir en est une autre ! Pour le CSV, c'est assez facile : il suffit d'ajouter des virgules, éventuellement des guillemets et peut-être autre chose que j'oublie, mais rien de bien compliqué. Pour le XML, vous serez obligé de passer par une bibliothèque, mais je crois que Lazarus a déjà tout ce qu'il faut. Regardez dans les exemples.

    Mais quel est votre besoin exactement ? Parce CSV ou XML, ce n'est pas la même chose. Et pourriez-vous nous donner un échantillon du texte que vous souhaitez traiter ?
    Merci pour votre réponse,
    Je veux pouvoir enrengistrer en CSV
    et enrengistrer aussi en XML par le biais de deux boutons différent comme mon code le montre
    Je suis sous Typhon.
    Pouvez vous me donner un exemple de code pour l'enrengistrement du CSV et pour l'enrengistrement du XML svp ?

  4. #4
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 931
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 931
    Billets dans le blog
    6
    Par défaut
    Pour enregistrer en CSV, il suffit de parcourir la grille ligne par ligne et de séparer les contenus des colonnes par un ';' ou une ',' en écrivant la ligne correspondante du fichier. Il ne devrait pas y avoir de difficulté à le transposer en code fonctionnel.

    Pour le XML, je passe la main, ignorant de ce format !
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  5. #5
    Rédacteur

    Avatar de gvasseur58
    Homme Profil pro
    Cultivateur de code (bio)
    Inscrit en
    Février 2013
    Messages
    1 436
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Cultivateur de code (bio)
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2013
    Messages : 1 436
    Billets dans le blog
    84
    Par défaut
    Bonsoir,

    Pour CSV, il y a beaucoup plus facile que de balayer le contenu de la grille. En effet, la classe TStringGrid est déjà dotée de procédures supportant ce format :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    procedure LoadFromCSVStream(AStream: TStream; ADelimiter: Char=','; WithHeader: boolean=true);
    procedure LoadFromCSVFile(AFilename: string; ADelimiter: Char=','; WithHeader: boolean=true);
    procedure SaveToCSVStream(AStream: TStream; ADelimiter: Char=','; WithHeader: boolean=true; VisibleColumnsOnly: boolean=false);
    procedure SaveToCSVFile(AFileName: string; ADelimiter: Char=','; WithHeader: boolean=true; VisibleColumnsOnly: boolean=false);
    Ces procédures sont définies dans l'ancêtre TCustomStringGrid et sont publiques : elles sont par conséquent héritées par TStringGrind et utilisables directement. A priori, ce sont celles contenant File qui sont les plus évidentes.

    Pour XML, il faut faire appel à des unités supplémentaires dont laz2_DOM. Mais le travail est plus complexe

    Gilles
    Accès à mon site et à mon blog. Actualités, cours et ressources Delphi, Lazarus et Pascal.
    Pensez à la balise - Quelqu'un vous a aidé ou vous appréciez une intervention ? Pensez au

  6. #6
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2015
    Messages : 92
    Par défaut
    Citation Envoyé par gvasseur58 Voir le message
    Bonsoir,

    Pour CSV, il y a beaucoup plus facile que de balayer le contenu de la grille. En effet, la classe TStringGrid est déjà dotée de procédures supportant ce format :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    procedure LoadFromCSVStream(AStream: TStream; ADelimiter: Char=','; WithHeader: boolean=true);
    procedure LoadFromCSVFile(AFilename: string; ADelimiter: Char=','; WithHeader: boolean=true);
    procedure SaveToCSVStream(AStream: TStream; ADelimiter: Char=','; WithHeader: boolean=true; VisibleColumnsOnly: boolean=false);
    procedure SaveToCSVFile(AFileName: string; ADelimiter: Char=','; WithHeader: boolean=true; VisibleColumnsOnly: boolean=false);
    Ces procédures sont définies dans l'ancêtre TCustomStringGrid et sont publiques : elles sont par conséquent héritées par TStringGrind et utilisables directement. A priori, ce sont celles contenant File qui sont les plus évidentes.

    Pour XML, il faut faire appel à des unités supplémentaires dont laz2_DOM. Mais le travail est plus complexe

    Gilles
    Merci Beaucoup de votre aide.
    Je suis débutant et je n'y connais rien

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

Discussions similaires

  1. Enregistrer un QGraphicView en fichier *.CSV
    Par skyze dans le forum Débuter
    Réponses: 4
    Dernier message: 21/03/2014, 13h04
  2. [MySQL] Enregistrer un fichier .csv obtenu d'un appel SQL
    Par guillaumeIOB dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 15/01/2007, 18h55
  3. Enregistrer un fichier ".CSV" en ".XLS"
    Par Isa31 dans le forum API, COM et SDKs
    Réponses: 6
    Dernier message: 13/03/2006, 14h05
  4. Réponses: 12
    Dernier message: 27/01/2006, 11h07
  5. [CSV] Enregistrer sous? Apres un fichier enregistré
    Par Anakior dans le forum Langage
    Réponses: 12
    Dernier message: 19/12/2005, 13h30

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