使用经典 ASP/VB 脚本读取 CSV 文件
Read CSV file using classic ASP/VB script
我想在经典 ASP 中读取以下 CSV 文件中的值。
首先我要上传文件并将其存储在服务器中。然后我正在读取该文件并尝试使用循环将每一列的值存储在变量中,然后将此变量传递给某种方法。我已经编写了代码,但似乎在循环值方面存在问题。该代码似乎可以存储文件并正确打开它,但无法将其中的值循环到变量。
这是我的代码:
<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>
谁能帮我解决这个问题?谁能帮我知道我在哪里犯了错误?我在 Whosebug 上找到的其他解决方案不适合我,一些带有第三方组件的在线解决方案也不适合我。作为一项遗留技术,这是一种挑战
看起来您正在将行的内容读入 lineData
:
lineData = fs.ReadLine
但是你使用的是 strLine
而不是 lineData
:
MyArray = Split(strLine, ",")
我认为以下应该可行:
MyArray = Split(lineData, ",")
MyArray
似乎没有在任何地方声明,您应该将它添加到代码块顶部的 Dim
语句中:
Dim MyArray
然后,删除 ReDim
语句。
我想在经典 ASP 中读取以下 CSV 文件中的值。
首先我要上传文件并将其存储在服务器中。然后我正在读取该文件并尝试使用循环将每一列的值存储在变量中,然后将此变量传递给某种方法。我已经编写了代码,但似乎在循环值方面存在问题。该代码似乎可以存储文件并正确打开它,但无法将其中的值循环到变量。
这是我的代码:
<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>
谁能帮我解决这个问题?谁能帮我知道我在哪里犯了错误?我在 Whosebug 上找到的其他解决方案不适合我,一些带有第三方组件的在线解决方案也不适合我。作为一项遗留技术,这是一种挑战
看起来您正在将行的内容读入 lineData
:
lineData = fs.ReadLine
但是你使用的是 strLine
而不是 lineData
:
MyArray = Split(strLine, ",")
我认为以下应该可行:
MyArray = Split(lineData, ",")
MyArray
似乎没有在任何地方声明,您应该将它添加到代码块顶部的 Dim
语句中:
Dim MyArray
然后,删除 ReDim
语句。