NPOI не распознал конец файла

Я использую библиотеку NPOI для чтения файлов .xls и .xlsx.

Однако у меня есть эта проблема: метод GetRow() не возвращает значение null, даже если строка пуста.

Вот код

int idx_row = 1;
IRow currentRow = sheet.GetRow(idx_row);
while (currentRow != null)
{
    JObject jsonData = new JObject();
    jsonData["a"] = sheet.GetRow(idx_row).GetCell(0).StringCellValue.Replace(" ", "");
    // other similar code
    jsonPlateData.Add(jsonData);
    idx_row++;
    currentRow = sheet.GetRow(idx_row);
}

person Ribas    schedule 26.03.2018    source источник


Ответы (1)


Проверьте значение sheet.LastRowNum, возможно, строка кажется пустой, но Excel считает ее заполненной. Если это так, откройте файл Excel и удалите «пустые» строки.

person EzLo    schedule 26.03.2018
comment
Еще раз извините, этот файл является выходным файлом другого приложения. Как я могу удалить эти строки? В противном случае есть способ узнать, когда строки с содержимым заканчиваются? - person Ribas; 26.03.2018
comment
Вы можете попробовать проанализировать содержимое ячейки, которая не должна быть пустой, и выйти из цикла while, когда данных нет. - person EzLo; 26.03.2018
comment
Проблема в том, что если я попытаюсь получить доступ к этой ячейке, я получаю сообщение об ошибке - person Ribas; 26.03.2018
comment
Ну, это не самое подходящее решение, но вы можете знать, когда остановиться, когда появляется эта ошибка. Попробуйте перехватить это конкретное исключение в блоке catch внутри вашего файла while. Я не использовал NPOI какое-то время, я не могу придумать другого решения, извините D: - person EzLo; 26.03.2018
comment
Я думал так же. Не совсем чистое решение .. в любом случае еще раз спасибо за помощь - person Ribas; 26.03.2018