Dimensionner les colonnes d'un fichier .CSV

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
omega
Messages : 636
Inscription : sam. 26/nov./2011 13:04
Localisation : Alger

Dimensionner les colonnes d'un fichier .CSV

Message par omega »

Bonsoir,

Peut-on dimensionner les colonnes d'un fichier.CSV en Pb?

Merci
Win7 (x64)
Pb 6.03 LTS
Marc56
Messages : 2199
Inscription : sam. 08/févr./2014 15:19

Re: Dimensionner les colonnes d'un fichier .CSV

Message par Marc56 »

Je suppose que tu veux dire connaitre le nombre maximum de caractères de chaque champs pendant la lecture pour ensuite dimensionner les colonne d'un l'objet comme le ListIcon ?

Si oui, alors il suffit au moment de la découpe par StringField de compter la longueur de la chaine Len()

Si Len(chaine coupée) > Max alors Max=Len(chaine coupée)
Avatar de l’utilisateur
omega
Messages : 636
Inscription : sam. 26/nov./2011 13:04
Localisation : Alger

Re: Dimensionner les colonnes d'un fichier .CSV

Message par omega »

Salut Marc56

Ce que tu proposes me permet de connaître la longueur de chaque champs (nombre de caractères), mais comment dimensionner les colonnes du fichier csv? (colonne plus large ou moins large). Quand on crée un fichier csv, toutes les colonnes ont la même taille (en largeur).
Win7 (x64)
Pb 6.03 LTS
Marc56
Messages : 2199
Inscription : sam. 08/févr./2014 15:19

Re: Dimensionner les colonnes d'un fichier .CSV

Message par Marc56 »

omega a écrit : Ce que tu proposes me permet de connaître la longueur de chaque champs (nombre de caractères), mais comment dimensionner les colonnes du fichier csv? (colonne plus large ou moins large). Quand on crée un fichier csv, toutes les colonnes ont la même taille (en largeur).
Tu ne confonds pas avec autre chose ?

Un fichier CSV n'a pas de "largeur de colonne" et même pas de colonne.
Ce sont juste des chaines avec des séparateurs.
D'une ligne à l'autre, les chaines n'ont pas besoin d'avoir la même longueur.
https://fr.wikipedia.org/wiki/Comma-separated_values

Il existe aussi une façon de stocker les données sous forme de bloc de texte (utilisés dans d'anciens systèmes)
Dans ce cas, chaque enregistrement est composé d'une ligne et chaque champs fait la même taille.
On découpe ensuite par longeur (comme avec Mid())
On peut créer ce type de fichier avec PB en utilisant par exemple LSet() et Rset() pour remplir les champs et avoir la même longueur.
Avatar de l’utilisateur
GallyHC
Messages : 1708
Inscription : lun. 17/déc./2007 12:44

Re: Dimensionner les colonnes d'un fichier .CSV

Message par GallyHC »

Bonjour,

Pour moi un CSV peut avoir un séparateur et/ou une taille fixe, cela ne change en rien le format. Pour en revenir a ta question, je penses que LSet() ou Rset() répond à ce que tu cherche, exemple :

Code : Tout sélectionner

Debug LSet("AAAAAA", 4)
Debug RSet("AAAAAA", 4)
Debug LSet("AAAAAA", 20, "-")
Debug RSet("AAAAAA", 20, "-")
Cordialement,
GallyHC
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
Avatar de l’utilisateur
omega
Messages : 636
Inscription : sam. 26/nov./2011 13:04
Localisation : Alger

Re: Dimensionner les colonnes d'un fichier .CSV

Message par omega »

Non, je vois que vous ne m'avez pas compris ou alors c'est moi qui m'explique mal. Un fichier CSV contient des champs séparés par un délimiteur: ok, nous sommes d'accords là dessus. Généralement quand on crée un fichier dans ce format, le but est de l'utiliser comme une feuille excel n'est ce pas? sinon à quoi cela va servir? J'ai développé un logiciel de gestion et comme toujours, un de mes clients souhaite que chaque tableau (ListIconGadget) soit exportable vers excel, et c'est exactement ce que je cherche à faire. Cependant, une fois le fichier csv créé, je remarque que certains champs ne sont pas lisibles à cause justement de la taille de l'espace (que j'ai appelée colonne) et qui est plus petite que la longueur du champs. J'espère que c'est clair à présent.

Alors? existe t-il une solution non manuelle pour agir sur cette taille?

