我在一个控制器中遇到了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'包。
还有其他人遇到过这些问题吗?任何解决方案?
答案 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