我想使用 Java 读取单元格值(在 Excel 文件中)。在此过程中,我使用 ODBC 将 Excel 文件作为我的数据源。我在单独的 .properties 文件中编写了用户、密码、URL 和所有属性代码,以便我的 Java 程序读取并连接到 ODBC。当我在本地计算机上运行它时它工作正常,但当我在服务器上运行它时则失败。我收到的错误是:
[Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified
服务器是运行 Windows 2012 的 64 位计算机。我在(服务器的)控制面板中检查了我的管理工具。它有两个 ODBC,一个用于 32 位,另一个用于 64 位。
我的代码仅在本地计算机上运行而不在服务器上运行的原因是什么?
是否是因为有两个工具,并且程序混淆了要寻找哪一个?
myDB=jdbc:odbc:Driver={Microsoft Excel Driver (*.xls, *.xlsx)};DBQ=c:/data.xls;READONLY=true;DriverID=22;
这是我在 .properties 文件中编写的代码。用户和密码字段为空。
是我遗漏了什么还是其他什么?
最佳答案
我认为最好的选择是从控制面板创建 ODBC DSN,然后尝试通过它进行连接:
java.sql.Connection c = java.sql.DriverManager.getConnection( "jdbc:odbc:exsh", "", "" );
而“exsh”是 DSN 的名称,它指向将要处理的电子表格文件。
如果没有 DSN,连接字符串应该是:
"jdbc:odbc:Driver={Microsoft Excel Driver (*.xls)};DBQ=c:/data.xls"
请记住,由于您使用的是 64 位系统,因此您可能需要安装 64-Bit OLEDB Provider for ODBC (MSDASQL) .
关于java - 在本地运行,但不在服务器上运行,因为 "Data source name not found and no default driver specified",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33540831/