2017-08-09 179 views
0

假設我有一個帶有兩個選項卡的Excel工作簿。這兩個選項卡都包含一個2維矩陣,如從Excel讀取三維數組(IBM ILOG CPLEX)

# 1st tab  # 2nd tab 
1 1 1   1 1 1 
1 1 1   1 1 1 
1 1 1   1 1 1 

如何在IBM ILOG中的三維數組中獲得這兩個選項卡? IBM官方支持頁面無法再找到主題Reading a 3-dimensional array from an Excel。這是一個死鏈接。任何人都可以幫助我嗎?它應該可以像這樣使用arrayExample。不是元組或其他數組。

int arrayExample[i][j][s] = [[[1,1,1], [1,1,1], [1,1,1]], [[1,1,1], [1,1,1], [1,1,1]]]; 
+0

那個鏈接剛剛適用於我。也許再試一次,或使用不同的瀏覽器,或清除緩存後。 – rkersh

回答

0

如果你仍然無法訪問該鏈接,這裏是從該技術說明中的信息:

答案:

使用的中間陣列(1周或2的尺寸),以 通過調用SheetRead()指令讀取所有數據。然後 初始化三維數組:

模型文件(的.mod):

int nbMonths = ...; 
int nbProducts = ...; 
int nbLevels = ...; 

//如果數據元素在列

int nb1[1..nbMonths*nbProducts*nbLevels] = ...; 
int nbArray[m in 1..nbMonths, p in 1..nbProducts,s in1..nbLevels]= nb1[s+nbLevels*(p-1)+nbProducts*nbLevels*(m-1)]; 
組織

//如果數據元素在二維數組中

int nb2[1..nbMonths, 1..nbProducts*nbLevels] = ...; 
int nbArray2[m in 1..nbMonths, p in 1..nbProducts,s in 1..nbLevels] = nb2[m,s+nbLevels*(p-1)]; 

數據文件(.DAT)

SheetConnection sheetInput("3DimArray.xls", 0); 
nb1 from SheetRead(sheetInput,"data!D2:D13"); 
nb2 from SheetRead(sheetInput,"data!B17:G18"); 

注:數據在電子表格和數據庫中的表通常是 2維。因此,3維數組本身不能存儲在 電子表格或數據庫表中。