Merci
Win7 (x64)
Pb 6.03 LTS
Avatar de l’utilisateur
Mindphazer
Messages : 700
Inscription : mer. 24/août/2005 10:42

Re: Dimensionner les colonnes d'un fichier .CSV

Message par Mindphazer »

Je vois pas le rapport avec PB
Si j'ai bien compris (?), ton programme génère ton fichier .csv que tu ouvres avec Excel.
Ce dernier ne change pas la taille des colonnes par rapport à la longueur de chaque champ entre tes points virgule
La mise en forme des colonnes Excel (taille,,etc) est sauvegardée quand tu enregistres ton tableau au format .xls(x)
Du coup, tu pourras faire ce que tu veux dans ton programme, ça changera rien.

Ou peut-être que j'ai rien compris à ta demande.
Bureau : Win10 64bits
Maison : Macbook Pro M3 16" SSD 512 Go / Ram 24 Go - iPad Pro 32 Go (pour madame) - iPhone 15 Pro Max 256 Go
Avatar de l’utilisateur
omega
Messages : 636
Inscription : sam. 26/nov./2011 13:04
Localisation : Alger

Re: Dimensionner les colonnes d'un fichier .CSV

Message par omega »

Donc, ce n'est pas possible. Il va falloir faire ça manuellement (c'est ce que j'ai voulu éviter mais ... ben.. j'ai pas le choix à présent).

Merci beaucoup à tous

Bonne continuation
Win7 (x64)
Pb 6.03 LTS
Avatar de l’utilisateur
Mindphazer
Messages : 700
Inscription : mer. 24/août/2005 10:42

Re: Dimensionner les colonnes d'un fichier .CSV

Message par Mindphazer »

Jette éventuellement un oeil ici : https://www.purebasic.fr/english/viewto ... 52#p504952
Bureau : Win10 64bits
Maison : Macbook Pro M3 16" SSD 512 Go / Ram 24 Go - iPad Pro 32 Go (pour madame) - iPhone 15 Pro Max 256 Go
Avatar de l’utilisateur
Ar-S
Messages : 9546
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Dimensionner les colonnes d'un fichier .CSV

Message par Ar-S »

Je crois plutôt que tu souhaites savoir si on peut paramétrer la tailles des colonnes (A,B,C,D....) dans excel lorsqu'on importe un CSV ?
C'est ça ? Parce que sinon oublie.. tes histoires de colonnes dans un fichier CSV qui est un simple fichier texte.
Et si je me trompe, j'aimerai tout de même comprendre ta requête.
C'est frustrant que tu poses une question puis sans vraiment avoir de réponse tu passes à autre chose.
C'est quoi "faire ça manuellement ?" en PB ? Sur Excell ? En PB pour élargir les colonnes excell ?
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Marc56
Messages : 2199
Inscription : sam. 08/févr./2014 15:19

Re: Dimensionner les colonnes d'un fichier .CSV

Message par Marc56 »

:idea: Plus simple et perenne: apprendre aux utilisateurs les bases d'Excel. 8)

Pour redimensionner d'un coup toutes les colonnes à la largeur du plus grand texte de chacune:
  1. Un clic en haut à gauche (intersection des noms de lignes et de colonnes)
  2. Un double-clic sur un des séparateurs de colonnes dans la ligne d'entête
Et voilà
:)
Avatar de l’utilisateur
omega
Messages : 636
Inscription : sam. 26/nov./2011 13:04
Localisation : Alger

Re: Dimensionner les colonnes d'un fichier .CSV

Message par omega »

