You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

EPPlus读取Excel时空单元格导致空引用异常的解决方法

问题根因

通过EPPlus读取Excel单元格内容时,空单元格的Value属性会返回null。现有代码未做空值判断,直接对Value链式调用.ToString().ToLower().Trim()方法,当命中空单元格时就会抛出“未将对象引用设置到对象的实例”空引用异常,你定位到的item2赋值行报错,就是因为对应单元格值为null。

修复方案

给所有单元格读取逻辑增加空值兼容,判断Value为null时直接返回空字符串,非空时再执行字符串格式化操作。
修复后代码:

ExcelWorksheet worksheet = package.Workbook.Worksheets["Sheet1"];
var rowcount = worksheet.Dimension.Rows;
for(int row = 2; row <= rowcount; row++)
{
    var cellValue1 = worksheet.Cells[row, 1].Value;
    var cellValue2 = worksheet.Cells[row, 2].Value;

    list.Add(new Insured
    {
        item1 = cellValue1 == null ? string.Empty : cellValue1.ToString().ToLower().Trim(),
        item2 = cellValue2 == null ? string.Empty : cellValue2.ToString().ToLower().Trim(),
    });
}
简化写法

如果项目使用C# 6及以上版本,可以用空条件运算符+空值合并运算符简化判空逻辑,无需提前声明变量存单元格值:

list.Add(new Insured
{
    item1 = worksheet.Cells[row, 1].Value?.ToString().ToLower().Trim() ?? string.Empty,
    item2 = worksheet.Cells[row, 2].Value?.ToString().ToLower().Trim() ?? string.Empty,
});

注意:必须保留?? string.Empty的兜底赋值,否则空单元格对应的属性值会为null,后续其他业务逻辑调用该属性的字符串方法时,仍会触发空引用异常。

内容的提问来源于stack exchange,提问作者Veck

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 00:01:05