Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

> Fonction LOAD : Pointer sur le premier onglet d'un fichier excel sans connaitre son nom

Bonjour à tous,

je vous expose mon petit soucis.

Je dois récupérer des données dans un fichier excel situé sur mon réseau d'entreprise.

Ce fichier est mis à jour au fil de l'eau par une personne.

Pour ces besoins d'historisations de ses données il nomme ses onglets en y incoporant une date.

Résultat le nom de l'onglet change régulièrement et je perds ma connexion script avec cet onglet.

je cherche une syntaxe pour pointer sur le premier onglet lors du chargement du fichier Excel sans avoir à renseigner son nom exact dans le script.

LOAD col1, col2, col3, col4, col5 FROM [Classeur Test Qvw.xlsm] (ooxml, embedded labels, table is [Nom de l'onglet]);

Merci pour vos lumières ?

Cdlt.

4 Replies
sfatoux72
Partner - Specialist
Partner - Specialist

Bonjour,

Je ne connais pas de moyen direct pour accéder à la première feuille d'un fichier Excel donné, mais je sais comment récupérer le nom de toutes les feuilles d'un classeur.

Si une règle de nommage sur le nom des feuilles est définit, vous pourrez:

  • identifier, avec la date par exemple, le nom de la feuille à charger
  • stocker ce nom dans une variable
  • utiliser cette variable dan votre script de chargement

Il faut pour cela, créer une connexion odbc / oledb  sur votre fichier Excel et envoyer une commande qui vous retournera le nom de toutes les feuilles.

Voici un exemple:

//Connexion à votre fichier Excel via OLEDB ou ODBC

OLEDB CONNECT TO [Provider=MSDASQL.1;Persist Security Info=False;Extended Properties="DSN=Excel Files;DBQ=C:\Users\sfatoux\Desktop\Classeur1.xlsx;DefaultDir=C:\Users\sfatoux\Desktop;DriverId=1046;MaxBufferSize=2048;PageTimeout=5;"];

//Extraction des metadonnées de votre fichier Excel

XlsTables:

SQLTables;

DISCONNECT;

//Manipulation de vos noms de feuille pour déterminer la dernière en fonction de règle de nommage

load MaxString(TABLE_NAME) as SheetToLoad

Resident XlsTables;

//Mémorisation dans une variable de la feuille à chargé en supprimant les caractères non désirés

Let SheetToLoad = PurgeChar(Peek('SheetToLoad'), '$');

//Chargement des données de la feuille désirée en utilisant la variable

data:

LOAD *

FROM (ooxml, embedded labels, table is $(SheetToLoad));

mohamed_ahid
Partner - Specialist
Partner - Specialist

Hello ,

au moment du load tu peux soit:

supprimer le nom de la feuille sur l'excel .

(biff, embedded labels)   au lieu de  (biff, embedded labels, table is Sheet1$);

automatiquement Qlik va ouvrir la première feuille .

soit utiliser une variable qui va récupérer le nom comme ici :

https://community.qlik.com/message/763947?_ga=1.267739401.680988469.1443717565#763947

Not applicable
Author

Merci pour vos réponse et désolé pour mon absence.

Je vais essayer l'astuce de Mohamed.

Cdlt.

flochi75
Creator III
Creator III

Bonjour Daidmous,

ce post ne pourrait-il pas répondre à ta demande (en l'adaptant...) ?

Re: aide script pour import de plusieurs onglet excell concernant des périodes hebdomadaires

Florent.