PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2025 → importation d'un tableau excel dans une table
importation d'un tableau excel dans une table
Débuté par muriel.catlas, 07 déc. 2004 10:53 - 3 réponses
Posté le 07 décembre 2004 - 10:53
Bonjour à tous

J'ai besoin d'aide svp ! Je suis débutante sous windev je précise !

J'aimerai importer un tableau excel dans une table de mon projet ! J'ai fait une manip qui ne fonctionne pas comme je le souhaite !
Il m'importe une case vide ! Pourtant je l'ai testé avant sur une autre table et ça marche !
Voilà si qqn a une solution à mon problème merci de m'aider !
Posté le 07 décembre 2004 - 13:20
// Déclaration des variables

FichierXLS est une chaîne
IdFichierXLS est un entier
i est un entier
j est un entier
var_tableau est un tableau de (nbre de colonnes dans le tableau) Variants

// Sélection du fichier XLS
FichierXLS = fSélecteur("", "", "Sélection d'un fichier XLS", ...
"Fichier XLS" + TAB + "*.XLS", "XLS", fselOuvre+fselExiste)



// Ouverture du fichier sélectionné - attention verifier qu il ne soit pas deja ouvert
IdFichierXLS = xlsOuvre(FichierXLS)




// lecture des lignes
POUR i=2 A xlsNbLigne(IdFichierXLS) // commence a 2 si on veut pas recuperer l'entete du fichier excel


// recup des valeurs colonnes et affectation dans le tableau
POUR j=1 A (nombre de colonnes)

// voir selon format date du fichier excel .... var_tableau[j]=ChaîneVersDate(xlsDonnéeIdFichierXLS,i,j))

var_tableau[j]=xlsDonnée(IdFichierXLS,i,j)
FIN
TableAjouteLigne(tab_resulat,var_tableau[1],var_tableau[2],var_tableau[3],var_tableau[4],var_tableau[5],var_tableau[6],var_tableau[7],var_tableau[8],var_tableau[9],var_tableau[10],etc.................


FIN


il y a surement plus simple mais ca doit marcher.
Posté le 13 décembre 2004 - 13:09
Après avoir suivi les indications ça ne fonctionne toujours pas ! SVP à l'aide !
Posté le 13 décembre 2004 - 15:03
Bonjour,

Premiere etape que j'effectue, je transforme le fichier xls en csv car si le
fichier est trop volumineux, cela prends beaucoup de temps.

Fichiercsv est une chaine
sdonnee est une chaîne
guillemet est une chaîne


Fichiercsv =ExtraitChaîne(Minuscule(Sais_Fic),1,".xls")+".csv"
Multitache()

//macro pour convertir le fichier xls en fichier csv
oExcel>>visible=OLEFaux
oExcel>>workbooks>>opentext(Sais_Fic)
oExcel>>Activeworkbook>>Saveas(Fichiercsv,6)
oExcel>>Activeworkbook>>close(Faux)
oExcel>>quit()


voila le fichier csv est créé.

nIdFic=fOuvre(Fichiercsv,foLecture)
SI nIdFic=-1 ALORS
Erreur("Impossible d'ouvrir le fichier.",...
"Vérifier qu'il n'est pas déjà ouvert sur une autre
application.",xlsMsgErreur(nIdFic))
RETOUR
FIN
TableSupprimeTout(TableImport)
sLigne= fLitLigne(nIdFic)

Premiere ligne contenant les données
nPremièreLigne = 1
sinon
nPremièreLigne=2
nNbColonnes est un entier= ChaîneOccurrence(sLigne, ";")+1

TANTQUE sLigne <> EOT
// on remplit la table mémoire
TableAjouteLigne(TableImport)
// on construit la ligne lue
POUR nColonne =1 A nNbColonnes
sdonnee=ExtraitChaîne(sLigne,nColonne,";")
SI sdonnee=EOT ALORS
{"Colonne"+nColonne}[TableOccurrence(Table)]=""
SINON
// Je traite si il y a des guillemets
guillemet=sdonnee
SI ChaîneOccurrence(guillemet,gCO_Guillemet)>1 ALORS
SI Gauche(guillemet,1)=gCO_Guillemet ALORS
guillemet=Milieu(guillemet,2,Taille(guillemet)-1)
SI Droite(guillemet,1)=gCO_Guillemet ALORS
guillemet=Gauche(guillemet,Taille(guillemet)-1)
TANTQUE ChaîneOccurrence(guillemet,gCO_Guillemet+gCO_Guillemet)<>0

guillemet=Remplace(guillemet,gCO_Guillemet+gCO_Guillemet,gCO_Guillemet)
FIN
FIN
{"Colonne"+nColonne}[TableOccurrence(TableImport)]=guillemet
FIN
// si c'est un numérique
SI NumériqueVersChaine(Val(sdonnee))=sdonnee ALORS
{"Colonne"+nColonne}..CadrageHorizontal=iDroite
SINON
{"Colonne"+nColonne}..CadrageHorizontal=iGauche
FIN
FIN
sLigne = fLitLigne(nIdFic)
FIN


Voila j'espere t'avoir aider.

--
Sandrine Legrix
Sandrine.legrix@p-s-i.com
PSI


"muriel" <muriel.catlas@landes.chambagri.fr> a écrit dans le message de
news: 41b565a9@news.pcsoft.fr...


Bonjour à tous

J'ai besoin d'aide svp ! Je suis débutante sous windev je précise !

J'aimerai importer un tableau excel dans une table de mon projet ! J'ai

fait une manip qui ne fonctionne pas comme je le souhaite !
> Il m'importe une case vide ! Pourtant je l'ai testé avant sur une autre
table et ça marche !
Voilà si qqn a une solution à mon problème merci de m'aider !