Création
d'entreprise
Posez votre question Signaler

Conversion txt en csv

pinkwyzard 5Messages postés 14 février 2008Date d'inscription - Dernière réponse le 21 mars 2011 à 19:21
Bonjour,
Je souhaiterai savoir comment faire pour convertir un fichier.txt sans separateur en un csv.
Quel language devrai-je utiliser par exemple.
Merci .
Lire la suite 

Conversion txt en csv »

Suggestions
56 réponses
Réponse
+2
moins plus
Re,

Une autre solution sera alors la suivante :

Ouvir tout simplement le fichier avec excel, pas besoin d'importation ou je ne sais pas quoi encore
En ce cas la 1ère colonne contiendra le fichier.
Il suffit d'insèrer à partir de la colonne 2 des formules
Je me suis arrêté à la 3ème colonne
    A1                                 B1                                  C1                             D1
1ère ligne de fichier     =GAUCHE(A1;8)	     =STXT(A1;9;4)	     =STXT(A1;17;17)
Ajouter un commentaire
Réponse
+1
moins plus
Tiens cadeau...

http://www.cijoint.fr/cjlink.php?file=cj200906/cijgO909VE.xls

le plus long c'est d'avoir eut a traiter votre mise en page....
Ajouter un commentaire
Réponse
+0
moins plus
euh, il te faut toujours un séparateur, à moins que tu choisisse les espaces entre les mots?
Ajouter un commentaire
Réponse
+0
moins plus
He bien justement le problème est que je reçois un fichier texte du distributeur sans séparateur.
Mon but est de faire qqchose pour intégré des séparateur dans mon fichier texte, si possible pas à la main car le fichier fait plus de 1000 ligne^^ .

Il faudrait que je puisse faire cela en utilisant les positions de chaque début de chaine. Sans passez par excel car cela doit etre fait automatiquement.

Merci ^^

