C# 源数组中至少有一个元素无法向下转换为目标数组类型多维数组

C# 源数组中至少有一个元素无法向下转换为目标数组类型多维数组,c#,arrays,multidimensional-array,office-interop,C#,Arrays,Multidimensional Array,Office Interop,我有这行代码,我打算将数组从ws.get_Range(“F2”,“AL”+(1+noOfStudents)).Value2复制到cValuesAll。它正在引发异常,源数组中至少有一个元素无法向下转换为目标数组类型。数组是多维的 类似的代码行 Array.Copy(ws.get_Range("F2", "AL" + (1 + noOfStudents)).Value2, cValuesAll, ws.get_Range("F2", "AL" + (1 + noOfStudents)).Value

我有这行代码,我打算将数组从
ws.get_Range(“F2”,“AL”+(1+noOfStudents)).Value2复制到
cValuesAll
。它正在引发异常
,源数组中至少有一个元素无法向下转换为目标数组类型
。数组是多维的

类似的代码行

Array.Copy(ws.get_Range("F2", "AL" + (1 + noOfStudents)).Value2, cValuesAll, ws.get_Range("F2", "AL" + (1 + noOfStudents)).Value2.Length);

工作正常。

此异常意味着源数组包含的值的类型与
cValuesAll
元素的类型不同。所以你有两种方法来解决这个问题:

1。更改Excel中F2:AL*范围的单元格类型

2.复制
中的值,对于
循环,如果可能,强制转换值或向用户报告无效的单元格值

Array.Copy(ws.get_Range("C2", "AI" + (1 + noOfTeachers)).Value2, aValuesWOSummary, ws.get_Range("C2", "AI" + (1 + noOfTeachers)).Value2.Length);
dynamic values=ws.Range[“F2”,“AL”+(1+noOfStudents)].Value2;
int firstDimension=values.GetLength(0);
int secondDimension=values.GetLength(1);
double[,]数组=新的双精度[firstDimension,secondDimension];
对于(int i=0;i
dynamic values = ws.Range["F2", "AL" + (1 + noOfStudents)].Value2;

int firstDimension = values.GetLength(0);
int secondDimension = values.GetLength(1);
double[,] array = new double[firstDimension, secondDimension];

for (int i = 0; i < firstDimension; i++)
{
    for (int j = 0; j < secondDimension; j++)
    {
        object value = values[i + 1, j + 1];

        if (value == null)
        { /* Report about a null value */ }

        if (value is double)
        {
            array[i, j] = (double)value;
        }
        else
        {
            if (!double.TryParse(value.ToString(), out array[i, j]))
            { /* Report about a wrong type */ }
        }
    }
}