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

问题描述 投票:0回答:1

尝试使用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)时,它询问我是否要保存,之后它可以正常工作。在比较保存之前/之后的字节数组时,它们是不同的。

c# excel npoi
1个回答
0
投票

事实证明并非所有excel解析器都适用于所有类型。由于我通过电子邮件获得了优秀成绩,因此我必须根据NPOI和ExcelDataReader nugets执行一系列责任模式。这意味着当excel到来时我尝试使用第一个类来解析它(ExcelDataReader优先),如果它不成功,它会移动到NPOI并尝试用它解析它。当有许多来源时似乎更好的方式。

© www.soinside.com 2019 - 2024. All rights reserved.