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

ExcelDataReader CreateOpenXmlReader读xlsx抛空引用异常解决方法

问题描述

在.NET项目中使用ExcelDataReader库读取Excel文件时出现异常,具体表现为:

  • 调用CreateBinaryReader读取.xls格式文件时运行一切正常
  • 调用CreateOpenXmlReader读取.xlsx格式文件时,抛出*"object reference not set to an instance of an object(未将对象引用设置到对象的实例)"*空引用异常

问题对应的实现代码如下:

using (FileStream excelfile = System.IO.File.Open(path, FileMode.Open, FileAccess.Read, FileShare.Read))
{
    IExcelDataReader excelReader;
    string ftype = Path.GetExtension(excelfile.Name);
    if(ftype == ".xls")
       excelReader = ExcelReaderFactory.CreateBinaryReader(excelfile,true);
    else
       excelReader = ExcelReaderFactory.CreateOpenXmlReader(excelfile);
    // 后续数据读取逻辑
    ...
}

出问题时项目引用的ExcelDataReader版本为2.1.2.3,前期受项目约束无法直接升级版本,通过调试追踪未定位到问题根因。

解决方案

2.1.2.3版本的ExcelDataReader存在未修复的已知缺陷:CreateOpenXmlReader方法在处理部分结构的.xlsx文件时会触发空引用异常,旧版本分支无对应修复补丁。
最终可行处理方案:

  • 升级项目中的ExcelDataReader库到稳定新版本
  • 适配版本变更后的API逻辑,无需再根据文件后缀区分调用不同的读取方法,统一改用CreateReader函数传入文件流,即可无报错正常读取.xls、.xlsx两种格式的Excel文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 08:03:19