关于32位程序在Win7&64位系统中连接Microsoft Excel数据源的问题

最近在新公司电脑上跑以前的selenium测试框架的时候,抛出了如下的错误

出现的是ODBC Driver问题:[Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified

我查看了我的系统属性 -- 64 bit System, Microsoft Excel -- 32 bit

而这个selenium框架之前都是运行在win7 32位系统上的,且框架脚本编译之后也是32位的,所以初步判断这与系统64位相关。

解决方案:

1. 下载32位的AccessDatabaseEngine.exe文件并安装(默认安装即可),由于我电脑上的Office是2010版本,所以需要下载2010版本的Access Data Engine。下载地址如下:

http://www.microsoft.com/en-us/download/details.aspx?id=13255

由于我的32位selenium框架移到了64位系统上运行,而32位编译的项目在64位系统上运行需要有32位的驱动,并且系统上安装的office也是32位的,故需要使用32位的AccessDatabaseEngine.exe驱动文件。

Description:

AccessDatabaseEngine.exe这个组件的作用是允许非 Microsoft Office 应用程序可以使用它们从 2010 Microsoft Office system 文件中读取数据。例如从 Microsoft Office Access 2010(mdb 和 accdb)文件以及 Microsoft Office Excel 2010(xls、xlsx 和 xlsb)文件中读取数据。这些组件还支持与 Microsoft Windows SharePoint Services 和文本文件建立连接。

此外,还会安装 ODBC 和 OLEDB 驱动程序,供应用程序开发人员在开发与 Office 文件格式连接的应用程序时使用。

1)如果你是使用 OLEDB 的应用程序开发人员,请将 ConnectionString 属性的 Provider 参数设置为“Microsoft.ACE.OLEDB.12.0”, 如果要连接到 Microsoft Office Excel 数据,请将“Excel 12.0”添加到 OLEDB 连接字符串的扩展属性中。

2)如果你是使用 ODBC 连接到 Microsoft Office Access 数据的应用程序开发人员,请将连接字符串设置为“Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=path to mdb/accdb file”
     如果你是使用 ODBC 连接到 Microsoft Office Excel 数据的应用程序开发人员,请将连接字符串设置为“Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};DBQ=path to xls/xlsx/xlsm/xlsb file

2. 对ODBC数据源进行配置

如果你打开ODBC管理器,由于系统是64位的,所以打开的也是64位版本的ODBC管理器。由于我的selenium框架是32位程序,它不能从64位的ODBC管理器中创建的DSN(Data Source Name)中找到相应的数据源,故会发生上面的错误。

而32位的ODBC Manager是在如下路径的:C:WindowsSysWOW64odbcad32.exe

双击odbcad32.exe文件,将出现如下窗口:

点击System DSN tab

点击Add button添加数据源,选择 Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)

最终添加System DNS如下:

最后点击OK就配置成功了。

注意:最后一定要记得重启下电脑之后再运行相应的应用程序。

通过以上的步骤,再去运行selenium框架中的代码,就没有抛错,而是顺利执行了。连接Microsoft Excel成功了。

总结:遇到问题还是需要抓住重点,反复排查,并且好好利用google, baidu这些有利工具,将所有搜索到的信息进行综合考虑,最终得到解决方案。

原文地址:https://www.cnblogs.com/windy1118/p/ODBC.html