5

我有一个 Windows 64 位系统和一个 C# 应用程序,它使用 OleDbConnection 通过 32 位版本的 AccessDatabaseEngine.exe 组件读取 Excel 数据,因为我安装了 Office 32 位(按照 MSFT 的建议),而 64 位版本的 AccessDatabaseEngine 将不起作用与 32 位办公室。

为了让我的 C# 应用程序正常工作,我必须在项目构建设置中设置“首选 32 位”。这将设置编译器 /platform anycpu32bitpreferred 标志。在英特尔平台上没有“首选”。

所以一切运行良好。在我的机器上。不在我老板的 64 位机器上,他安装了 64 位 Office。

我找不到任何 app.config 选项来强制 64 位。有吗?在 .NET 加载序列中理论上是否可能存在一个?

MSFT 没有考虑到这一点。我应该能够以某种方式构建一个可以与 32 位和 64 位版本的 Office 一起使用的应用程序。我可以以某种方式使用 OleDbConnection 吗?

我知道 CorFlags.exe /32bitpref- 标志,但这需要维护两个版本的二进制文件。

有任何想法吗?修复?App.Config 选项?

4

2 回答 2

3

您需要下载64 位版本的 ODBC 驱动程序(它说的是访问,但它也确实是 excel 驱动程序)。

您可能会收到一条错误消息,提示您不能同时安装 32 位和 64 位,要解决此问题,您必须使用 /passive 标志

在运行 Office 2010 64 位的机器上安装 Microsoft ACE OLEDB Provider 32 位:

  • AccessDatabaseEngine.exe /被动

在运行 Office 2010 32 位的机器上安装 Microsoft ACE OLEDB Provider 64 位:

  • AccessDatabaseEngine_X64.exe /被动
于 2013-02-04T22:05:48.027 回答
0

您可以使用 ODBC 而不是 AccessDatabaseEngine COM 对象与 Excel 对话。这将跳过 32/64 位问题。

于 2013-02-04T22:04:07.437 回答