2017-08-09 303 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维数组本身不能存储在 电子表格或数据库表中。