Så laddar du alla sheets i en excel fil direkt in i QlikView

Growth. Abstract financial document, 3d graph of frosted glass.

Vi på egbs consulting jobbar uteslutande med QDF – QlikView Deployment Framework vid utveckling hos nya kunder och i projekt. Ett tänk i detta ramverk är återanvändning av kod. Detta har lett till att vi byggt upp ett skriptbibliotek med kod vi kan återanvända vilket gör oss effektivare och stabilare samtidigt som vi ger kunden en kvalitativ kod. Det vi springer på ofta är att kunder önskar göra vissa ad-hoc analyser på t.ex. underlag från Excel. Med hjälp av dessa två sub:s kan du nu enkelt få in samtliga sheets/ark in i QlikView för snabba ad-hoc analyser. Kopiera och klistra in i ditt skript. Det du behöver göra är att ange din fils namn i anropet som ligger sist i skriptet och ser ut som följer. (Viktigt är då också att ditt QlikView dokument ligger på samma plats/mapp/folder som din excel fil. Annars anger du hela sökvägen hit.). Lycka till!

CALL egbs.LoadXlsSheets('dinExcelfil.xlsx',-1);


//Script starts here
SUB egbs.LoadXlsSheets(vL.egbs.ExcelFile, vL.egbs.StoreToQVD, vL.egbs.StoreToQVDPath)
      ODBC CONNECT TO [Excel Files;DBQ=$(vL.egbs.ExcelFile)];
      TRACE ### Connected to the excel file: $(vL.egbs.ExcelFile);
      egbs.tmpTables:
      SQLTABLES;
      CALL egbs.LoopXlsSheets('$(vL.egbs.ExcelFile)',$(vL.egbs.StoreToQVD),'$(vL.egbs.StoreToQVDPath)');
      DISCONNECT;
      TRACE ### Disonnect from the file: $(vL.egbs.ExcelFile);
      DROP TABLE egbs.tmpTables;
      TRACE ### Clean up - drop egbs.tmpTables;
 END SUB

 SUB egbs.LoopXlsSheets(vL.egbs.ExcelFile, vL.egbs.StoreToQVD, vL.egbs.StoreToQVDPath)
      LET vL.NoOfRows = NoOfRows('egbs.tmpTables');
      FOR vL.RowCounter = 0 TO $(vL.NoOfRows)-1

            LET vL.egbs.sheetName = SUBFIELD(PEEK('TABLE_NAME', vL.RowCounter,'egbs.tmpTables'),'$',1);
            TRACE ### Found sheet: $(vL.egbs.sheetName);
          $(vL.egbs.sheetName):
          LOAD * FROM [$(vL.egbs.ExcelFile)](ooxml, embedded labels, table is '$(vL.egbs.sheetName)'); 

            IF '$(vL.egbs.StoreToQVD)' = -1 THEN
                 TRACE ### Store here...;
                 //WRITE YOUR STORE HERE...
                 //WE USE OUR STORE PROCEDURE HERE...
            END IF

      NEXT vL.RowCounter
 END SUB

 CALL egbs.LoadXlsSheets('myExcelFile.xlsx',-1);

 

Share on LinkedInTweet about this on TwitterShare on Google+Share on FacebookEmail this to someone

Kommentera

E-postadressen publiceras inte. Obligatoriska fält är märkta *