Проблема NPOI с FirstRowNum и LastRowNum, возвращающими -1 для листа со строками - PullRequest
0 голосов
/ 18 февраля 2019

При попытке получить строки из листа Excel с помощью NPOI, FirstRowNum и LastRowNum возвращают -1.

IWorkbook workbook = null;
List<ImportedKPI> excelRows = new List<ImportedKPI>();
MemoryStream ms = new MemoryStream(array);
ISheet sheet = null;

workbook = WorkbookFactory.Create(ms);

sheet = workbook.GetSheet(mapping.Sheet);

//Do some stuff here and try to get rows  
for (int i = sheet.FirstRowNum; i <= sheet.LastRowNum; i++)
    //sheet.FirstRowNum = -1 && sheet.LastRowNum = -1

Еще одно достойное упоминание то, что при сохранении откройте файл и закройте его (с помощью LibreOffice)он спрашивает, хочу ли я сохранить, и после этого он работает.При сравнении байтовых массивов до / после сохранения они различаются.

1 Ответ

0 голосов
/ 20 февраля 2019

Оказывается, не все парсеры Excel работают для всех типов.И так как я получаю отличия по электронной почте, мне пришлось создать шаблон цепочки ответственности, основанный на нюгетах NPOI и ExcelDataReader.Это означает, что когда приходит Excel, я пытаюсь использовать первый класс для его анализа (сначала ExcelDataReader), а если он не удается, он переходит к NPOI и пытается проанализировать его с этим.Похоже, лучший способ, когда есть много источников.

...