2017-03-09 50 views
1

如何循環從指定範圍返回的值?C#通過從一個範圍接收的值進行互操作循環

我嘗試以下的代碼,但它返回:

無法應用用[]索引到類型 '的System.Array'

var rng = (Excel.Range)sheet.Range[sheet.Cells[3, 2], sheet.Cells[3, 27]]; 
var wsValues = rng.Cells.Value; 
for (var j = 0; j < wsValues.Length; j++) 
{ 
    var test = wsValues[j]; 
} 

enter image description here

回答

1

其的表達一個系統數組不是'正常數組'(基於錯誤)。所以你應該可以使用var test = wsValues.GetValue(1, j);注意這將返回一個對象。所以你將不得不根據你的預期類型進行轉換。

另請注意,在這種情況下1是因爲所有測試數據都有1作爲您的多維數組中的第一個值。你可以將一個多維數組看作一個網格,有一個x座標和一個y座標,所以如果你想正確地遍歷它們(就好像你使用了多列而不是一個)。然後,你會怎麼做:

for (var x = 1; x <= wsValues.GetLength(0); x++) 
{ 
    for (var y = 1; y <= wsValues.GetLength(1); y++) 
    { 
     var test = wsValues[x, y]; 
    } 
} 

在此對GetLength命令返回該維度的長度,所以第一個返回多少「列」或最大x值有,而第二個返回的長度最大y值或有多少行。

+0

用'var test = wsValues.GetValue(j)'試過'並返回:'Array不是一維數組。' – Valip

+0

這是因爲它是一個多維數組,我將編輯我的答案以進行適當的查找。 –

+0

現在我得到了'索引超出了數組的範圍.'對於'x = 0','y = 0' – Valip