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

Langage Delphi Discussion :

Réécrire un fichier CSV en fichier TXT


Sujet :

Langage Delphi

  1. #1
    Membre du Club Avatar de bigey3
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Décembre 2007
    Messages : 124
    Points : 50
    Points
    50
    Par défaut Réécrire un fichier CSV en fichier TXT
    salut,
    je souhaiterais réecrire un fichier csv en fichier txt.

    un coup de pouce s'il vous plait....

  2. #2
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    Bonjour,

    Un fichier .csv étant aussi un fichier texte ASCII, je n'ai pas compris la question
    • Copie de fichier ?
    • Changement d'extension ?
    • Reformattage ?

  3. #3
    Membre du Club Avatar de bigey3
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Décembre 2007
    Messages : 124
    Points : 50
    Points
    50
    Par défaut Réécrire un fichier CSV en fichier TXT
    salut

    en fait j'ai un fichier csv qui est assez lourd surtout lorsque je voudrais charger les données dans un BD.
    J'ai donc penser a réecrire le contenu du fichier csv dans un fichier texte tout en conservant à l'identique les données et les separateur du fichier csv.

    merci de me guider..

  4. #4
    Membre averti
    Inscrit en
    Octobre 2005
    Messages
    338
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 338
    Points : 383
    Points
    383
    Par défaut
    bonsoir

    Citation Envoyé par bigey3 Voir le message
    salut

    J'ai donc penser a réecrire le contenu du fichier csv dans un fichier texte tout en conservant à l'identique les données et les separateur du fichier csv.
    renommer 'monFichier.CSV' en 'monFichier.TXT' devrait sufire!

    à+

  5. #5
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Citation Envoyé par bigey3 Voir le message
    salut

    en fait j'ai un fichier csv qui est assez lourd surtout lorsque je voudrais charger les données dans un BD.
    J'ai donc penser a réecrire le contenu du fichier csv dans un fichier texte tout en conservant à l'identique les données et les separateur du fichier csv.

    merci de me guider..
    Ca ne changera en rien la lourdeur du fichier, comme on te l'a dit, un fichier Csv est un fichier Txt, c'est juste le nom de l'extension qui change pas le contenu.

  6. #6
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Points : 4 935
    Points
    4 935
    Par défaut
    Salut,

    Bien que ça risque de ne pas trop coller au sujet, je te propose de regarder ce post qui pourra surement te servir pour la suite

    A+

  7. #7
    Membre du Club Avatar de bigey3
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Décembre 2007
    Messages : 124
    Points : 50
    Points
    50
    Par défaut dépannage pour utilisation de StringList
    Salut
    j'ai un code qui me permet de copier le contenu d'un premier fichier et d'ecrire dans un second fichier.
    la difficulté est que ;je souhaiterais ajouté un mot identique au début de chaque ligne dans mon fichier.
    je veux également remplacé chaque séparateur rencontré par un autre séparateur.


    voila mon 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
    var
    m:integer;
    SL: TStringList;
     
    begin
      SL := TStringList.Create;
      try
        SL.Assign(Memo1.Lines);
        for m := SL.Count - 1 downto 0 do
    //recontre du séparateur
          if Trim(SL[m]) = ',' then
          SL[m]:='|';
    //ecriture de l'entete  dans le  fichier
         SL[m+1]:='DateSubscriber|MoovOrigDur';
     
        SL.SaveToFile(savedialog1.filename+'.txt');
      finally
        SL.Free;
      end;
    mon mémo contient

    9672005,9672005,0,0,,1,1,1,1
    9661559,9661559,0,0,,1,1,1,1



    je souhaiterais avoir

    20071205|9672005|9672005|0|0||1|1|1|1
    20071205|9661559|9661559|0|0||1|1|1|1



    merci de me guider

  8. #8
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Pour le séparateur il y a plus simple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SL.text := StringReplace(SL.text,',','|',[rfReplaceAll]);
    Puis pour rajouter la valeur en début il te suffit de faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    for i := 0 to SL.count -1 do
      SL.Strings[i] := DateSubscriber + '|' + SL.Strings[i];
     
    SL.savetoFile(savedialog1.filename+'.txt');

  9. #9
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 703
    Points : 25 570
    Points
    25 570
    Par défaut
    Si le fichier est volumineux et la machine peu puissante, la TStringList sera plus lente qu'une simple lecture séquentielle, d'ailleurs StringReplace n'est pas non plus la plus rapide (passe par une API windows qui gère les options régionales)

    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
    AssignFile(TextIn, ...);
    Reset(TextIn);
    try
      AssignFile(TextOut, ...);
      Rewrite(TextOut);
      try
        while not EOF(TextIn) do
        begin
          ReadLn(TextIn, S);
          ReplaceChar(S, ';', '|');
          WriteLn(TextOut, S);
        end;
      finally
        CloseFile(TextOut);
    finally
      CloseFile(TextIn);
    end;
    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
    {* -----------------------------------------------------------------------------
    la procédure ReplaceChar remplace dans S le caractère OldChar par le caractère NewChar
    @param S chaine à modifier
    @param OldChar caractère à remplacer
    @parem NewChar caractère de substitution
    ------------------------------------------------------------------------------ }
    procedure ReplaceChar(var S: string; const OldChar, NewChar: Char);
    var
      i: Integer;
      p: PChar;
    begin
       if OldChar = NewChar then Exit;
     
       p := @S[1];
       for i := 0 to Length(S)-1 do
          if PChar(p+i)^ = OldChar then
             PChar(p+i)^ := NewChar;
    end;

  10. #10
    Membre du Club Avatar de bigey3
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Décembre 2007
    Messages : 124
    Points : 50
    Points
    50
    Par défaut ok c'est bon
    salut,

    merci pour le coup de main,voila j'ai réadapté ton code et il marche comme sur des roulettes...
    vraiment sympa.
    merci

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

Discussions similaires

  1. Comment convertir un fichier Excel en fichier csv ou txt ?
    Par djibril dans le forum Téléchargez
    Réponses: 0
    Dernier message: 31/05/2011, 20h04
  2. Réécrire l'entête d'un fichier csv sur un nouveau fichier
    Par drake56 dans le forum Windows Forms
    Réponses: 17
    Dernier message: 10/06/2009, 17h56
  3. Réponses: 4
    Dernier message: 30/05/2008, 02h27
  4. Réponses: 3
    Dernier message: 19/05/2007, 18h19
  5. [CSV] intégration fichier csv bloque à 255 car
    Par yveslens dans le forum Langage
    Réponses: 1
    Dernier message: 04/03/2007, 15h46

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