oledb.12.0 提供程序未在本地计算机上注册,但适用于某些应用程序
Posted
技术标签:
【中文标题】oledb.12.0 提供程序未在本地计算机上注册,但适用于某些应用程序【英文标题】:oledb.12.0 provider is not registered on the local machine but working for some applications 【发布时间】:2016-05-18 08:28:20 【问题描述】:我需要将一个 excel 文件读取到数据表中。 我有这个代码:
public static DataTable LoadExcelFileToDatatable(string Filename, string SheetName = "Sheet1")
try
string connectionString = System.String.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=0;Extended Properties=\"Excel 8.0;HDR=YES\";", Filename);
string query = System.String.Format("SELECT * from [0$]", SheetName);
OleDbDataAdapter dataAdapter = new OleDbDataAdapter(query, connectionString);
DataSet dataSet = new DataSet();
dataAdapter.Fill(dataSet);
DataTable dt = dataSet.Tables[0];
return dt;
catch (Exception ex)
throw ex;
在我正在使用的项目中,调用 LoadExcelFileToDatatable() 会抛出 “oledb.12.0 提供程序未在本地计算机上注册” 但是,如果我创建了一个新项目并调用了相同的方法,它将正常工作! 谢谢
【问题讨论】:
【参考方案1】:卸载提供程序并重新安装它,当您需要选择用户时,在安装表单中选择“For Everyone”而不是“Just Me”
【讨论】:
虽然我第二次重新安装它不应该使 1 个项目工作而不是另一个.. 鉴于 OP 在这两个项目中都声明了相同的方法。【参考方案2】:这取决于 office 版本。
您在属性中使用 excel 8.0。仅支持 97-2003 格式。
请参考以下链接
https://www.connectionstrings.com/excel/
【讨论】:
当你在扩展道具中给它错误的版本时,提供者似乎并不关心。扩展的道具也用于文件而不是提供者本身。 感谢您的回复,但是当调用相同的函数来读取相同的 excel 文件 (2007) 但在我为测试创建的另一个应用程序中时,相同的函数正在工作!以上是关于oledb.12.0 提供程序未在本地计算机上注册,但适用于某些应用程序的主要内容,如果未能解决你的问题,请参考以下文章
oledb.12.0 提供程序未在本地计算机上注册,但适用于某些应用程序
未在本地计算机上注册“Microsoft.Ace.OleDb.12.0”提供程序。
错误:“Microsoft.Ace.OLEDB.12.0”提供程序未在本地计算机上注册 [重复]
System.InvalidOperationException:“Microsoft.ACE.OLEDB.12.0”提供程序未在本地计算机上注册
未在本地计算机上注册 Microsoft.ACE.OLEDB.12.0 提供程序
Microsoft.ACE.OLEDB.12.0' 提供程序未在本地计算机上注册“如果导入 (.xlsb) Excel 二进制格式文件