NPOI读取Excel遇到的坑

NPOI是POI的.NET版本。POI是用Java写成的库,能帮助用户在没有安装Office环境下读取Office2003-2007文件。NPOI在.NET环境下使用,能读写Excel/Word文件。在实际项目中,一般是对Excel表格的处理,这方面的教程网上已经不少了,稍微搜索一下就能上手使用。这里记录一下我使用NPOI读取Excel数据遇到的一个坑。测试

当我把本地调试正常的程序发给用户测试时,读取某一个Excel表格时出现了“未将对象引用设置到对象的实例”这个错误。为了找出bug我用用户测试的Excel进行调试,发如今读取Excel行数时,实际有数据的行数为2,但程序读取为3行。也就是说有一行是空行,可是程序仍认为其有数据,而且row!=null也没法判断。代码以下:调试

int rowCount = sheet.LastRowNum;
for (int i = (sheet.FirstRowNum + 1); i <= rowCount; i++) //从第二行开始读数据
{
    IRow row = sheet.GetRow(i);
    if(row != null)
    {
        //读取数据
    }
}

后面我测试了一下,在Excel中对整行执行“清空数据”的操做时就会形成这个现象,“删除”整行则不会。而在Excel生产过程当中,没法保证用户不使用“清空数据”这个操做。那么只能在程序中进行空行的判断。然而百度、Google了一圈,也没发现有什么能够直接判断出为空行的方法。彷佛只有使用最原始的循环一行的每个cell,判断是否都为空来断定是否为空行。若是cell知足一下条件,即表示有数据。code

if(cell !=null && cell.CellType != CellType.Blank && string.IsNullOrEmpyt(cell.ToString().Trim()))

不知道还有没有更好的方法解决这个问题,若是有哪位大神知道的话还请留言。对象

相关文章
相关标签/搜索