Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.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
C# 从Excel读取:64位系统上的Microsoft.Jet.OLEDB.4.0错误_C#_.net_Oledbconnection - Fatal编程技术网

C# 从Excel读取:64位系统上的Microsoft.Jet.OLEDB.4.0错误

C# 从Excel读取:64位系统上的Microsoft.Jet.OLEDB.4.0错误,c#,.net,oledbconnection,C#,.net,Oledbconnection,我正在使用以下工具阅读我的应用程序中excel工作表的内容: OleDbConnection con = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + fileName + ";Extended Properties=Excel 8.0"); _myDataSet = new DataSet(); OleDbDataAdapter myCommand = new OleDbDataAdapter(

我正在使用以下工具阅读我的应用程序中excel工作表的内容:

 OleDbConnection con = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + fileName + ";Extended Properties=Excel 8.0");
 _myDataSet = new DataSet();
 OleDbDataAdapter myCommand = new OleDbDataAdapter(" SELECT * FROM [" + "My Sheet" + "$]", con);

myCommand.Fill(_myDataSet);
con.Close();
这在64位系统中失败,错误为:

Microsoft.Jet.OLEDB.4.0的提供程序是 未在本地计算机上注册


如何使它在64位机器上工作?

我认为它不起作用。。。见这一相关问题:

问题似乎在于COM/Interop不是为64位环境设计的,因此不能在64位模式下注册


您可以强制您的.NET应用程序在64位计算机上以32位模式运行,这将允许您访问OleDB功能。

Microsoft.Jet.OleDB没有64位版本,只有32位。将应用程序编译为32位(平台目标:x86内置选项)。

Microsoft发布了一个驱动程序发行版,其中包含一个适用于Access和Excel的64位驱动程序。您可以从MS站点下载64位和32位版本。下载页面还简要介绍了需要在连接字符串中更改哪些内容才能引用ACE驱动程序

简而言之,安装64位驱动程序发行版,然后将连接字符串更改为以下内容:

string connStr = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + fileName + ";Extended Properties=""Excel 8.0;IMEX=1""";

算了吧,使用codeplex中的这些dll来解决这个问题

是,或者您可以使用corflags.exe将程序集切换为以32位模式运行。