C# 如何摆脱例外情况;';微软.ACE.OLEDB.12.0';提供程序未在本地计算机上注册”;赢7

C# 如何摆脱例外情况;';微软.ACE.OLEDB.12.0';提供程序未在本地计算机上注册”;赢7,c#,oledb,oledbconnection,oledbexception,oledbdataadapter,C#,Oledb,Oledbconnection,Oledbexception,Oledbdataadapter,我正在Win7机器上使用VS2010在.NET4.0框架上运行ASP.NETC#应用程序。在我的代码中,我想将Excel文件链接到“DataTable”对象。ie我想访问Excel文件中的数据并将其存储在DataTable对象中。因此,我使用了以下代码片段: _ 我在链接上安装了可用的exe 但我仍然在运行代码时收到相同的异常消息。 我得到的例外是“Microsoft.ACE.OLEDB.12.0”提供程序未在本地计算机上注册” 请帮我做这个 提前感谢。您可能在64位Windows上安装了32位

我正在Win7机器上使用VS2010在.NET4.0框架上运行ASP.NETC#应用程序。在我的代码中,我想将Excel文件链接到“DataTable”对象。ie我想访问Excel文件中的数据并将其存储在DataTable对象中。因此,我使用了以下代码片段:

_

我在链接上安装了可用的exe

但我仍然在运行代码时收到相同的异常消息。 我得到的例外是“Microsoft.ACE.OLEDB.12.0”提供程序未在本地计算机上注册”

请帮我做这个


提前感谢。

您可能在64位Windows上安装了32位驱动程序。切换到32位编译或源64位驱动程序。

您应该尝试此操作(确保您在x86(32位)计算机中):

此下载将安装一组组件,可用于促进2007 Microsoft Office System文件和非Microsoft Office应用程序之间的数据传输


~39/56无法接受的答案。你应该抽出一点时间仔细检查并接受更多的答案。我建议,在询问一些例外情况时,提供有关它的详细信息:类型、消息。这会有帮助-没有人有水晶球。嗨,问题文本中有例外。我再次编辑了我的问题,并将其包含在正文中。你能告诉我1)如何切换到32位编译吗。或2)提供64位驱动程序。如果我听起来很傻,请原谅。我是这方面的新手。请让我知道。您需要在VS的“构建”菜单下的“配置管理器”中添加新配置。这篇MSDN文章解释了如何转到x64。x86的步骤相同。你可能在正确的轨道上。但是,该提供商没有64位可再发行版本,他使用的是ASP.NET。他必须启用一个32位的应用程序池。错过了其中的ASP.NET部分。很好的发现@HansI将其改为32位编译mmode,对我来说效果很好。谢谢。:)但我的应用程序运行在64位Win7机器上。我该怎么做呢?然后你应该切换到32位编译,比如@spender说我不知道它在哪里,试试:“项目属性>编译>高级编译>在下拉列表中选择x86(32位)”
_connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=\"" + excelFile + "\";Extended Properties='Excel 8.0; HDR=NO; IMEX=1'";
        }

DataTable table = new DataTable();
            OleDbCommand command = new OleDbCommand();
            command.Connection = new OleDbConnection(_connectionString);
            command.CommandType = CommandType.Text;
            command.CommandText = "select * from [NameOFExcelSheet$A1:D20]";  // Want to read the Excel sheet. The name of Excel sheet is "NameOfExcelSheet". Wan to read the celles in the range A1 and D20.

            OleDbDataAdapter adapter = new OleDbDataAdapter();
            adapter.SelectCommand = command;
            adapter.Fill(table);  // EXCEPTION OCCURS IN THIS LINE.