C#互操作循环通过从范围接收的值
如何循环从指定范围返回的值 我尝试了以下代码,但它返回: 无法将带[]的索引应用于“System.Array”类型的表达式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
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];
}
}