Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用OleDbConnection读取c#中的xlsx文件会引发错误_C#_Excel_Oledb - Fatal编程技术网

使用OleDbConnection读取c#中的xlsx文件会引发错误

使用OleDbConnection读取c#中的xlsx文件会引发错误,c#,excel,oledb,C#,Excel,Oledb,我编写了一个控制台应用程序,使用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 objC

我编写了一个控制台应用程序,使用
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);
我已经执行了以下操作来解决问题

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

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

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

  • 控制台应用程序的配置平台为32位

  • 环境详情

  • Windows Server 2008(64位)
  • Visual Studio 2010(32位)
  • 未安装MS office
  • 已检查以下链接以修复此问题

    一,。 二,


    非常感谢您的帮助。

    您必须安装Microsoft Office;Office安装过程将复制并在GAC中注册所需的程序集('ACEOLEDB.DLL'),或者您可以在bin(应用程序)目录中添加缺少的程序集,或者自行重新注册这些程序集。

    不会安装2007 Office System驱动程序:数据连接组件工作吗?从这里回答:您可以使用Microsoft提供的可再发行互操作程序集,其中包括您想要的DLL。“Microsoft.ACE.OLEDB.12.0”是可再发行互操作程序集的一部分吗?将Office.Interop.Excel添加到项目引用后,我仍然会收到未注册的提供程序错误。