无法连接到Excel文件作为数据源

时间:2016-04-07 22:09:01

标签: c# excel odbc oledb

我正在开发一个旧的(大约2004年)ASP.NET 2.0应用程序。一项功能是允许用户通过Excel文件上传数据的请求。之前已经完成了这项工作(尽管采用了更新的技术),我认为这很简单。

我遇到的问题是我无法使用excel文件作为数据源,无论我使用什么提供商。

我能够很好地连接到SQL Server数据库。

我遇到的第一个问题是当我尝试通过OleDB连接时。每次我尝试连接时,都收到错误。

我正在运行64位W7,并安装了32位办公室(无法更换,工作笔记本电脑)。

我尝试过的连接字符串是

Provider=Microsoft.ACE.OLEDB.12.0; DataSource='{0}'; Extended Properties='HDR=YES;'
Provider=Microsoft.ACE.OLEDB.12.0; DataSource='{0}'; Extended Properties='Excel 12.0 Xml;HDR=YES;'    Provider=Microsoft.ACE.OLEDB.12.0; DataSource='{0}'; Extended Properties='HDR=YES;'
Provider=Microsoft.JET.OLEDB.4.0; DataSource='{0}'; Extended Properties='Excel 12.0 Xml;HDR=YES;'    Provider=Microsoft.ACE.OLEDB.12.0; DataSource='{0}'; Extended Properties='HDR=YES;'
Provider=Microsoft.JET.OLEDB.4.0; DataSource='{0}'; Extended Properties='Excel 12.0 Xml;HDR=YES;'

我收到的错误是

The 'Microsoft.ACE.OLEDB.12.0' provider is not registered on the local machine.

我做了一些研究,发现了人们尝试解决这个问题的几种不同方式,从下载2007访问驱动程序,2010年访问驱动程序,通过C:\Windows\SysWow64\odbcad32.exe添加它,并在x86模式下构建应用程序(它没有'无论如何运行,不太确定为什么虽然)。所有这些都导致了同样的错误。

然后我尝试通过ODBC连接以下连接字符串

Driver={{Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)}};DBQ='{0}';

然后我收到了一个新错误,即

ERROR [IM002] [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified

做了一些研究,我最终回到了与之前相同的分辨率。

我注意到的一件有趣的事情是,当我从odbcad32.exe文件夹和SysWOW64文件夹中运行System32时,我得到了不同的结果。当我从x64文件夹运行它时,我在User DSN下看到了Excel文件和Access数据库。为了安全起见,我将两者添加到System DSN,并在Drivers标签下看到它们也在那里。

但是,当我在System32文件夹下运行它时,我会像之前一样在User DSN标签下看到它们,但我无法配置它们。当我尝试时,我收到以下错误:

The setup routines for the Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb) ODBC driver could not be found. Please reinstall the driver.
Errors Found: The specified DSN contains and architecture mismatch between the Driver and the Application

如果我尝试在System DSN标签下添加,则唯一可用的是

  • 用于SQL Server的ODBC驱动程序11
  • SQL Server
  • SQL Server Native Client 11.0

并且Excel / Access驱动程序不会显示在Drivers标签下,只会显示在3个。

我还能尝试什么?我也无法使用第三方库。

0 个答案:

没有答案