6

我正在使用以下方法在我的应用程序中阅读 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

4 回答 4

10

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

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

string connStr = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + fileName + ";Extended Properties=""Excel 8.0;IMEX=1""";
于 2011-01-12T05:18:16.077 回答
5

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

于 2010-09-08T23:00:14.703 回答
1

我不相信它有效......看到这个相关的问题:OleDB not supported in 64bit mode?

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

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

于 2010-09-08T22:59:16.587 回答
1

算了,使用codeplex中的这些dll来解决这个问题。http://exceldatareader.codeplex.com/

于 2013-05-27T14:05:17.117 回答