C#通过从一个范围接收的值进行互操作循环

问题描述:

如何循环从指定范围返回的值?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

其的表达一个系统数组不是'正常数组'(基于错误)。所以你应该可以使用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