C# 从Excel读取:64位系统上的Microsoft.Jet.OLEDB.4.0错误
我正在使用以下工具阅读我的应用程序中excel工作表的内容: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(
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位模式运行。