2

我在一个控制器中遇到了 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”包。

有没有其他人遇到过这些问题?有什么解决办法吗?

4

2 回答 2

20

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

http://www.microsoft.com/en-us/download/details.aspx?id=23734适用于 Office 2007

http://www.microsoft.com/en-us/download/details.aspx?id=13255适用于 Office 2010

我相信 Office 2007 版本具有 ProgId 'Microsoft.ACE.OLEDB.12.0',所以我会尝试这个而不是 Office 2010,我相信它具有 ProgId 'Microsoft.ACE.OLEDB.14.0'。

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

于 2013-09-14T21:48:16.977 回答
0

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

于 2017-08-25T11:46:48.133 回答