(PS je ne demande pas qu'on le face a ma place, juste une idée de comment faire )
Ajouter un commentaire
Réponse
+0
moins plus
et bien en gros, tu list ton fichier ligne par ligne
tu compte les caractères quand tu lis la ligne et arrivé au bon emplacement tu ajoutes un caractère et tu continus jusqu'à la fin de la ligne
Ajouter un commentaire
Réponse
+0
moins plus
Salut,

en fonction de la structure de ton texte il faut trouver une règle d'insertion d'un séparateur
ensuite c'est facile avec un script
Ajouter un commentaire
Réponse
+0
moins plus
sais-tu avec quel language je pourrai faire ca simplement?
J ai essayé en visual c++ pour que l'utilisateur ai une interface pour indiquer le positionnement mais par la suite j'ai aucune fonction pour positionné le curseur puis inserer du texte suivant une meme classe (utiliser pour lire le fichier)


Par exemple j'utilise la classe fileStream pour ouvrir mon fichier et positionné mon curseur mais je n'ai aucune fonction pour inserer du texte . Et dans la classe StreamWriter je n'ai aucune methode pour positionné mon curseur.


:( help :(
Ajouter un commentaire
Réponse
+0
moins plus
A lami20j :

tu veux dire quoi par regle d'insertion du separateur ?
Et avec quel genre de script je peu faire ca sachant que je travail sous windows :(
tamim - 22 févr. 2009 à 20:51
bonjour

voila j'ai eu affaire avec un fichier texte de 65000 ligne.
dans ce fichier deux choses m'interressé une adresse et un nom.

apres la confection d'un petit convertisseur en language java mon probleme est résolu.

je donne le fichier source puis je donne le fichier destination et je lance.

et j'ai le résultat dans le fichier csv ( c'est comme excel) voilà.

je cherche l'adresse et le nom puis entre les deux j'insert un separateur ";" puis j'ecris dans le fichier csv.

tu peux faire ça je pense avec tous les languages, moi j'ai choisie le JAVA .
cordialement
codeur - 4 juin 2009 à 10:07
salut,

Voila, j'ai exactement le meme souci que toi. J'ai un fichier plat sans séparateur, et on me demande de le mettre dans excel.

chaque ligne a donc un nombre de caractere prédéfini. Ce que jecherche, c'est comment ajouter le separateur ";" a l'emplacement ou je veux (je dois l'inserer plusieurs fois dans la meme ligne) et aussi je dois le faire sur autant de ligne qu'il y a dans le fichier.

Mais par la suite, j'aimerais savoir comment le convertir en csv ou voir en excel si possible directement a partir de l'application. et on me demande aussi que dans la feuile d'excel, la premiere ligne, il faut rajouter le nom de"s champs.

Voila en résumé, j'ai le même truc a faire que toi, mais je ne m'y connais pas du tout en java, donc si tu pouvais te mettre en contact avec moi, pour m'aider a le faire soit en java, soit en langage c (ou je suis débutant) ce serait tres gentil de ta part
Ajouter un commentaire
Réponse
+0
moins plus
Salut,

chaque ligne a donc un nombre de caractere prédéfini. Ce que jecherche, c'est comment ajouter le separateur ";" a l'emplacement ou je veux (je dois l'inserer plusieurs fois dans la meme ligne)

Pour insérer le séparateur il faut connaître l'emplacement.
As-tu une règle pour spécfier l'emplacement?!
codeur - 4 juin 2009 à 14:21
salut,

oui j'ai une regle. je te donne un exemple sans separateur, et le resultat dont j'ai besoin:

exemple de base:

240420090000580601001014183001MAD000000000050.0001001836562027MAD000000000050.0001001870290007MAD000000000000.0001001836562847MAD000000000000.00XX 00123042009DOMCILIATION24042009


resultat voulu:

24042009;0000;5806;01001014183001MAD;000000000;050.00;01001836562027MAD;0000000000;50.00;01001870290007MAD;000000000;000.00;01001836562847MAD;0000000000;00.00;XX; 001;23042009;DOMCILIATION24042009



je precise donc que tout ça se trouve sur une seule ligne dans mon fichier .txt, et j'ai une centaine d eligne comme ça. Ce dont j'ai besoin, c'est peut etre une application (si possible en langage c) qui pourrait me mettre les point virgules.

Merci d'avance, et j'espere que tu pourras m'aider a trouver la solution
Ajouter un commentaire
Réponse
+0
moins plus
Ne fait pas attention au tiret "-" ils n'existe pas. tous les caractere (chiffe et lettre sont collé)

Merci beaucoup
Ajouter un commentaire
Réponse
+0
moins plus
Re,

Les champs auront toujours le même nombre de caractères?!

Par exemple
24042009;0000;5806;

1er champ = 8 caractères
2ème champ = 4 caractères
3ème champs = 4 caractères
etc.
codeur - 4 juin 2009 à 14:45
oui oui, les champs ont toujours les memes caractères. En fait il faut une application qui me met les ";" pour que je trouve un moyen encore de convertir mon fichier .txt en .csv etqu'il souvre en excel. est ce qu'il y a moyen aussi dans le code, d'inserer une nouvelle au debut du fichier, pour pouvoir mettre les champs. Par exemple pour:

24042009: c'est une date

ça c'est une premiere chose. Par la suite, si tu as remarqué, il y a 2 partie (entre les ;) ou il n'y a que des zero. La premiere partie ou il y a des zero, je veux que ce soit une colonne vide (dans excel) et la seconde partie ou il y a les zero, je veux pas de colonn du tout.

Désolé, je suis debutant en programmation, et j'ai pas saisi du tout, tout ce qui est manipulation de fichier.

Tu me sera d'une grande aide. et si tu veux, on peut s'echanger nos @ msn, pour etre en direct (enfin si ça te derange pas)

Merci d'avance
Ajouter un commentaire
Réponse
+0
moins plus
Re,

Tu me sera d'une grande aide. et si tu veux, on peut s'echanger nos @ msn, pour etre en direct (enfin si ça te derange pas)

Je vais regarder ce soir et je vais te répondre ici sur le forum.
Ce n'est pas dans l'ésprit de forum, de répondre en utilisant une messagérie instantanée. Le but étant de faire profiter toute la communauté d'une eventuelle solution.
codeur - 4 juin 2009 à 15:45
ok sans souci....

merci pour ton aide et puis à ce soir
Ajouter un commentaire
Réponse
+0
moins plus
Re,

A vrai dire tu peux le faire directement dans excel s'il fait moins de 65536.
Je ne sais pas combien de lignes il y a dans excel2007.

En ce qui concerne les colonnes avec zéro de toute façon excel va formater
Par exemple si tu as 0000 excel va écrire 0, si tu as 001 excel va écrire 1

En ce qui concerne la suppression ou le fait d'avoir une colonne vide tu peux le faire après l'ouverture de fichier .csv

Mets ton fichier dans C: et appelle le fichier.txt
Ensuite tu n'as qu'à compiler (je l'ai fait avec codeblocks)
Tu obtiendras un fichier fic.csv dans C:
#include<stdio.h>
#include<stdlib.h>

int main()
{
  FILE *f1,*f2;
  if(NULL==(f1=fopen("c:\\fichier.txt","r")))
    return EXIT_FAILURE;
  if(NULL==(f2=fopen("c:\\fic.csv","w")))
    return EXIT_FAILURE;

  char s[256];
  char s1[9],s2[5],s3[5],s4[18],s5[10],s6[7],s7[18],s8[11],s9[6],s10[18];
  char s11[10],s12[7],s13[18],s14[11],s15[6],s16[3],s17[4],s18[9],s19[23];

  while (fscanf(f1,"%s",s)!=EOF){
    sscanf(s,"%8s%4s%4s%17s%9s%6s%17s%10s%5s%17s%9s%6s%17s%10s%5s%2s%3s%8s%22s",
              s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12,s13,s14,s15,s16,s17,s18,s19);
    fprintf(f2,"%s;%s;%s;%s;%s;%s;%s;%s;%s;%s;%s;%s;%s;%s;%s;%s;%s;%s;%s\n",
                s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12,s13,s14,s15,s16,s17,s18,s19);
}
  fclose(f1);
  fclose(f2);
  return EXIT_SUCCESS;
}

Au cas où voici aussi le fichier exe http://cjoint.com/?geuPNXDqza
CodeBlocks tu peux le télécharger ici codeblocks-8.02mingw-setup.exe

Pour écrire toutes les variables, je ne l'ai pas fait à la main ;-)
J'ai utilisé ton exemple et hop avec un script perl j'ai écrit le code de programme.
Il y a sûrement d'autres moyens de le faire, mais comme tu as dis que tu es débutant, j'ai écrit le code de façon assez compréhensible. Enfin, c'est ça que je crois ;-))

Tu as dit que tous les caractères sont collés. Toutefois j'ai remarqué un espace que j'ai supprimé dans le teste que j'ai fait.

Voici le fichier que j'ai utilisé pour test http://cjoint.com/?geuTynS2wr
codeur - 4 juin 2009 à 21:11
salut,

c'est exact, il met bien les point virgule, mais le probleme quand j'ouvre moi meme le fichier fic.csv, il y a un pti probleme.

voici le resultat: http://cjoint.com/?gevdJc3eXJ

peux tu me dire a quoi est-ce dû?

par contre, il y a un pti probleme.... quand la personne execute l'application, y a-t-il un moyen de laisser le choix a l'utilisateur de parcourir les fichiers? parce que l'utilisateur doit faire ca chaque jour, etant donné que c un fichier d'une banque, et qu'il recupere le fichier le lendemain matin pour faire la meme procédure.

si c possible, indique moi comment on fit, et j'aimerais bien que tu me donne de bon lien ou je peux apprendre perl, et utiliser code::blocks

jte remercie beaucoup pour ton aide, ca m'avance déja assez dans mon travail
Ajouter un commentaire
Réponse
+0
moins plus
Re,

Ben, je ne sais pas. Le mieux sera que je puisse tester sur ton fichier.

Ben en ce qui concerne le chois je ne vois pas. Il n'a qu'à le faire après la récupération de fichier, non?!

Perl, tu n'as pas besoin. Je ne l'ai utilisé que pour m'aider à écrire le code vu que je suis un peu paresseux.

code::blocks je ne connais pas non plus, mais de toute façon c'est le C que tu dois apprendre. Tu peux commencer sur le siteduzero

Ajouter un commentaire
Réponse
+0
moins plus
ok daccord

alors juste par curiosité, a quoi sert perl et code::block?
est ce que code::block remplace microsoft visual C++?

Bon je vais faire plus simple, je vais te donner le fichier que ma responsable de stage ma refiler (en format texte) et le resultat en excel, comme ca tu vois exactement.

petite precision: pour l'exemple, ell ma donné que quelque ligne (5 ou 6 je crois)

autre chose:

dans le fichier xls, dans la colonne D, tu va voir des ok (c'est une fonction si) et en fait, c pour sa que je voulais une colonne vide. enfin tu comparera, et tu verra, mais le ruc que tu m'as donné est juste (vu ke j'ai compris a peu près le code, mais jpense kil doit peut etre y avoir une erreur de saut de ligne dans le code (suis pas tres sur)

voici le fichier texte : http://cjoint.com/?gexvKWi5t4
voici l'exemple xls: http://cjoint.com/?gexwcSX1Nm

par contre, une petite remarque:

tu verra dans l'excel, la premiere ligne c'est le nom des champ (genre: date, etc.) c'est pas possible dans le code en c, de lui faire inserer une ligne au debut du fichier et de le faire?

autre remarque:

le fichier executable que tu m'as donné, c'est celui que tu as fait avec code::block, c'est ca?
si je retape le code sous visual C++, l'utilisateur aura seulement besoin de l'excutable? ou je dois lui donné tout le repertoire du workspace?




merci beaucoup et encore désolé pour toute ces questions, c'est juste que je veux comprendre aussi, meme si c'est pas moi qui ait codé :)
Ajouter un commentaire
Réponse
+0
moins plus
Re,

Oublie perl. C'est juste un outil comment beaucoup d'autres.
Voici ce qui est Code::blocks

tu verra dans l'excel, la premiere ligne c'est le nom des champ (genre: date, etc.) c'est pas possible dans le code en c, de lui faire inserer une ligne au debut du fichier et de le faire?
Oui, c'est faisable.

le fichier executable que tu m'as donné, c'est celui que tu as fait avec code::block, c'est ca?
Oui, je l'ai compilé avec.

si je retape le code sous visual C++, l'utilisateur aura seulement besoin de l'excutable? ou je dois lui donné tout le repertoire du workspace?
C'est juste le code (celui que j'ai mis plus haut). Ensuite il suffit de le compiler.

Je vais regarder ce soir.
Ajouter un commentaire
Réponse
+0
moins plus
ok dacc, donc jatten ce soir, mais entretemps je verrai un peu le code et vor si jpeux changer (voir si jepux rajouter des truc)

Merci bcp kan meme
Ajouter un commentaire
Réponse
+0
moins plus
Le plus simple et le pus efficace c'est de regarder du côté des expressions régulières, perso je ne les connais pas en C, mais en Perl c'est vraiment génial. Tu devrais te pencher de se coté là.
Ajouter un commentaire
Réponse
+0
moins plus
Je ne comprends pas pourquoi vous ne le faites pas par VBA.
Les utilisateurs n'ont cas indiquer le chemin du fichier dans une cellule ( si vous voulez pas vous embeter avec des composants annexes ) et avec une boucle vous traitez toute les lignes du fichier.
Surtout que les champs sont toujours de la meme longueur, c'est facile...
Maintenant que vous avez fait tout ca je post un peu tard, mais moi j'aurai fait comme ca...

pour info Regardez ce post que j'ai fait la semaine dernière, tout y est pour ecrire un csv...

http://www.commentcamarche.net/forum/affich 12635021 definition de commande macro?page=2
codeur - 5 juin 2009 à 09:04
pour nicodisco:


je ne sias pas si tu as compris mon but. En fait, je recoi un fichier plat (.txt) et on me demande de le mettre sous excel. mais je peuxpas le mettre en csv, psk il faut mettre des separateur pour les colonnes. j'ai donc besoin de savoir est ce que si on le fait par vba (dans excel) on peut gérer ceci:

mon fichier a plusieurs ligne (dopnc il m'en faut autant sur excel), et dans chaque ligne il y a N caractere (tous collé les uns au autres, donc pas de séparateur). est-il possible, donc, de choisir un certain nombre de caractere pour chaque colonne? exemple:

ça, c'est l'exemple de base d'une seule ligne dans mon fichier texte:
240420090000580601001014183001MAD000000000050.0001001836562027MAD000000000050.0001001870290007MAD000000000000.0001001836562847MAD000000000000.00XX 00123042009DOMCILIATION24042009


et ça c'est le resultat que je veux en csv:

24042009;0000;5806;01001014183001MAD;000000000;050.00;01001836562027MAD;0000000000;50.00;01001870290007MAD;000000000;000.00;01001836562847MAD;0000000000;00.00;XX;001;23042009;DOMCILIATION24042009

donc si tu a bien compris, les ";" c'est ce qui fait les colonnes.

voila ce que jattend
lami20j- 5 juin 2009 à 09:06
Re,

Ne te complique pas la vie.
Je l'ai fait en C puisque c'est ça que tu as demandé.

Regarde ici, tu as une solution avec des formules excel. Pas besoin de programmation, même pas de ;

http://www.commentcamarche.net/forum/affich 5024174 conversion txt en csv?page=2#29
Ajouter un commentaire
Réponse
+0
moins plus
Salut,

Je ne comprends pas pourquoi vous ne le faites pas par VBA.
Dans mon message 16 il me semble que j'ai dit "A vrai dire tu peux le faire directement dans excel "

Bref, pourquoi le faire en VBA quand on peut le faire avec des formules "Surtout que les champs sont toujours de la meme longueur, c'est facile... "?!!! c'est encore plus facile...

Ben, je te dirai pourquoi.
Puisque le demandeur à écrit "pour m'aider a le faire soit en java, soit en langage c"
Sinon, je l'aurais faire encore plus facile avec une regex.
codeur - 5 juin 2009 à 08:50
Ben si c'est possible de le faire directement sur vba dans excel, jsui partant pour qu'on m'explique les différentes étapes a suivre, et je verrai laquelle je garderai.

Merci
coucoussa - 21 mars 2011 à 19:21
salut les ga cava,svp j'é un programmeen vb qui affiche un resultatsous format txt je voulais que l'affichage soit en format csv
merci d'avance
Ajouter un commentaire
Ce document intitulé « Conversion txt en csv » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?
Conversion txt en csv - page 2