PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 2025 → Requetes sur fichier XLS importé
Requetes sur fichier XLS importé
Iniciado por sverin, 18,oct. 2004 20:05 - 3 respuestas
Publicado el 18,octubre 2004 - 20:05
Au secours !

Je cherche un exemple de code d'importation d'un fichier EXCEL, permettant la création automatique d'un fichier HF

Exemple :
1 L'utilisateur choisit un fichier EXCEL
2 L'utilisateur clic sur bouton "IMPORT"
3 Le code génére un fichier HF
4 Des requetes travaillent sur ce fichier HF
5 L'utilisateur edite des etats basés sur ces requetes

Je sais pas si je suis claire, ou si c'est compliqué, mais je ne trouve rien !!!
Publicado el 19,octubre 2004 - 11:48
Salut,

Le problème est intéressant. J'espère que tu trouveras une solution satisfaisante. Voici la mienne.

Si je comprend bien, le fichier Excel est quelconque. On ne connait pas sa structure.
Donc forcément, c'est la même chose pour le fichier HF, il ne peut pas être décrit dans une analyse.

Voici ce qui me semble réalisable dans ce contexte:

- décrire une connexion OLEDB avec HDecritConnexion sur le provider hOLEDBAccess2000
- ouvrir la connexion avec HouvreConnexion
A ce stade, on peut manipuler le fichier Excel, mais on ne connait pas sa structure, donc
- utiliser XLSouvre, xlsNbColonne, XLSTitreColonne, XLSTypeColonne pour récupérer la structure.
- construire une requête SQL
- exécuter cette requête avec HexecuteRequeteSQL et le paramètre HrequêteSansCorrection.

Dans cette solution, on a plus besoin d'un fichier HF.


Ciao
Pat
http://wdgotcha.atspace.com
Publicado el 19,octubre 2004 - 16:47
Merci à toi Pat

Mais existe t-il une fonction plus simple, du type VBA:

DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel8, "NomTableCréée", "EmplacementFichier\Nomfichier.xls", EnteteColonne = False, range

J'ai suivi ton conseil mais rien ne se passe :

Sais_Fic = Champ de saisie (chemin du fichier\Nom du fichier.xls)
ConnectXLS = Nom de ma connexion
Tableimport = Table mémoire dans laquelle je décris mon fichier EXCEL
ReqClient = Nom de la requete que je créé
Table1 = Table mémoire dans laquelle je voudrais afficher le resultat de ma requete
_________________________________________________
ReqClient est une Source de Données

SI PAS HDécritConnexion("ConnectXLS","","",Sais_Fic,hOledbAccess2000,,hOledbExcel2000) ALORS
Erreur(HErreurInfo())
SINON
HOuvreConnexion("ConnectXLS")
Sablier
SI HExécuteRequêteSQL(ReqClient,"SELECT * FROM tableimport") ALORS
HLitPremier(ReqClient)
SI PAS HEnDehors(ReqClient) ALORS
FichierVersTableMemoire(Table1, ReqClient)
FIN
FIN
FIN

Sablier(Faux)
Publicado el 19,octubre 2004 - 18:15
Salut Sébastien,

Dommage que tu te sois arrêté, tu y étais presque ...

Voici ce que j'ai testé et qui marche :

ReqClient est une Source de Données

SI PAS HDécritConnexion("ConnectXLS","","","export.xls","",hOledbExcel2000,hOLecture) ALORS
Erreur(HErreurInfo())
SINON
HOuvreConnexion("ConnectXLS")
// pour voir le nom de la table ici c'est A$
// je n'ai pas mis le code pour extraire ce nom
Trace(HListeFichier("ConnectXLS"))
SI HExécuteRequêteSQL(ReqClient,"ConnectXLS",hRequêteSansCorrection,"SELECT * FROM [A$]") ALORS
HLitPremier(ReqClient)
SI PAS HEnDehors(ReqClient) ALORS
ConstruitTableFichier(Table1,ReqClient,taRemplirTable)
FIN
SINON
Erreur(HErreurInfo())
FIN
FIN

ciao
Pat
http://wdgotcha.atspace.com