OVH Cloud OVH Cloud

[7.5] Traiter un fichier .CSV

10 réponses
Avatar
Louis
Bonjour


j'ai besoin de récupérer quelques colonnes d'un fichier .csv


le problème est que, sauf erreur, la fin de ligne d'un (de mon) CSV n'est
pas le RC mais juste char(13)

je ne peux donc pas utiliser FlitLigne...

et je dois donc utiliser Hlit en scrutant les caract(13)

Il serait donc intéressant de pouvoir passer en paramètre optionnel à la
fonction FlitLigne() le code de fin de ligne

Qu'en pensez-vous ?

merci
Louis

10 réponses

Avatar
Romain PETIT
Louis a utilisé son clavier pour écrire :
Bonjour


j'ai besoin de récupérer quelques colonnes d'un fichier .csv


le problème est que, sauf erreur, la fin de ligne d'un (de mon) CSV n'est
pas le RC mais juste char(13)



Certainement un fichier généré par un Mac...

je ne peux donc pas utiliser FlitLigne...
et je dois donc utiliser Hlit en scrutant les caract(13)
Il serait donc intéressant de pouvoir passer en paramètre optionnel à la
fonction FlitLigne() le code de fin de ligne
Qu'en pensez-vous ?



Pourquoi pas, mais c'est quand même trivial.
Si ton fichier n'est pas énorme, tu le charges en mémoire
(fChargeTexte) et tu boucles sur des ExtraitChaine() avec ton
séparateur de ligne...

A+

--
Romain PETIT
http://cerbermail.com/?IJmancZl88
(cliquez sur le lien ci-dessus pour me contacter en privé)
Avatar
Louis
Bonjour Romain
et merci

mon fichier fait 4Mo...

je ne saisi pas trop la finalité des caractère de fin de ligne des CSV...

j'ai parfois 13 parfois 10 ?


à suivre

merci



"Romain PETIT" a écrit dans le message de
news:
Louis a utilisé son clavier pour écrire :
> Bonjour
>
>
> j'ai besoin de récupérer quelques colonnes d'un fichier .csv
>
>
> le problème est que, sauf erreur, la fin de ligne d'un (de mon) CSV


n'est
> pas le RC mais juste char(13)

Certainement un fichier généré par un Mac...

> je ne peux donc pas utiliser FlitLigne...
> et je dois donc utiliser Hlit en scrutant les caract(13)
> Il serait donc intéressant de pouvoir passer en paramètre optionnel à la
> fonction FlitLigne() le code de fin de ligne
> Qu'en pensez-vous ?

Pourquoi pas, mais c'est quand même trivial.
Si ton fichier n'est pas énorme, tu le charges en mémoire
(fChargeTexte) et tu boucles sur des ExtraitChaine() avec ton
séparateur de ligne...

A+

--
Romain PETIT
http://cerbermail.com/?IJmancZl88
(cliquez sur le lien ci-dessus pour me contacter en privé)



Avatar
Romain PETIT
Louis avait soumis l'idée :
Bonjour Romain
et merci
mon fichier fait 4Mo...



Un peu lourd à priori pour un fChargeTexte mais si c'est une opération
ponctuelle ça ne devrait pas poser de problème...

je ne saisi pas trop la finalité des caractère de fin de ligne des CSV...
j'ai parfois 13 parfois 10 ?



Cela dépend de l'OS (ou du choix lors de l'enregistrement).
Sous Windows, CR+LF (10+13)
Sous Mac, CR (10)
Sous Unix et consort, LF (13)

A+

--
Romain PETIT
http://cerbermail.com/?IJmancZl88
(cliquez sur le lien ci-dessus pour me contacter en privé)
Avatar
Louis
les 9 premières ( entête de facture ) (13)

les 14041 suivantes (détail de la facture) (10) !!

@+

"Romain PETIT" a écrit dans le message de
news:
Louis avait soumis l'idée :
> Bonjour Romain
> et merci
> mon fichier fait 4Mo...

Un peu lourd à priori pour un fChargeTexte mais si c'est une opération
ponctuelle ça ne devrait pas poser de problème...

