salut,
je souhaiterais réecrire un fichier csv en fichier txt.
un coup de pouce s'il vous plait....
salut,
je souhaiterais réecrire un fichier csv en fichier txt.
un coup de pouce s'il vous plait....
Bonjour,
Un fichier .csv étant aussi un fichier texte ASCII, je n'ai pas compris la question
- Copie de fichier ?
- Changement d'extension ?
- Reformattage ?
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..
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+
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
mon mémo contient
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;
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
Pour le séparateur il y a plus simple
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 SL.text := StringReplace(SL.text,',','|',[rfReplaceAll]);
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');
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;
salut,
merci pour le coup de main,voila j'ai réadapté ton code et il marche comme sur des roulettes...
vraiment sympa.
merci
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager