0

我们有一个旧的 ASP Classic 网站,它一直在 Windows 2003 上运行,需要迁移到 2012 年。

除了我们需要能够将包含完整类别的 CSV 或 Excel 文档上传到服务器的部分之外,该站点的大部分工作。

我知道在 Windows 2008 时不存在 Microsoft 驱动程序,这就是为什么我们不得不在 2003 年离开该站点这么长时间,但我们现在正试图通过找到正确的 MS Text/CSV/XLS 驱动程序来解决这个问题Windows 2012 - 购买一个组件来为我们完成这项工作

搜索后,我找到了这篇 MS 知识库文章 > http://www.microsoft.com/en-us/download/details.aspx?id=13255

这说明它应该可以完成这项工作,但是当我使用从知识库文章中获得的以下代码上传 Excel 时

Set objConnectionCSV    = Server.CreateObject("ADODB.Connection")       
Set objCSVRecs      = Server.CreateObject("ADODB.Recordset")

'* Get path and extension of uploaded file - earlier on using ASPUpload
strPath = objFile.Path
strExt  = lcase(Right(strPath,Len(strPath)-InStrRev(strPath,".")))  

'* try with new driver code
With objConnectionCSV
.Provider = "Microsoft.ACE.OLEDB.12.0"              

'* it errors on this line!
.Open "Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};DBQ=" & strPath & ";"""

'* old code which I don't get to which required data to be on sheet 1
On Error Resume Next
Set objCSVRecs = .Execute("[Sheet1$]") 
If Err.number <> 0 Then
    strErrMessage   = "Error opening file: " & Err.number & " " & Err.Description & ";"
    Err.Clear                       
End If
End With

我在线收到此错误

.Open "Driver={Microsoft Excel 驱动程序 (*.xls, *.xlsx, *.xlsm, *.xlsb)};DBQ=" & strPath & ";"""

Microsoft Access 数据库引擎错误“80004005”

找不到可安装的 ISAM。

这是正确的文本驱动程序吗?

是否需要做其他事情,例如 IIS 设置或不同的代码?

我们已经重新启动了 IIS 并使用了权限,它在 64 位模式下运行。

是否有人对此问题有解决方案或知道解决方法,例如我可以使用/购买的组件,因为此时我不想自己开始在 ASP 经典中编写文件解析器。

即使我只能处理 CSV 文件而不是 XLS、XLSX 等,那也足够了,但我只需要知道要使用的代码、正确的连接字符串以及要在 IIS 中安装或设置的任何内容。

提前感谢您的帮助。

4

1 回答 1

0

看起来 OLEDB 和 ODBC 正在同时使用。

OLEDB

.Provider = "Microsoft.ACE.OLEDB.12.0"              

ODBC

.Open "Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};DBQ=" & strPath & ";"""

由于这些数据源 API 完全不同并且完成相同的任务。这是讨论差异的 StackOverflow 的答案。

删除或注释掉这一行。

.Provider = "Microsoft.ACE.OLEDB.12.0" 

更新

代替

Set objCSVRecs = .Execute("[Sheet1$]") 

有了这个

Set objCSVRecs = .Execute("SELECT * FROM [Sheet1$]")

下面的代码是在 Windows 2012 R2 VM 上设置的。

给定:为此演示创建了一个带有字段 id、LastName、FirstName 的 Excel 电子表格。

在此处输入图像描述

<%
Set objConnectionCSV    = Server.CreateObject("ADODB.Connection")       
Set objCSVRecs      = Server.CreateObject("ADODB.Recordset")

'Important: Be sure your strPath variable contains a value. For testing purposes, I hard coded a value.
strPath = objFile.Path
strExt  = ".xlsx"  

'Opening tags for asp page
response.write "<html><body>"

With objConnectionCSV  
    .Open "Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};DBQ=" & strPath & ";"""

    On Error Resume Next
    Set objCSVRecs = .Execute("select * from [Sheet1$]") 

    Do While Not objCSVRecs.EOF
            response.write "Data row: " & objCSVRecs("id").Value & " Name = " &  objCSVRecs("LastName").Value & ", " & objCSVRecs("FirstName").Value & "<br/>" 
        objCSVRecs.MoveNext
    Loop

    If Err.number <> 0 Then
        strErrMessage   = "Error opening file: " & Err.number & " " & Err.Description & ";"
        Err.Clear                       
    End If
End With

'End tags for asp page
response.write "</body></html>"
%>

结果

在此处输入图像描述

于 2015-02-03T17:11:26.047 回答