Bonjour à tous,
Débutant en Windev, Je cherche une fonction du style TableVersExcel qui me permette de créer un fichier CSV d'après les données d'un objet Table...
Merci...
Bonjour à tous,
Débutant en Windev, Je cherche une fonction du style TableVersExcel qui me permette de créer un fichier CSV d'après les données d'un objet Table...
Merci...
Le code aura probablement cette tête là, mais :
- je ne sais pas comment retrouver le nom de mes entetes de colonnes...
- je ne suis pas sur que ca soit tres performant d'ecrire les lignes une par une...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 NBLignes=ListeOccurrence(TABLE_Table1) NBColonnes = TABLE_Table1..Taille POUR Idx=1 A NBLignes Str="" POUR Idy=1 A NBColonnes Str=Str + ";" + TABLE_Table1[Idx,Idy] //Ecrit Ligne le fichier FIN FIN
Plus propre encore je pense : voir l'aide sur TableauVersCSV.
Par contre il faudra tout passer en tableau avant.
Je ne trouve rien sur "TableauVersCSV"... Je suis en Windev11...
Ah oui, désolé, je l'ai vu sur 12 et 14
Ton code est bon dans ce cas, pour les précisions demandées par contre:
- Lister les colonnes d'une table : TableEnumèreColonne (j'espère qu'elle existe en 11)
- Accéder à une donnée en n'ayant que le nom de la variable qui la contient : opérateur {} (voir également "indirection")
- Pour la vitesse d'écriture : si c'est sur le disque sur lequel tu écris tu ne verras pas la différence. ce qui compte c'est de n'ouvrir le fichier qu'une seule fois. J'ai un export de ce type (16000 lignes environ, poids 1,7Mo)et je le fais en écriture directe.
Penses par contre à une chose : si tes valeurs contiennent des points-virgules et/ou des retours chariots, il faut les protéger
Merci pour les réponses.
TableEnumèreColonne me retourne le "nom de l'objet" colonne (en l'occurrence COL1 COL2 etc) mais il ne me retourne pas la chaine de caractere de l'entete de la colonne. (A noter que ma table a été créée dynamiquement)...
J'en suis là :
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
20
21
22
23
24
25
26
27 PROCEDURE ExportCSV() NBLignes est un entier NBColonnes est un entier Idx, Idy est un entier Str est une chaîne FicId est un entier FicId=fOuvre("c:\TEMP\TEstExport.csv",foCréation) NBLignes=ListeOccurrence(FEN_Fenêtre1.TABLE_ListeData) NBColonnes = FEN_Fenêtre1.TABLE_ListeData..Taille POUR Idy=1 A NBColonnes Str=Str + TableEnumèreColonne( FEN_Fenêtre1.TABLE_ListeData, Idy)+ ";" FIN //Nom objet au lieu de entete... fEcritLigne(FicId, Str) POUR Idx=1 A NBLignes Str="" POUR Idy=1 A NBColonnes Str=Str + FEN_Fenêtre1.TABLE_ListeData[Idx,Idy]+ ";" FIN fEcritLigne(FicId, Str) FIN fFerme(FicId)
Bonjour
{"COL1",indChamp}..Titre pour récupérer le titre de la colonne COL1
Tu peux bien sur utiliser une variable chaîne à la place de "COL1"
Ca marche. Merci à vous !
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
20
21
22
23
24
25
26
27
28
29 PROCEDURE ExportCSV() NBLignes est un entier NBColonnes est un entier Idx, Idy est un entier Str est une chaîne FicId est un entier FicId=fOuvre("c:\TEMP\TEstExport.csv",foCréation) NBLignes=ListeOccurrence(FEN_Main.TABLE_ListeData) NBColonnes = FEN_Main.TABLE_ListeData..Taille Str="" POUR Idy=1 A NBColonnes Str=Str + {TableEnumèreColonne(FEN_Main.TABLE_ListeData, Idy),indChamp}..Titre + ";" FIN fEcritLigne(FicId, Str) POUR Idx=1 A NBLignes Str="" POUR Idy=1 A NBColonnes Str=Str + FEN_Main.TABLE_ListeData[Idx,Idy]+ ";" FIN fEcritLigne(FicId, Str) FIN fFerme(FicId)
Juste une petite astuce :
ça fait la même chose mais ça évite d'avoir un ; inutile en fin de chaîne
Code : Sélectionner tout - Visualiser dans une fenêtre à part Str += [";"] + FEN_Main.TABLE_ListeData[Idx,Idy]
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