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

时间:2010-09-08 22:55:45

标签: 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(" SELECT * FROM [" + "My Sheet" + "$]", con);

myCommand.Fill(_myDataSet);
con.Close();

这在64位系统中失败,错误:

  

Microsoft.Jet.OLEDB.4.0'提供商是   没有在本地机器上注册

如何在64位计算机上完成这项工作?

4 个答案:

答案 0 :(得分:10)

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

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

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

答案 1 :(得分:5)

Microsoft.Jet.OLEDB没有64位版本,只有32位。将您的应用程序编译为32位(平台目标:构建选项中的x86)。

答案 2 :(得分:1)

我不相信它有效......请参阅此相关问题:OleDB not supported in 64bit mode?

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

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

答案 3 :(得分:1)

忘掉它,使用codeplex解决这个问题的这些dll。 http://exceldatareader.codeplex.com/