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

C#调用ExcelDataReader读取xlsx 提示无法加载3.4.2.0版本程序集

报错核心原因

这个错误是CLR运行时找不到匹配版本的ExcelDataReader程序集导致的,常见触发场景:

  • 只安装了ExcelDataReader核心包,漏装了拆分出来的ExcelDataReader.DataSet依赖包(3.x版本后DataSet相关的扩展方法被单独拆分到这个包,版本不匹配就会触发查找指定版本核心dll的报错)
  • 安装NuGet包时本地缓存损坏,或者程序集引用的「复制本地」属性被设为False,编译后dll没有被复制到项目输出目录
  • 项目中多个组件引用了不同版本的ExcelDataReader,没有配置绑定重定向导致加载版本冲突
  • 贴出的代码存在语法错误,会直接导致编译失败
修复步骤

1. 重新正确安装NuGet包

打开NuGet包管理器控制台,依次执行以下命令,先清理损坏的安装记录,再安装完整的匹配版本包:

# 强制卸载现有相关包
Uninstall-Package ExcelDataReader -Force
Uninstall-Package ExcelDataReader.DataSet -Force

# 安装3.4.2.0版本的完整依赖
Install-Package ExcelDataReader -Version 3.4.2.0
Install-Package ExcelDataReader.DataSet -Version 3.4.2.0

安装完成后清理解决方案,重新生成项目,检查bin输出目录下是否存在ExcelDataReader.dll,右键查看文件详情确认版本号为3.4.2.0。

2. 检查引用配置

  • 在解决方案资源管理器的「引用」列表中找到ExcelDataReader,打开属性面板,确认复制本地选项设置为True,保证编译时dll会被复制到运行目录。
  • 如果使用SDK风格的项目格式(.NET Core/.NET 5+),打开csproj项目文件,删除ExcelDataReader相关引用上的PrivateAssets="all"配置,避免包被标记为不输出到运行目录。

3. 修复代码错误

贴出的调用代码存在语法错误,方法调用缺少右括号,修正为:

Exceloperations.PopulateInCollection(@"C:\Users\Devcare\Desktop\DB.xlsx");

另外注意ExcelToDataTable方法需要调用ExcelDataReader.DataSet提供的扩展方法实现,标准实现参考:

public static DataTable ExcelToDataTable(string filename)
{
    using (var stream = File.Open(filename, FileMode.Open, FileAccess.Read))
    {
        using (var reader = ExcelReaderFactory.CreateReader(stream))
        {
            var dataSet = reader.AsDataSet(new ExcelDataSetConfiguration
            {
                ConfigureDataTable = _ => new ExcelDataTableConfiguration
                {
                    UseHeaderRow = true // 将第一行识别为表头
                }
            });
            return dataSet.Tables[0];
        }
    }
}

4. 配置绑定重定向(版本冲突时使用)

如果项目中其他类库引用了不同版本的ExcelDataReader,在项目的app.config/web.config中添加以下绑定配置,让运行时统一加载3.4.2.0版本:

<configuration>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="ExcelDataReader" publicKeyToken="93517dbe6a4012fa" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-3.4.2.0" newVersion="3.4.2.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>
报错截图参考

程序集加载报错截图


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 14:45:32