OLEDB创建DbConnection连接Excel文件报错:未在本地计算机上注册ACE.OLEDB
作者:作者不详  发布日期:2021/11/09 15:51:24
  OLEDB创建DbConnection连接Excel文件报错:未在本地计算机上注册ACE.OLEDB

C/S框架网|www.csframework.com|CSFramework.com|知识库文档

错误信息:


未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0”提供程序

未在本地计算机上注册“Microsoft.ACE.OLEDB.12.0”提供程序


解决方案:

首先要确定程序是x86还是x64,AnyCpu支持x86及x64,然后下载ACE驱动。

Microsoft ACE:AccessDatabaseEngine 下载地址:

选择x86还是x64下载:

贴图图片-微信截图_20211109153520
若下载了x64位安装程序,安装时出现以下提示要先删除32位的ACE。

贴图图片-微信截图_20211109154136



Microsoft.Jet.OLEDB.4.0和Microsoft.ACE.OLEDB.12.0的区别


Jet 引擎,可以访问 Office 97-2003,但不能访问 Office 2007。

ACE 引擎是随 Office 2007 一起发布的数据库连接组件,既可以访问 Office 2007,也可以访问 Office 97-2003。

另外:Microsoft.ACE.OLEDB.12.0 可以访问正在打开的 Excel 文件,而 Microsoft.Jet.OLEDB.4.0 是不可以的。

所以,在使用不同版本的office时,要注意使用合适的引擎。


Jet连接语句:

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\您 的数据库名.mdb;Persist Security Info=True;Jet OLEDB:Database Password=您的数据库密码

ACE连接语句:

Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\您 的数据库名.accdb;Persist Security Info=True;Jet OLEDB:Database Password=您的数据库密码


DbConnection连接字符串

C# Code:

public DbConnection CreateConnection()
{
  
string conn = "";
  
string fileExt = Path.GetExtension(_FileName);
  
  
if (fileExt == ".xls")
  {
    
// IMEX=1 可把混合型作为文本型读取,避免null值
    
//xls
    
conn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + _FileName + ";Extended Properties='Excel 8.0;HDR=False;IMEX=1'";
  }
  
  
if (fileExt == ".xlsx")
  {
    
//xlsx格式的OLEDB链接
    
conn = "Provider = Microsoft.ACE.OLEDB.12.0 ; Data Source =" + _FileName + ";Extended Properties='Excel 12.0;HDR=Yes;IMEX=1'";
  }
  
  
if (String.IsNullOrWhiteSpace(conn)) throw new Exception("不能识别的文件格式!");
  
  
return new OleDbConnection(conn);
}

//来源:C/S框架网 | www.csframework.com | QQ:23404761







C/S框架网|原创精神.创造价值.打造精品


扫一扫加作者微信
C/S框架网作者微信 C/S框架网|原创作品.质量保障.竭诚为您服务
上一篇 下一篇