2014-09-24 45 views
0

我的要求是,我有大量的Excel文件,我需要重新加載。但在加載之前,我需要檢查所有這些文件中的所有列標題是否正確(這些是數據文件並且格式相同,都應該具有相同的列標題)。如何從excel文件讀取列標題到Qlikview

所以,我的問題是如何從qlikview的excel中爲每個文件讀取列標題並與列標題的引用數組匹配?

我的嘗試:由於我對Qlikview非常陌生,對腳本編程不熟悉,所以無法走得太遠。我現在所能做的就是在我的代碼中從所存儲的目錄中逐個獲取所有文件,但不知道如何從它們中讀取列標題並進行比較。

感謝所有幫助

回答

4

讀頭

如果你只是想比較列標題(即名稱)的列表,然後就可以從Excel文件閱讀。例如,如果我們有一個Excel工作簿類似如下:

FIRST 1 
LOAD 
    A, 
    B, 
    C 
FROM 
[TestData.xlsx] 
(ooxml, no labels, table is Sheet1); 

這樣做是爲只讀第一:

Example of an Excel Workbook

然後我們就可以與下面的腳本讀取頭從工作簿中排(FIRST 1)。由於在文件參數中指定了no labels選項,工作簿的第一行被視爲另一行數據。

然後,這將導致以下:

Example of results from script

比較頭

根據您參考列標題存儲在何處,比較的一個方法是創建一個連鎖的「關鍵「並將其與上面腳本中加載的標題進行比較。

下面是一個示例腳本,其中參考報頭是通過一個字符串常量設置:

SET ReferenceHeaders = 'Column1|Column2|Column3'; 

DataHeaders: 
FIRST 1 
LOAD 
    A & '|' & B & '|' & C as HeaderKey; 
LOAD 
    A, 
    B, 
    C 
FROM 
[TestData.xlsx] 
(ooxml, no labels, table is Sheet1); 

LET LoadedHeaders = peek('HeaderKey',0,'DataHeaders'); 

IF LoadedHeaders = ReferenceHeaders THEN 
    // Load table etc. 
ENDIF 

peek語句可以從表中獲得一個記錄,在這種情況下,我們只是閱讀HeaderKey的第一行的值。由於這個表只包含一行,這會給我們我們加載爲字符串的標題。

然後,我們可以將它與參考標題進行比較,然後在它們匹配時採取適當的措施。

但是,這假定數據文件中的標題與您的參考標題具有相同的順序,因此這是最簡單的實現方法。如果這些列出現故障,則該過程變得更加困難。