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

使用Microsoft.ACE.OLEDB.12.0读取Excel提示提供程序未注册如何解决

问题说明

读取.xlsx格式Excel文件并将数据加载到DataGridView控件时,代码运行抛出如下异常:

System.InvalidOperationException: 'The 'Microsoft.ACE.OLEDB.12.0' provider is not registered on the local machine.'

已知本机安装的是Office 2019 Pro,尝试修改连接字符串中Microsoft.ACE.OLEDB.12.0的版本号后问题仍未解决,核心疑问为:该问题是本机Excel版本导致,还是需要在Visual Studio中引入额外依赖库?

复现代码如下:

DataTable rs = new DataTable();

using (var odConnection = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data source=c:\myfile.xlsx;Extended Properties='Excel 12.0;HDR=YES;IMEX=1;';"))
{
    odConnection.Open();

    using (OleDbCommand cmd = new OleDbCommand())
    {
        cmd.Connection = odConnection;
        cmd.CommandType = CommandType.Text;
        cmd.CommandText = "SELECT * FROM [Sheet1$]";
        using (OleDbDataAdapter oleda = new OleDbDataAdapter(cmd))
        {
            oleda.Fill(rs);
            dataGridView4.DataSource = rs;
            dataGridView4.Font = new Font("MS Sans Serif", 8);
        }
    }
    odConnection.Close();
}

解决方案

这个问题和Visual Studio是否引入依赖库无关,本质是系统层面的ACE OLEDB驱动架构与程序编译目标不匹配导致的,和你本机安装的Office架构直接相关,按以下步骤排查即可:

  • 确认Office的安装架构
    打开Excel,依次进入「文件-账户-关于Excel」,在弹窗顶部可以看到当前安装的Office是32位还是64位。ACE驱动的架构必须和程序编译目标、Office架构完全一致,否则就会触发“提供程序未注册”的错误。
  • 调整项目编译平台
    打开Visual Studio的项目属性页,找到「生成」选项卡,将平台目标从默认的「Any CPU」修改为和Office一致的架构:64位Office选x64,32位Office选x86,必须取消勾选「首选32位」选项。修改完成后重新编译项目即可,Office 2019默认自带对应架构的ACE OLEDB驱动,多数场景下这一步就能解决问题。
  • 补充安装驱动(仅第二步无效时操作)
    如果你安装的是即点即用版本的Office,可能没有默认注册ACE驱动,安装对应架构的Access Database Engine即可。注意不需要修改连接字符串里的Provider字段,Microsoft.ACE.OLEDB.12.0兼容所有高版本Office的xlsx格式,随意修改版本号反而会导致匹配失败。

注意:不要同时安装32位和64位版本的ACE驱动,会和现有Office组件产生冲突。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 05:06:19