2

我有一个简单的程序来测试使用 ADODB 打开与 excel 文件的连接。这是使用 VBScript 的 ASP Classic。这是代码:

<%@ Language="VBScript" %>
<% Response.buffer = true %>
<html>
<body>
<%

'Name of the excel file
exceldb="AW_Test.xls"
excel_file_name=Server.MapPath(exceldb)
response.write(excel_file_name)

Set cn = Server.CreateObject("ADODB.Connection")
cn.Open "Driver={Microsoft Excel Driver (*.xls)}; DriverId=790; DBQ=" &excel_file_name & ";"

cn.Close
Set cn=Nothing

Response.Write("All is good in the world...")

%>
</body>
</html>

尝试在此配置上运行时:

  • 视窗 7 64 位
  • IIS 7
  • 32 位模式下的应用程序池
  • 根目录下的文件
  • 在本地主机上运行 [http://localhost/adotest.asp]

我得到以下结果:

C:\inetpub\wwwroot\AW_Test.xls 

Microsoft OLE DB Provider for ODBC Drivers error '80004005' 

[Microsoft][ODBC Excel Driver] The Microsoft Jet database engine cannot open the file '(unknown)'. It is already opened exclusively by another user, or you need permission to view its data. 

/adotest2.asp, line 13 

但是,在此配置下的同一台机器上:

  • XP模式下的虚拟PC
  • IIS 6
  • 根目录下的文件
  • 在本地主机上运行 [http://localhost/adotest.asp]

我得到以下结果:

c:\inetpub\wwwroot\AW_Test.xls
All is good in the world... 

我已经验证/尝试过的事情:

  • 已验证权限(注意这是根目录)
  • 尝试使用 Jet Engine 代替

       cn.Open 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Inetpub\WWWRoot\AW_Test.xls;Extended Properties="Excel 8.0;HDR=No"'
    

得到错误:

C:\inetpub\wwwroot\AW_Test.xls
Microsoft OLE DB Provider for ODBC Drivers error '80004005' 

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

/adotest3.asp, line 13 
  • 验证所有以 32 位模式运行的应用程序池
  • 已验证的驱动程序存在于数据源的 SYSWOW 端

我确信我错过了一些简单的东西,但是,我已经没有东西可以尝试了。我知道有比 ASP Classic 等更好的方法,但是,这应该仍然有效......

我很感激任何帮助...

4

1 回答 1

0

尝试:

cn.Open "Driver={Microsoft Excel Driver (*.xls)}; DBQ=" &excel_file_name & ";"

它应该工作..

于 2013-06-27T14:11:22.687 回答