PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 25 → Importation automatique données fichier Excel
Importation automatique données fichier Excel
Débuté par ADAMS Vianney, 16 sep. 2020 16:46 - 5 réponses
Posté le 16 septembre 2020 - 16:46
Bonjour,

je travail sous windev25. Je souhaiterais faire une routine qui permet de récupérer les informations d'un fichier Excel dans une base de données HSQL.

J'ai créé mon analyse en choisissant Excel comme source. Cela ma créer mon analyse avec les différents fichier par onglet du fichier Excel.

Je souhaite ensuite pouvoir injecter chaque jour les données des différents onglets dans les fichiers de données HSQL.

J'ai essayé le code suivant :

//Importation de la liste des appareil
IdFichierXLS est un entier
FichierExcel est une chaîne
i,NbLigne,NbColonne est un entier
FichierExcel="Chemin du fichier Excel.xls"

SI fFichierExiste(FichierExcel) ALORS
HCréation(Appareils$)
IdFichierXLS = xlsOuvre("Chemin du fichier Excel.xls")
NbLigne=xlsNbLigne(IdFichierXLS)
HOuvre(Client)
POUR i=2 A NbLigne
SI IdFichierXLS <> -1 ALORS
Appareils$.Code_Client= xlsDonnée (IdFichierXLS,i,1,Vrai)
Appareils$.Nom= xlsDonnée (IdFichierXLS,i,2,Vrai)
HAjoute(Appareils$)
FIN
FIN
SINON
Erreur("Le fichier Excel n'existe pas")
FIN


le problème c'est que j'ai une colonne son nom est (A#Z_APP-LM#Z_PONT_INF) du coup dans le code cela donne
Appareils$.(A#Z_APP-LM#Z_PONT_INF) = xlsDonnée (IdFichierXLS,i,7,Vrai)

et j'ai une erreur car les caractère ()# ne sont pas reconnu. Je ne peux pas changer le nom de la colonne, car le fichier Excel nous est fourni.

Est-ce qu'il existe des caractère d'échappement pour que ma ligne soit prise en compte ?

Sinon est-ce qu'il existe un système pour le faire en automatique sans devoir déclarer chaque colonne (comme lors de l'import du fichier pour la création de la base HSQL) ?
Posté le 16 septembre 2020 - 17:30
Bonjour,

je pense avoir trouvé un début d'élément de réponse avec l'outils WDConvert.

Il lance l'outils lors de la création de mon analyse qui permet l'import.

J'ai vu qu'il était possible de lancer l'outils en ligne de commande avec un script qui récupère les informations, mais je ne sais pas comment créer le script.

Est-ce qu'il suffit de mettre les différentes informations dans un fichier txt qu'on modifie ensuite l’extension en wdv ?

De plus comment spécifié le fichier source et indiquer que je veux créer/mettre a jours les fichier FIC du répertoire déjà présent ?
Membre enregistré
1 665 messages
Posté le 17 septembre 2020 - 05:43
Bonjour,
Regarde du côté de HImporteXLS/HExporteXLS

--
Il y a peut être plus simple, mais, ça tourne
Posté le 17 septembre 2020 - 13:58
Merci,

cela semble fonctionner. Mais je n'arrive pas a retrouver le numéro de mes onglets de ma feuilles Excel.

J'ai fait un fichier Excel classique, j'ai lancer le HIImport pas de soucis, j'indique le 1 ou 2 selon l'onglet pour tel ou tel fichier de données.

Par contre dans mon fichier reçu je reprend la numérotation dans le sens 1.2.3 selon l'emplacement de l'onglet mais cela ne semble pas correspondre.

JE suis passé en mode développeur, et je vois que les feuilles porte des numéro différent (feuilles 10 etc...) je met ces numéros la, mais je n'ai pas d'import non plus, ou de l'import d'une mauvaise feuilles dans le fichier.

Comment puis-je savoir le numéro précis des feuilles ?
Membre enregistré
2 086 messages
Posté le 18 septembre 2020 - 07:39
Bonjour,

Pourquoi ne pas utiliser une variable de type xlsDocument ? A partir de là ton import tu le fais manuellement et c'est beaucoup mieux car tu as la main sur les données.

--
Cordialement,

Philippe SAINT-BERTIN
Membre enregistré
1 665 messages
Posté le 18 septembre 2020 - 08:44
ADAMS Vianney a écrit :
Comment puis-je savoir le numéro précis des feuilles ?

Le WLangage dispose de nombreuses fonction pour gérer les fichiers XL (fonction xls...) https://doc.pcsoft.fr/fr-FR/?3080009, ainsi que, comme le précise Philippe un type de variable.
En ce qui te concerne, cette fonction https://doc.pcsoft.fr/fr-FR/?3080022&name=xlsfeuilleencours_fonction semble tout indiquée.

--
Il y a peut être plus simple, mais, ça tourne