NPOI未将对象引用设置到对象的实例

本文讲述了在使用VisualStudio2022和NPOI库编写Excel文件读写程序时遇到的问题,即在处理用户不同删除方式导致的空行时,如何处理未将对象引用设置到对象的实例错误,以及作者尝试通过`Any()`方法来捕获异常但依然失败的过程。
摘要由CSDN通过智能技术生成

用 Visual Studio 2022编写一个Excel文件读写的程序,为了编写方便,就计划引用 NPOI库。

在一开始的调试过程中,程序可以正常运行,但是多测试几个Excel文件的时候,就会报错,错误的内容是“未将对象引用设置到对象的实例”。

上网查询资料,其原因是用户在使用Excel的是,需要删除掉某一个单元格或是行或列的时候,有的人会选择删除行、列、单元格。有的人是按del删除单元格内容。不同的删除方式,在Excel存储的时候数据是不一样的。在用NPOI读取Excel文件的时候,遍历到某一个行的时候,这一行什么都没有,然后就会引发错误。

dr[j] = GetValueType(sheet.GetRow(i).GetCell(j));

或者这样的

header = sheet.GetRow(sheet.FirstRowNum + i);
          if (ColMax <header.LastCellNum)
                               {
                                 ColMax = header.LastCellNum;
                               }

读取LastCellNum的时候,就会引发错误,用 try/catch都不能拦截。

因为这样的一行是什么都没有的,是“空”的,所以尝试这样的操作:

                    try
                    {
                        header = sheet.GetRow(sheet.FirstRowNum + i);
                       if( header.Any())
                        {
                            if (ColMax <header.LastCellNum)
                               {
                                 ColMax = header.LastCellNum;
                               }

                        }

                 
                    }
                    catch (Exception)
                    {

                        //throw ;
                        MessageBox.Show("哇,出错了");
                    }

增加了 any()判断,这样的判断仍然会引发异常,但是这样的异常已经可以被try捕捉并处理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值