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];
}
答
其的表达一个系统数组不是'正常数组'(基于错误)。所以你应该可以使用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值或有多少行。
用'var test = wsValues.GetValue(j)'试过'并返回:'Array不是一维数组。' – Valip
这是因为它是一个多维数组,我将编辑我的答案以进行适当的查找。 –
现在我得到了'索引超出了数组的范围.'对于'x = 0','y = 0' – Valip