@Ar-S
Je crois plutôt que tu souhaites savoir si on peut paramétrer la tailles des colonnes (A,B,C,D....) dans excel lorsqu'on importe un CSV ?C'est ça ?
Oui, c'est exactement ce que je cherche à faire mais en créant un fichier csv (ou excel) et non pas en l'important.
Parce que sinon oublie.. tes histoires de colonnes dans un fichier CSV qui est un simple fichier texte.
Je sais qu'un fichier csv est un simple fichier texte mais je sais aussi qu'un tel fichier ressemble (à 99%) à une feuille excel (puisqu'on l'ouvre avec excel) et donc, il contient des colonnes comme une feuille excel. Sinon, pourquoi créer un fichier csv si ce n'est uniquement pour l"utiliser comme Excel??
j'aimerai tout de même comprendre ta requête.
Tu l'as déjà comprise à ce que je sache. Mon but, je le répète c'est d'exporter le contenu de ma ListIconGadget vers EXCEL, et pour cela (d'après mes connaissances) il faut impérativement utiliser un fichier csv comme destinataire. C'est ce que j'ai fait. Ce qui me dérange maintenant, c'est la taille de l'espace réservé à chaque champs sur le fichier csv (que je préfère appeler fichier excel).
C'est frustrant que tu poses une question puis sans vraiment avoir de réponse tu passes à autre chose.
Et que ferais tu à ma place? Tu as une meilleure idée??
C'est quoi "faire ça manuellement ?" en PB ? Sur Excell ? En PB pour élargir les colonnes excell ?
Tout simplement ajuster les largeurs des colonnes de chaque champs manuellement (en utilisant les outils de l'excel bien entendu) puisqu'on a convenu que cette opération est impossible de le faire en pb?? Il ne reste plus qu'à ouvrir le fichier Créé (csv), dimensionner les colonnes à l'aide de la souris puis enregistrer le fichier et c'est ce que je viens de faire.
Win7 (x64)
Pb 6.03 LTS
Avatar de l’utilisateur
GallyHC
Messages : 1708
Inscription : lun. 17/déc./2007 12:44

Re: Dimensionner les colonnes d'un fichier .CSV

Message par GallyHC »

Bonjour,

Ne crois-tu pas qu'un exemple de ce que tu as et de ce que tu voudrais mis en balise code, ne serait pas plus simple a comprendre (2/3 lignes de chaque exemple)?

Cordialement,
GallyHC
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
Marc56
Messages : 2199
Inscription : sam. 08/févr./2014 15:19

Re: Dimensionner les colonnes d'un fichier .CSV

Message par Marc56 »

Je sais qu'un fichier csv est un simple fichier texte mais je sais aussi qu'un tel fichier ressemble (à 99%) à une feuille excel (puisqu'on l'ouvre avec excel) et donc, il contient des colonnes comme une feuille excel.
Non, on ne l'ouvre pas avec Excel. Excel l'importe plus ou moins automatiquement en tant que fichier de données.
Si on le laisse en CSV, ce sera juste du texte les formules, formats, pages etc ne seront pas sauvegardée.
Sinon, pourquoi créer un fichier csv si ce n'est uniquement pour l"utiliser comme Excel??
Le format CSV sert partout. Notamment pour faire des import / export entre bases de données.
Les fichier de log (d'Apache par exemple) sont des CSV
Mon but, je le répète c'est d'exporter le contenu de ma ListIconGadget vers EXCEL, et pour cela (d'après mes connaissances) il faut impérativement utiliser un fichier csv comme destinataire.
Non, pas forcément.
Tu peux créer directement des fichiers au format Excel qui seront ouverts sans devoir être importés

Les premiers fichiers Excel étaient au format .Dif C'est du texte brut, donc facile à construire
Data Interchange Format
https://fr.wikipedia.org/wiki/Data_Interchange_Format

Les fichiers .xls sont un format propriétaire mais tu peux en créer par exemple en VBScript

Les dernières versions (depuis office 2007) utilisent le format xlsx qui est un assemblage de fichiers XML et de fichier texte, le tout Zippé. Le description de ce format est disponible.
Avatar de l’utilisateur
Ar-S
Messages : 9546
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Dimensionner les colonnes d'un fichier .CSV

Message par Ar-S »

Pour résumer..
Il ne FAUT PAS que tu exportes en CSV.. si tu veux des colonnes de tailles spéciales...
Et non un CSV n'est pas du tout comme du xslx.. La preuve c'est que si tu fais un simple txt avec le bloc note contenant sur 2 lignes :

Code : Tout sélectionner

toto;10;chocolat
tata;15;cacao
et que tu le sauves en le renommant test.csv au lieu de test.txt, il s'ouvrira avec ton excell comme un CSV, à savoir séparer par des colonnes sur 2 lignes.

Pour voir comment c'est foutu, sauve avec excell le fichier créé ci dessus au format xlsx puis ouvre le avec 7zip (ou autre gestionnaire d'archives). Tu verras qu'il contient 3 dossiers avec différents fichiers xml (style, template etc...) Ce sont ces fichiers qui stock ta mise en page.

Il te faut donc créer un XLSX.. Ce qui doit être faisable vu que c'est du xml zippé... A toi d'analyser les choses à modifier dans ces xml puis de re zipper l'archive en .xlsx.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Répondre