尝试将数据从列表复制到2d数组时System.IndexOutOfRangeException

时间:2017-08-14 14:39:49

标签: c# list excel-interop

我得到一个例外:

  

System.IndexOutOfRangeException:'索引超出了数组的范围。'

当它在第二个循环中时,

在col ++上。我想把列表中的vales>优秀的列和行。请让我知道我做错了什么。

object[,] cellValuesToWrite = new string[excelRange.Rows.Count, excelRange.Columns.Count];                
foreach (List<string> errorRecord in section.ErrorRecords)
{
    int rows = 0;
    int col = 0;
    int length = errorRecord.Count;
    foreach (var elem in errorRecord)
    {
        if (col < length)
        {
            cellValuesToWrite[rows, col] = elem;
            col++;
        }
    }
    rows++;
}

1 个答案:

答案 0 :(得分:1)

如果使用excelRange.Rows.Count创建数组且excelRange.Rows.Count为5,则无法访问cellValuesToWrite[5, col],因为索引从0开始,并且您尝试以这种方式访问​​第6个元素。

为什么不使用旧的for循环(特别是如果你需要索引):

for (int row = 0; row < cellValuesToWrite.GetLength(0); row++)
{
    for (int col = 0; col < cellValuesToWrite.GetLength(1); col++)
    {
        cellValuesToWrite[row, col] = section.ErrorRecords[row][col];
    }   
}