使用经典的 ASP/VB 脚本读取 CSV 文件

时间:2021-07-13 21:04:48

标签: csv vbscript asp-classic readfile

我想在经典 ASP 中读取以下 CSV 文件中的值。

enter image description here

首先,我上传文件并将其存储在服务器中。然后我正在读取该文件并尝试使用循环将每列的值存储在变量中,然后将此变量传递给某个方法。我已经编写了代码,但似乎在循环值时有问题。代码似乎存储文件并正确打开它,但未能将其中的值循环到变量中。

这是我的代码:

    <HTML>
<HEAD>
<!--#include file="clsUpload.asp"-->
</HEAD>
<BODY>
<FORM ACTION = "clsUploadTEST.asp" ENCTYPE="multipart/form-data" METHOD="POST">
Demo Input: <INPUT NAME = "Demo"></INPUT><P>
File Name: <INPUT TYPE=FILE NAME="txtFile"><P>
<INPUT TYPE = "SUBMIT" NAME="cmdSubmit" VALUE="SUBMIT">
</FORM><P>
<%

Dim lineData
Dim  code
Dim name
Dim mail
Dim id
Dim price
Dim amount
Dim i As Integer
i = 0
set o = new clsUpload
if o.Exists("cmdSubmit") then

'get client file name without path
sFileSplit = split(o.FileNameOf("txtFile"), "\")
sFile = sFileSplit(Ubound(sFileSplit))

o.FileInputName = "txtFile"
o.FileFullPath = Server.MapPath(".") & "\" & sFile
o.save
'saving the files
 if o.Error = "" then
    response.write "Success. File saved to  " & o.FileFullPath & ". Demo Input = " & o.ValueOf("Demo")
 else
    response.write "Failed due to the following error: " & o.Error
 end if

end if
'reading the file
Set fso = Server.CreateObject("Scripting.FileSystemObject") 
set fs = fso.OpenTextFile(Server.MapPath("customer.csv"), 1, true)    
Do Until fs.AtEndOfStream 
    lineData = fs.ReadLine
     ReDim MyArray(0)
     MyArray = Split(lineData , ",")
     code= MyArray(0)
     name=MyArray(1)
     mail=MyArray(2)
     id=MyArray(3)
     price=MyArray(4)
     amount=MyArray(5)
    ' pass this value to some method like.. addtoracleDB(code,name......etc)   
    Response.Write code
    i=i+1
Loop 

fs.close: set fs = nothing 
set o = nothing
%>
</BODY>
</HTML>

谁能帮我解决这个问题?谁能帮我知道我在哪里犯了错误?我在 stackoverflow 上找到的其他解决方案对我不起作用,一些带有第三方组件的在线解决方案也对我不起作用。作为传统技术,这是一种挑战

1 个答案:

答案 0 :(得分:1)

看起来您正在将行的内容读入 lineData

lineData = fs.ReadLine

但是您使用的是 strLine 而不是 lineData

MyArray = Split(strLine, ",")

我认为以下应该有效:

MyArray = Split(lineData, ",")

MyArray 似乎没有在任何地方声明,您应该将它添加到代码块顶部的 Dim 语句中:

Dim MyArray

然后,删除 ReDim 语句。

相关问题