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

Windows11+VS2019下Microsoft.ACE.OLEDB.16.0未注册问题求助

解决ACE OLEDB驱动未注册错误及替代方案

一、修复Microsoft.ACE.OLEDB.16.0' provider is not registered错误

1. 调整Visual Studio项目平台目标

系统和Office均为64位,但VS默认的Any CPU模式可能强制以32位进程运行,导致无法加载64位ACE驱动:

  • 右键项目 → 属性 → 生成 → 平台目标,选择x64
  • 取消勾选“首选32位”(若该选项存在)
  • 重新编译运行

2. 确保ACE驱动正确安装

  • 卸载所有已安装的32位ACE驱动(如有)
  • 重新下载并安装64位版本的Microsoft Access Database Engine 2016 Redistributable,安装过程保留默认路径
  • 安装完成后重启VS及电脑

3. 修正OLEDB连接字符串

你的连接字符串存在空格和引号拼接问题,使用以下标准格式(以C#为例):

// 针对.xlsx文件
string connectionString = $"Provider=Microsoft.ACE.OLEDB.16.0;Data Source=\"{Path}\";Extended Properties=\"Excel 12.0 Xml;HDR=YES;IMEX=1\";";
  • 移除Provider、Data Source等关键字与等号之间的空格
  • 用转义引号包裹含空格的路径和扩展属性
  • HDR=YES表示第一行作为表头,IMEX=1强制混合数据类型以文本读取,避免数据丢失

二、无需ACE驱动的替代方案(除IronXL外)

1. EPPlus

  • 特点:旧版本(4.x)为MIT开源协议,仅支持.xlsx/.xlsb文件,API简洁,无Office或ACE驱动依赖;新版本需商业授权
  • 示例代码:
using OfficeOpenXml;

// EPPlus 5+需设置许可
ExcelPackage.LicenseContext = LicenseContext.NonCommercial;

using (var package = new ExcelPackage(new FileInfo(Path)))
{
    var worksheet = package.Workbook.Worksheets.First();
    int rowCount = worksheet.Dimension.Rows;
    int colCount = worksheet.Dimension.Columns;
    for (int row = 1; row <= rowCount; row++)
    {
        for (int col = 1; col <= colCount; col++)
        {
            Console.WriteLine(worksheet.Cells[row, col].Text);
        }
    }
}

2. NPOI

  • 特点:Apache开源协议,支持.xls和.xlsx格式,跨平台,无外部依赖
  • 示例代码:
using NPOI.SS.UserModel;
using NPOI.XSSF.UserModel; // 处理.xlsx文件,.xls文件用HSSFWorkbook

using (var stream = new FileStream(Path, FileMode.Open, FileAccess.Read))
{
    IWorkbook workbook = new XSSFWorkbook(stream);
    ISheet sheet = workbook.GetSheetAt(0);
    for (int row = 0; row <= sheet.LastRowNum; row++)
    {
        IRow currentRow = sheet.GetRow(row);
        if (currentRow != null)
        {
            for (int col = 0; col < currentRow.LastCellNum; col++)
            {
                ICell cell = currentRow.GetCell(col);
                Console.WriteLine(cell?.ToString() ?? string.Empty);
            }
        }
    }
}

3. ClosedXML

  • 特点:MIT开源协议,专注于.xlsx文件,API直观易用,适合快速开发
  • 示例代码:
using ClosedXML.Excel;

using (var workbook = new XLWorkbook(Path))
{
    var worksheet = workbook.Worksheet(1);
    var range = worksheet.RangeUsed();
    foreach (var row in range.Rows())
    {
        foreach (var cell in row.Cells())
        {
            Console.WriteLine(cell.Value.ToString());
        }
    }
}

内容的提问来源于stack exchange,提问作者გიორგი თაყნიაშვ</think_never_used_51bce0c785ca2f68081bfa7d91973934>

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 15:19:21