Windows7 64位机中如何使用ODBC 64位读取excel文件

How to use the ODBC 64 bit to read the excel file in Windows 7 64 bit machine

I need to read the excel file through ODBC 64 bit in my windows 7 64 bit machine.

我的系统默认有两个odbcad32

  1. [32 位] C:\Windows\SysWOW64\odbcad32 (它包含微软 excel 驱动程序
  2. [64位] C:\Windows\System32\odbcad32 (它没有 微软 excel 驱动程序)

由于系统没有Microsoft Excel 64位ODBC驱动,我下载AccessDatabaseEngine_x64安装

安装成功后

[64 位] C:\Windows\System32\odbcad32 Microsoft Excel 驱动程序 存在。

现在当我通过eclipse 运行 java 程序。错误消息显示为

找不到合适的驱动程序 jdbc:odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=C:/Users/ashokkumarg/Desktop/Excel/TestCaseData.xls

但是相同的代码在 Windows 32 位机器上工作得很好。不知道是什么原因。

Java版本

Windows 7 32 位机器(代码工作的地方) 1.7.0_51

Windows 7 64 位机器(代码失败) 1.8.0_31

代码

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;


public class ConnectionTest {

public static void main(String[] args) throws SQLException {

Connection c = null;
Statement stmnt = null;


System.out.println("Test case is started Running");
try{


c = DriverManager.getConnection( "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=C:/Users/ashokkumarg/Desktop/Excel/TestCaseData.xls");

stmnt = c.createStatement();
String query = "select * from [TestCase$];";
ResultSet rs = stmnt.executeQuery( query );

while( rs.next() )
{
System.out.println( rs.getString( "Page" ));
}
}
catch(Exception e){
e.printStackTrace();
}
}
}

I have few questions over here:

  1. 当存在两个odbcad32时,如何在Windows7 64位机器上使用ODBC 64位读取excel文件。

  2. While 运行ning 程序是否正在使用 32 位 odbcad32 驱动程序详细信息。如果是这样,我需要如何配置 ODBC 64 位驱动程序才能在程序中使用它。

正如您所说的,同样的代码在 32 位机器上运行良好,我想您的应用程序也是 32 位的?

注意:驱动程序的位数不取决于操作系统,而是取决于尝试使用该驱动程序的应用程序。

因此:如果您有 32 位应用程序,则需要使用 32 位 ODBC 管理工具来配置 DSN 条目,并且需要相应的 32 位 ODBC 驱动程序。

如果您的应用程序是 64 位的,您需要使用 64 位版本的管理工具以及 64 位驱动程序。

因此,如果您的 Java 运行时是 32 位运行时,您需要始终使用 32 位版本的驱动程序。如果您使用 64 位 java 运行时,您将需要使用 64 位版本的驱动程序。

如果 System.getProperty("java.version") 返回“1.8.xxxx”,那么该机器是 运行ning Java 8 而 JDBC-ODBC 桥不是可用,因为它已从 Java 8.

中删除

如果您希望您的应用程序使用 ODBC,那么您必须确保您的用户是 运行ning Java 7 或更早版本。如果您不直接管理他们的机器,这可能会很困难,因为 Java 运行time (JRE) 的自动更新功能现在分发 Java 8.

如果您希望您的应用程序能够在 Java 8 下 运行,那么您将不得不使用其他方式来访问 Excel 数据。 Apache POI 是一种可能性。