PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2025 → Import n'importe quelle fichier excel dans une table ?
Import n'importe quelle fichier excel dans une table ?
Débuté par devwds, 27 mai 2015 23:17 - 4 réponses
Posté le 27 mai 2015 - 23:17
Bonjour,

J'ai inséré un sélecteur de fichier et un bouton pour importer la structure avec les données du fichier excel
mon problème c'est d’avoir un code générale quelque soit le nombre des colonnes du fichier excel , actuellement je l'avais fait avec l'instruction selon nombre de colonne

TableSupprimeTout(TBL_EXCEL)

res est entier = xlsOuvre(SAI_FIC)

nbrc est un entier = TBL_EXCEL..NombreColonne

SI nbrc > 1 ALORS
POUR c = 2 _A_ nbrc
ChampSupprime("Colonne"+c)

FIN
FIN

POUR c = 2 _A_ xlsNbColonne(res)

ChampClone(Colonne1,"Colonne"+c)

{"Colonne"+c,indChamp}..Libellé = "Colonne"+c

FIN

POUR c = 2 _A_ xlsNbLigne(res)

SELON xlsNbColonne(res) // code que je veux généralisé

CAS 1
TableAjouteLigne(TBL_EXCEL...

,xlsDonnée(res,c,1)...

)

CAS 2
TableAjouteLigne(TBL_EXCEL...

,xlsDonnée(res,c,1)...

,xlsDonnée(res,c,2)...

)

CAS 3
TableAjouteLigne(TBL_EXCEL...

,xlsDonnée(res,c,1)...

,xlsDonnée(res,c,2)...

,xlsDonnée(res,c,3)...

)

CAS 4

TableAjouteLigne(TBL_EXCEL...

,xlsDonnée(res,c,1)...

,xlsDonnée(res,c,2)...

,xlsDonnée(res,c,3)...

,xlsDonnée(res,c,4)...

)

CAS 5

TableAjouteLigne(TBL_EXCEL...

,xlsDonnée(res,c,1)...

,xlsDonnée(res,c,2)...

,xlsDonnée(res,c,3)...

,xlsDonnée(res,c,4)...

,xlsDonnée(res,c,5)...

)
CAS 6
TableAjouteLigne(TBL_EXCEL...

,xlsDonnée(res,c,1)...

,xlsDonnée(res,c,2)...

,xlsDonnée(res,c,3)...

,xlsDonnée(res,c,4)...

,xlsDonnée(res,c,5)...

,xlsDonnée(res,c,6)...

) // code que je veux généralisé


FIN


FIN
Membre enregistré
326 messages
Posté le 28 mai 2015 - 10:10
Bonjour.

Tu n'es pas loin ...
Il faut savoir que pour affecter une valeur dans une cellule de table on peut écrire table[nligne][ncolonne] = "ma valeur"
A partir de là tu affectes chaque cellule de ta table à chaque cellule Excel.

Si je ne me trompe pas un code de ce type devrait fonctionner.

n est un entier //n° ligne
col est un entier// n° colonne

POUR c = 2 _A_ xlsNbLigne(res)
n = tablejoute(TBL_EXCE) // ajoute une ligne vierge et on récupère le n° de ligne
pour col = 1 a xlsNbColonne(res)
TBL_EXCE[n][col] = xlsDonnée(res,n,col)
FIN
FIN


Petite remarque : attention aux numériques et dates ! Quand tu clones une colonne texte toutes tes colonnes sont du texte, donc si tu importes "15/01/2015" tu auras cela dans ta table au format chaine.

Michel.
Posté le 28 mai 2015 - 10:28
bonjour,

parfois c'est très simple mais invisible

Merci
Membre enregistré
1 message
Posté le 25 décembre 2025 - 15:21
lorsque j'importe les données depuis un fichier excel dans windev, bizarrement le champ sexe est vide... dans windev le champ sexe est de type combo donc je voudrai une aide svp
Membre enregistré
1 021 messages
Posté le 25 décembre 2025 - 15:42
Bonjour,
difficile de vous aider avec si peu d'information.
Pouvez-vous expliquer la donnée dans Excel et la structure dans Windev (Combo) ?
Cdlt