0

我正在尝试从 Excel 文件中获取数据。我知道 excel 中的索引从 1 开始,但是在读取简单矩阵时仍然出现Index exceeds bounds错误。
这是我正在使用的一个简单方法:

public static string[,] ReadFromExcel(Worksheet excelSheet)
{
    if (excelSheet == null) return new string[1,1];

    Microsoft.Office.Interop.Excel.Range xlRange = excelSheet.UsedRange;
    int firstRow = xlRange.Row;
    int firstColumn = xlRange.Column;

    int lastRow = xlRange.Row + xlRange.Rows.Count - 1;
    int lastColumn = xlRange.Column + xlRange.Columns.Count - 1;

    string[,] data = new string[xlRange.Rows.Count - xlRange.Row, xlRange.Columns.Count - xlRange.Column];
    for (int i= 0; i<= lastRow - firstRow; i++)
    {
        for (int j= 0; j <= lastColumn - firstColumn; j++)
        {
            data[i,j] = (string)(excelSheet.Cells[firstRow + i][firstColumn + j] as Range).Value;
            //When I try to read values I get an error
            System.Windows.MessageBox.Show(data[i, j]);
        }
    }

    return data;
}

我错过了什么?

4

1 回答 1

0

“数据”数组的大小应与行数和列数匹配:

  string[,] data = new string[xlRange.Rows.Count, xlRange.Columns.Count];

虽然 Excel 互操作的起始索引是 1,而不是零,但计数是正确的,您不需要减去起始行和列。

于 2019-04-29T11:31:13.860 回答