> je ne saisi pas trop la finalité des caractère de fin de ligne des


CSV...
> j'ai parfois 13 parfois 10 ?

Cela dépend de l'OS (ou du choix lors de l'enregistrement).
Sous Windows, CR+LF (10+13)
Sous Mac, CR (10)
Sous Unix et consort, LF (13)

A+

--
Romain PETIT
http://cerbermail.com/?IJmancZl88
(cliquez sur le lien ci-dessus pour me contacter en privé)



Avatar
Romain PETIT
Louis vient de nous annoncer :
les 9 premières ( entête de facture ) (13)

les 14041 suivantes (détail de la facture) (10) !!



Ah Ok...
CSV n'est pas tout à fait un standard, mais à priori c'est assez
conforme à ce qui est décrit ici :

--
Romain PETIT
http://cerbermail.com/?IJmancZl88
(cliquez sur le lien ci-dessus pour me contacter en privé)
Avatar
Romain PETIT
Louis vient de nous annoncer :
les 9 premières ( entête de facture ) (13)

les 14041 suivantes (détail de la facture) (10) !!



Ah Ok...
CSV n'est pas tout à fait un standard, mais à priori c'est assez
conforme à ce qui est décrit ici :
(voir embedded line-breaks)

http://www.creativyst.com/Doc/Articles/CSV/CSV01.htm#FileFormat


A+

--
Romain PETIT
http://cerbermail.com/?IJmancZl88
(cliquez sur le lien ci-dessus pour me contacter en privé)
Avatar
Louis
Je cherchais en vain une doc de ce genre

Merci

"Romain PETIT" a écrit dans le message de
news:
Louis vient de nous annoncer :
> les 9 premières ( entête de facture ) (13)
>
> les 14041 suivantes (détail de la facture) (10) !!

Ah Ok...
CSV n'est pas tout à fait un standard, mais à priori c'est assez
conforme à ce qui est décrit ici :
(voir embedded line-breaks)

http://www.creativyst.com/Doc/Articles/CSV/CSV01.htm#FileFormat


A+

--
Romain PETIT
http://cerbermail.com/?IJmancZl88
(cliquez sur le lien ci-dessus pour me contacter en privé)



Avatar
Eric Demeester
dans (in) fr.comp.developpement.agl.windev, Romain PETIT
ecrivait (wrote) :

Cela dépend de l'OS (ou du choix lors de l'enregistrement).
Sous Windows, CR+LF (10+13)
Sous Mac, CR (10)
Sous Unix et consort, LF (13)



C'est presque ça :)

Reprenons :

<CR> -> ASCII 13
<LF> -> ASCII 10

Donc :

Sous Windows, CR+LF (13+10)
Sous Mac, CR (13)
Sous Unix et consort, LF (10)

A noter que par un bizarre effet de bord que je ne m'explique pas, si on
envoie un fichier texte en pièce jointe avec OE, les <CR><LF> sont
(parfois, pas toujours, c'est du Microsoft, donc de la logique floue)
remplacés par des <LF> dans le transport, ce qui met le bronx si on doit
les traiter automatiquement à la réception.

Solution : zipper les fichiers qui sont alors encodés puis transportés
en binaire (généralement BASE64, parfois UUENCODE), puis dézipper à
l'arrivée.

--
Eric
Avatar
Romain PETIT
Eric Demeester a présenté l'énoncé suivant :

C'est presque ça :)



Juste pour vérifier que tout le monde suivait... :-)

A+

--
Romain PETIT
http://cerbermail.com/?IJmancZl88
(cliquez sur le lien ci-dessus pour me contacter en privé)
Avatar
Eric Demeester
dans (in) fr.comp.developpement.agl.windev, Romain PETIT
ecrivait (wrote) :

Bonsoir Romain,

Juste pour vérifier que tout le monde suivait... :-)



Etant tombé dans les fichiers ASCII tout petit, avant que Microsoft
n'existe [*] donc, je suis impitoyable en la matière :)

[*] Sisi, l'informatique existait avant M$, de même que l'Internet
existait avant Wanadoo, même si on vous raconte le contraire dans
les agences France-Telecom.

--
Eric