在C#中使用OleDbConnection读取xlsx文件会引发错误

我编写了一个控制台应用程序,使用OleDbConnection在C#中读取xlsx文件。 它会抛出以下错误

Microsoft.ACE.OLEDB.12.0“提供程序未在本地计算机上注册。

以下是我写的代码

 string connString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=E:\Suganya\ColumnReport.xlsx;Extended Properties=Excel 12.0;"; OleDbConnection objConn = new OleDbConnection(); OleDbDataAdapter dataAdapter = new OleDbDataAdapter(); objConn = new OleDbConnection(connString); string Query = "SELECT * FROM [Sheet1$]"; OleDbCommand objCmd = new OleDbCommand(Query, objConn); DataTable Table = new DataTable(); dataAdapter.SelectCommand = objCmd; dataAdapter.Fill(Table); 

我已经执行了以下的事情来解决这个问题。

  1. 我安装了AccessDatabaseEngine.exe (32位),发现ACEOLEDB.dll存在于以下pathC:\Program Files (x86)\Common Files\microsoft shared\OFFICE14

  2. 尝试引用应用程序中的ACEOLEDB.dll 。 但它给了我以下错误

    无法添加对“ACEOLEDB.DLL”的引用。 请确保该文件是可访问的,并且它是一个有效的程序集或COM组件

  3. 控制台应用程序的configuration平台为32位

环境细节

  1. Windows Server 2008(64位)
  2. Visual Studio 2010(32位)
  3. MS办公室没有安装

检查以下链接来解决问题

1. http://www.codeproject.com/Questions/486549/Theplus-27Microsoft-ACE-Oledb-12-0-27plusproviderp 2. http://www.codeproject.com/Questions/337953/The-Microsoft-ACE -OLEDB-12-0-提供商-是-不雷吉斯

任何帮助,高度赞赏。

您必须安装Microsoft Office; Office安装过程将在GAC中复制和注册希望的程序集('ACEOLEDB.DLL'),或者可以将缺less的程序集添加到bin(应用程序)目录中,或者通过自己注册。