错误:未在本地计算机上注册“Microsoft.Ace.OleDb.12.0”提供程序

       使用背景:VS2013+office2010      

       最近写一个execl数据表导入方案,以前做过,拿过来几分钟就写好了,但是在导入execl表的时候,竟然出现错误,未在本地计算机上注册“Microsoft.Ace.OleDb.12.0”提供程序 嗯?我尝试运行以前做过的程序,导入execl表格很成功啊,为毛在新的解决方案这有毛病了?

百度了下说是缺少AccessDatabaseEngine.exe 文件 好下了个2007 ,2010都没用2010 64位的还没办法安装

错误:未在本地计算机上注册“Microsoft.Ace.OleDb.12.0”提供程序_第1张图片

而且能安装的都没啥用,好嘛 卸了。继续百度

1.在程序中右键属性,把生成里面的目标平台改为x86

错误:未在本地计算机上注册“Microsoft.Ace.OleDb.12.0”提供程序_第2张图片

然后。。。。就能运行了 ,问题是我以前做的不用改那个就能运行。。。

想了想,我前一段时间把vs2013卸了,然后装的vs2015然后又把vs2015卸了装的vs2013.。。。可能中间有什么东西被卸载了吧。

微软msdn有些解释:https://docs.microsoft.com/zh-cn/previous-versions/office/ff965871(v=office.14) 大致是:

如果您尝试针对 64 位的 Access 运行旧式的 32 位代码,则会发生运行时错误。例如,如果应用程序(32位代码)和与 64 位 Microsoft Access 一同安装的 64 位 ACE 提供程序之间的版本不匹配,则可能会造成错误“'Microsoft.ACE.OLEDB.12.0' 提供程序未在本地计算机上注册”。若要更正此问题,可以将自定义代码升级至 64 位版本或卸载 64 位 Access 然后替换为 32 位 Access。

反正大概就是版本问题,需要多注意。还是很迷惑????

 

-----------------------------------

感谢网友提供的第二种方法:

把部署站点的应用程序池-高级设置-常规-启用32位应用程序改为True就可以了

你可能感兴趣的:(c#)