NPOI问题,FirstRowNum和LastRowNum对于具有行的工作表返回-1

时间:2019-02-18 13:00:09

标签: c# excel npoi

当尝试使用NPOI从Excel工作表中获取行时,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 :(得分:0)

结果并不是所有的excel解析器都适用于所有类型。 而且由于我通过电子邮件获得了卓越的表现,因此我不得不基于NPOI和ExcelDataReader nugets做一个责任链模式。 这意味着当excel出现时,我尝试使用第一类对其进行解析(首先是ExcelDataReader),如果不成功,它将进入NPOI并尝试使用该类进行解析。 来源很多时,这似乎是更好的方法。