我有一个程序可以将数据从Excel导入到数据集中。要连接到Excel,我使用以下代码...
return new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" +
fileName + "; Jet OLEDB:Engine Type=5;"+ "Extended Properties=\"Excel 8.0;\"");
我刚刚使用Excel 2010安装了一台新计算机,现在连接尝试失败并引发异常The 'Microsoft.Jet.OLEDB.4.0' provider is not registered on the local machine
这是因为新版本的Excel需要不同的连接字符串吗?有没有人碰到这个?
编辑: 实际上我只是在某处读到使用System.Data.OleDbClient类甚至不需要在计算机上安装Excel。所以我的问题可能与Excel无关,而是与Microsoft.Jet工具无关。我的电脑运行Windows7 64位。不应该已经安装了吗?
答案 0 :(得分:1)
查看Microsoft Access Database Engine 2010 Redistributable 其他Excel版本的可再发行组件也存在。
答案 1 :(得分:1)
您需要专门为32位编译程序,以便它将在WoW子系统中运行并调用32位Jet提供程序。如上所述,没有64位版本的Jet提供程序,可能永远不会。
在Visual Studio中,您可以通过将项目设置中的目标CPU类型设置为x86而不是Any或64位来执行此操作。
如果您没有程序源,可以使用.NET框架附带的corflags.exe实用程序和/ 32bit +标志修改.exe,但如果它是强签名程序集,您将修改后需要.SNK重新签名。
如果您需要更多详细信息,请参阅WoW64:http://en.wikipedia.org/wiki/WoW64
答案 2 :(得分:0)