BeispielTabelle.xls:

Blatt1:

Datum: 31.10.1978  
Version: 1  
ID Bezeichnung Wert
1 Value 1 10
2 Value 2 20
3 Value 3 30
4 Value 4 40

Blatt 2:

Datum: 31.10.1978  
Version: 1  
ID Bezeichnung Wert
1 Value 1 10
2 Value 2 20
3 Value 3 30
4 Value 4 40

usw.

In diesem Beispiel haben wir eine Arbeitsmappe in der sich die Tabellen im gleichen Aufbau wiederholen, da Qlik diese Automatisch zu einer gemeinsamen Tabelle concateniert, können wir hier die Arbeitsblätter in einer Schleife laden. Damit ersparen Sie sich das erneute Einfügen einzelner Loadskripte pro Blatt. 

Es gibt hier 2 Ansätze, das vollautomatisierte Verfahren, lädt die gesamte Mappe und das manuelle Verfahren, nur bestimmte Arbeitsblätter laden.

 

Manuelles Verfahren:

FOR EACH BlattV IN 'Blatt 1','Blatt 2'
 
  LOAD
    ID 
    , Bezeichnung
    , Wert
    , subfield('$(BlattV)',' ',2) as Arbeitsblattnummer
 
 FROM [beispiel.xls] 
(biff, embedded labels, header is 2 lines, 
table is [$(BlattV)$]);
NEXT BlattV;

 

Vollautomatisiertes Verfahren:

LET OrdnerV = 'C:\Sheets\';; 
FOR EACH DateiV IN FILELIST('$(OrdnerV)*.xlsx') 
ODBC CONNECT32 TO [Excel Files;DBQ=$(DateiV)];

tables:
SQLtables;
DISCONNECT;

LET BlattzählerV = NoOfRows('tables');
FOR iBlatt = 0 to $(BlattzählerV) -1
LET BlattNameV = replace(purgeChar(
purgeChar(peek('TABLE_NAME', $(iBlatt), 'tables'),
chr(39)), chr(36)),'#','.');

AllData:

LOAD  '$(BlattNameV)' as BlattName,
* 
        FROM [$(vFile)]
(ooxml, embedded labels, table is [$(BlattNameV)]);
NEXT iBlatt
DROP TABLE tables; 
Next DateiV