没有'Microsoft.ACE.OLEDB.12.0'错误的解决方案

时间:2013-09-14 21:33:42

标签: c# asp.net-mvc

我在一个控制器中遇到了MVC C#应用程序的问题。

以下代码继续给出错误:

 *The 'Microsoft.ACE.OLEDB.12.0' provider is not registered on the local machine.*

以下代码:

var excel = new ExcelQueryFactory("~/App_Data/uploads/" + tempName);
var usersForImport = from c in excel.Worksheet<User>()
                        select c;
int count = usersForImport.Count();

for (int i = 0; i < count; i++)
{
    User user = new User();
    user = usersForImport.Skip(i).First();
    db.Users.Add(user);
    db.SaveChanges();
}

我已经尝试过以前帖子中的2个解决方案,因为我认为这个问题是相同的,但它们并没有解决问题。

我尝试过的两个解决方案是安装Microsoft Access数据库引擎或为x86设置目标平台。

代码依赖于'linqtoexcel'包。

还有其他人遇到过这些问题吗?任何解决方案?

2 个答案:

答案 0 :(得分:19)

对于64位应用程序,有两种版本的ACE驱动程序可用:

Office 2007的

http://www.microsoft.com/en-us/download/details.aspx?id=23734

Office 2010的

http://www.microsoft.com/en-us/download/details.aspx?id=13255

我相信Office 2007版本有ProgId'Microsoft.ACE.OLEDB.12.0',所以我会试试这个而不是Office 2010,我认为它有ProgId'Microsoft.ACE.OLEDB.14.0'。< / p>

根据您的描述,看起来linqtoexcel包可能依赖于Office 2007版本。

答案 1 :(得分:0)

我已经在Build选项卡的项目属性中解决了这个问题。 我已将平台目标从x64更改为x86