通过 Excel 连接到 Oracle 数据库

Connecting to Oracle Database through Excel

我正在尝试从 Excel sheet 连接到我们服务器上的 Oracle 数据库,但我无法理解原因。

我目前 32 位和 64 位 Oracle 12c 安装在不同的 ORACLE_HOME 中,并且安装了 32 位的 Excel在我的 64 位计算机上。

我正在尝试使用 New Query 向导连接到 Excel 中的 Oracle 数据库。

当我单击 From Oracle Database 时,我得到以下 error/message.

我可以继续使用我当前的提供程序,但是当我实际尝试连接到数据库时,我得到了这个:

我不明白的是,当我在计算机上安装了 32 位和 64 位版本的 Oracle 12c 时,为什么会出现此错误。两者都包含在我的 PATH 变量中(首先是 32 位),并且我还包含一个特定的 ORACLE_HOMETNS_ADMIN 以指向我的 32 位安装,因为我的 excel是 32 位的。

我非常想要通过Excel从数据库中查询的能力,但是这个问题让我很困惑。

编辑

我还刚刚将我的 Oracle 主目录中的 ODBC 驱动程序添加到 ODBC 数据源管理器工具中。

目前可以通过此工具进行连接。

但是当我尝试通过 ODBC 连接 向导进行连接时,我知道得到这个:

有什么想法吗?

您是如何安装 32 位和 64 位 Oracle 客户端的?

请看一下这个说明:BadImageFormatException. This will occur when running in 64 bit mode with the 32 bit Oracle client components installed

简短版本:

您的 excel 是 32 位的,您尝试使用 32 位的 Oracle。我假设您启动了 "ODBC Administrator" 的 64 位版本 - 可能存在不匹配。或者您的 PATH 关于 %ORACLE_HOME% and/or %ORACLE_HOME%\bin 文件夹

有问题

长版:

你的 Excel 是 32 位的,所以通常你通过将 32 位客户端放入 PATHORACLE_HOME 来做正确的方法,你不能将 32 位和 64 位程序集混合在一个过程。顺便说一句,当您按照上面的说明进行操作时,您的 Windows 会自动进行管理。

我假设您安装了 Oracle Instant Client。默认的 Instant Client 既不包括任何 ODBC 驱动程序也不包括 Oracle Data Provider (ODP.NET, Oracle.DataAccess.Client)

ODBC

您可能有 2 个 ODBC 驱动程序,一个来自 Oracle,通常在 OraClient12_home1 中称为 Oracle,另一个来自 Microsoft,称为 Microsoft ODBC for Oracle(默认情况下应安装 Windows 安装,但它还需要 Oracle 客户端)。

Oracle 的ODBC 驱动程序可用于32 位和64 位,Microsoft 驱动程序仅适用于32 位。您有 2 个 ODBC 管理员,32 位 (运行 c:\Windows\SysWOW64\odbcad32.exe) 和 64 位 (运行 c:\Windows\System32\odbcad32.exe)。在那里你应该看到 32 个安装的驱动程序。 64 位。

Oracle 数据提供程序

对于数据提供者,您有类似的情况。您有一个来自 Microsoft(Microsoft .NET Framework Data Provider for OracleSystem.Data.OracleClient)和 Oracle(Oracle Data Provider for .NET, Oracle.DataAccess.Client, 几个版本)。两者均适用于 32 位和 64 位。

原则上,您使用哪个 driver/provider 连接到 Oracle 并不重要 - 只是体系结构(即 32 位与 64 位)必须匹配。每个 driver/provider 需要相应的 Oracle 客户端安装。 Microsoft 的所有 drivers/providers 都已弃用,您应该更喜欢 Oracle 的(如警告消息中所述)

其他

Oracle 还提供了 ODP.NET、Managed Driver,它不需要任何进一步的 Oracle 客户端安装和 运行,32 位和 64 位。但是,我不知道你是否可以在 Excel.

中使用它

最后但同样重要的是,您还有 OLE DB 提供程序。还有一个来自 Microsoft(Microsoft OLE DB Provider for Oracle)和一个来自 Oracle(Oracle Provider for OLE DB)。 Microsoft 提供程序仅适用于 32 位并且已被弃用。