我正在开发一个旧的(大约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
标签下添加,则唯一可用的是
并且Excel / Access驱动程序不会显示在Drivers
标签下,只会显示在3个。
我还能尝试什么?我也无法使用第三方库。