在经典asp中使用excel ODBC驱动程序时出错

在经典asp中使用excel ODBC驱动程序时出错,excel,asp-classic,odbc,Excel,Asp Classic,Odbc,当我尝试将excel文档作为网页的数据源加载时,出现此错误 Microsoft OLE DB Provider for ODBC Drivers error '80004005' [Microsoft][ODBC Excel Driver]General error Unable to open registry key 'Temporary (volatile) Jet DSN for process 0xd5c Thread 0x7e4 DBC 0x19acf74 Excel'. 出

当我尝试将excel文档作为网页的数据源加载时,出现此错误

Microsoft OLE DB Provider for ODBC Drivers error '80004005' 

[Microsoft][ODBC Excel Driver]General error Unable to open registry key 'Temporary (volatile) Jet DSN for process 0xd5c Thread 0x7e4 DBC 0x19acf74 Excel'. 

出了什么问题?

问题很可能是excel文件的路径错误消息是红色的,与注册表无关

您将有一些类似这样的检查生成的路径是否正确

objConn.Open "Driver={Microsoft Excel Driver (*.xls)};DriverId=790;Dbq="&server.MapPath("\Resources\uploads\filername.XLS")&";DefaultDir="&server.MapPath("\Resources\uploads\")

我同意博恩的观点;消息的文本看起来与驱动程序的某些内部方面有关,而不是问题的“真正”原因

  • 我的第一个猜测是许可
  • 我还建议使用较新的Jet OLE BE提供程序()而不是Excel ODBC驱动程序

作为第一步,在MapPath中使用前斜杠,即/Resources/uploads/filername.XLS

然后验证路径是否正确

尝试以下操作以查看它是否指向正确的文件:

Response.Write server.MapPath("/Resources/uploads/filername.XLS")

这很可能是连接字符串的问题。你的连接字符串是什么?是的,升级新驱动程序是一个更好的选择不是一个坏答案,但是Microsoft.Jet.OLEDB.4.0驱动程序存在内存泄漏:重复使用此驱动程序打开的OLEDB连接会阻止对剪贴板的访问,并最终导致应用程序崩溃。最新的驱动程序Microsoft.ACE.OLEDB.12.0在连接到Excel时遇到了相同的问题:Microsoft不会修复它。我正在标记为答案,因为我正在为错误/错误提供参考