Получить данные из Excel - индекс превышает границы - PullRequest
0 голосов
/ 29 апреля 2019

Я пытаюсь получить данные из файла 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;
}

Чтоя скучаю?

1 Ответ

0 голосов
/ 29 апреля 2019

Размер вашего массива "data" должен соответствовать количеству строк и столбцов:

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

Хотя начальный индекс для Excel Interop равен 1, а не нулю, счетчик правильный, и вы нене нужно вычитать начальную строку и столбец.

...