Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Bonjour à tous
J'aimerais savoir si il est possible de faire un script de chargement dans Qlik Sense dont l'objectif serait de :
Charger des onglets d'un fichier excel dont les champs sont identiques par onglet et ou chaque onglet concerne une semaine.
Les onglet sont nommés ainsi S25 S26 etc.
Ainsi j'imagine qu'il faudrait détecter le nom de l'onglet et ajouter un champs date [Sem] en fonction du numéro de semaine de l'onglet puis concatener les onglets.
Merci de votre aide
Bruno
Bonjour Bruno,
Avec mon Windows 7 - 64bits j'ai du lancer ce gestionnaire ODBC :
c:\windows\sysWOW64\odbcad32.exe
Il faut y accéder depuis l'explorateur de dossiers car ce n'est pas la même que celui du menu démarrer.
Là, les pilotes Excel devraient bien apparaître lors de l'ajout d'une nouvelle connexion.
J'espère que je n'oublie rien car mon cerveau est encore un peu en vacances.
Xavier.
Bonjour Bruno,
Voici un bout de script que j'ai trouvé sur les forum anglophone et qui pourra t'aider. C'est du QlikView adapté en QlikSense.
Il y a 2 pré-requis :
- créer une connection ODBC vers ton fichier Excel (j'ai eu quelques difficultés avec mon Win7-64bits, hésites pas à redemander si besoin). NB : login et password restent vides.
- créer un connection Dossier où se trouve ce même fichier Excel
Ce script va charger tous les onglets du classeur via une boucle for-next. Je te laisse consulter l'aide de la fonction SQLTables qui est la clé du sujet.
Dans mon exemple le fichier nomme zzz.xlsx.
LIB CONNECT TO 'Excel Files zzz';
tables:
SQLTables;
DISCONNECT;
let var=NoOfRows('tables');
FOR i = 0 to $(var)-1
let sheetName=subfield(peek('TABLE_NAME', i,'tables'),'$',1);
$(sheetName):
LOAD *
FROM [lib://Desktop/zzz.xlsx](ooxml, embedded labels, table is '$(sheetName)');
NEXT i
DROP Table tables;
Je pense que tu peux manipuler sheetName pour vérifier que c'est un onglet semaine et remplacer $(sheetName): par le nom de la table que tu veux créer. Si les champs sont identiques le CONCATENATE sera implicite et ça devrait fonctionner comme ça.
Cordialement,
Xavier.
Bonjour Xavier
Merci beaucoup pour ta réponse je vais tester ça de retour de vacances et je posterai le résultat.
Encore une petite question ensuite qu'elle méthode employer pour rajouter un champ semaine à chaque onglet afin de rajouter une dimension temporelle à partir du nom de l'onglet ?
Bruno
Bonjour Bruno,
Voici un script qui devrait correspondre à ton besoin :
LIB CONNECT TO 'Excel Files zzz';
XlsInfo:
SQLTables;
DISCONNECT;
let var=NoOfRows('XlsInfo');
// Pour chaque feuille du classeur
FOR i = 0 to $(var)-1
// sheetName = nom de la feuille
let sheetName=subfield(peek('TABLE_NAME', i,'XlsInfo'),'$',1);
// weekNb = numéro de la semaine
let weekNb=floor(replace(Upper(sheetName),'S',''));
// si la feuille commence par S suivi d'un nombre compris entre 1 et 53
IF upper(left(sheetName,1))='S' and weekNb>=1 and weekNb<=53 then
// alors on charge toute la table et on rajoute une colonne semaine avec notre variable issue du nom de la feuille en valeur
MyTable:
LOAD *, $(weekNb) as Semaine
FROM [lib://Desktop/zzz.xlsx](ooxml, embedded labels, table is '$(sheetName)');
END IF
NEXT i
DROP Table XlsInfo;
bonjour à tous,
tout cela me semble bien compliqué... S'agissant d'un fichier excel, n'est il pas plus simple de rajouter une colonne "No_SEMAINE" dans chaque onglet ?
Bonjour Florent,
Je ne peux pas faire autrement le fichier Excel est généré automatiquement puis importé dans qliksense. ce pourquoi je recherche une solution d'automatisation via le script de chargement.
Bruno
Bonjour
Je veux bien un coup de main sur la connexion odbc j'ai cherché un peu partout si je comprends le principe je n'y arrive pas.
1 Je sauvegarde mon fichier Excel normalement
2 je crée une connexion odbc en utilisant le gestionnaire de connexion odbc
3 je choisis le driver odbc adéquat dans la liste ? ( ou trouver le driver pour odbc pour Excel)
4 Je sauvegarde le chemin de ma connexion
5 j'importe dans qlik sense
Est ce bien ça ?
Bruno
Je ne comprends pas trop le lien ficher excel et connexion ODBC :
Si vous voulez importer un fichier .xls dans qliksense, pas besoin de
connexion ODBC, il suffit de passer par :
1. Gestionnaire de données
2. Cliquez sur "ajouter des données
3.
Après, le chemin diffère selon si vous avez un serveur ou pas
Cordialement,
Florent LELARGE-OTINIANO
IDE - TIM
Département d'Information Médicale
02.54.88.33.00 poste 1922
Avis de confidentialité: Ce message e-mail, y compris les pièces jointes,
est à l'usage exclusif des destinataires et peut contenir des informations
confidentielles et / ou privilégiées. Toute lecture non autorisée,
utilisation, communication ou distribution est interdite. Si vous n'êtes pas
le destinataire prévu, merci de prévenir l'expéditeur par réponse e-mail, de
supprimer ce message et détruire toutes les copies de ceux-ci ainsi que les
pièces jointes.
Bonjour Florent,
En fait la connexion ODBC ou OLEDB est nécessaire pour utiliser la fonction SQLTables. Mais ici les données sont dans un fichier Excel... D'où ces complications.
Cordialement,
Xavier.
Bonjour Bruno,
Avec mon Windows 7 - 64bits j'ai du lancer ce gestionnaire ODBC :
c:\windows\sysWOW64\odbcad32.exe
Il faut y accéder depuis l'explorateur de dossiers car ce n'est pas la même que celui du menu démarrer.
Là, les pilotes Excel devraient bien apparaître lors de l'ajout d'une nouvelle connexion.
J'espère que je n'oublie rien car mon cerveau est encore un peu en vacances.
Xavier.