Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#互操作循环通过从范围接收的值_C#_Interop - Fatal编程技术网

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

C#互操作循环通过从范围接收的值,c#,interop,C#,Interop,如何循环从指定范围返回的值 我尝试了以下代码,但它返回: 无法将带[]的索引应用于“System.Array”类型的表达式 var rng=(Excel.Range)sheet.Range[sheet.Cells[3,2],sheet.Cells[3,27]; var wsValues=rng.Cells.Value; 对于(var j=0;j

如何循环从指定范围返回的值

我尝试了以下代码,但它返回:

无法将带[]的索引应用于“System.Array”类型的表达式

var rng=(Excel.Range)sheet.Range[sheet.Cells[3,2],sheet.Cells[3,27];
var wsValues=rng.Cells.Value;
对于(var j=0;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];
    }
}

for(var x=1;x尝试使用
var test=wsValues.GetValue(j)
它返回:
数组不是一维数组。
这是因为它是多维数组,我将编辑我的答案以进行适当的查找。现在我得到的
索引超出了数组的边界。
对于
x=0
y=0
抱歉,通过添加代码,我希望您能在示例中看到您的x=0和y=0无效(通过您提供的测试),因此您必须从1开始计数器。这没关系,不过我会编辑答案。嗯,这很奇怪。您确定您也让它执行了
for (var x = 1; x <= wsValues.GetLength(0); x++)
{
    for (var y = 1; y <= wsValues.GetLength(1); y++)
    {
        var test = wsValues[x, y];
    }
}