我有一个看起来像这样的CSV文件
1,HELLO,英国
2,HELLO1,英国
3,HELLO2,英国
4,HELLO3,英国
5,HELLO4,英国
6,HELLO5,英国
7,HELLO6,英国
8,“HELLO7,HELLO7 ......”,英文
9,HELLO7,英国
10,HELLO7,英国
我想循环遍历这些行并使用逗号分割经典asp函数写入表。当存在语音标记时忽略这些语音标记中的逗号并取出字符串。
<%
dim csv_to_import,counter,line,fso,objFile
csv_to_import="uploads/testLang.csv"
set fso = createobject("scripting.filesystemobject")
set objFile = fso.opentextfile(server.mappath(csv_to_import))
str_imported_data="<table cellpadding='3' cellspacing='1' border='1'>"
Do Until objFile.AtEndOfStream
line = split(objFile.ReadLine,",")
str_imported_data=str_imported_data&"<tr>"
total_records=ubound(line)
for i=0 to total_records
if i>0 then
str_imported_data=str_imported_data&"<td>"&line(i)&"</td>"
else
str_imported_data=str_imported_data&"<th>"&line(i)&"</th>"
end if
next
str_imported_data=str_imported_data&"</tr>" & chr(13)
Loop
str_imported_data=str_imported_data&"<caption>Total Number of Records: "&total_records&"</caption></table>"
objFile.Close
response.Write str_imported_data
%>
答案 0 :(得分:2)
Don't write your own CSV parser.
你开始“将它拆分为,
是要走的路,现在我已经完成了”。然后有人在您的数据中使用逗号,带逗号的字符串被双引号括起来。你是一个聪明的人,所以你计算双引号的数量,如果它们是奇数,你知道你必须逃避逗号,如果它们是偶数,你不必。然后你得到一个包含转义双引号字符的CSV文件...
但是等等!有一个解决方案。对文件使用Database Connection!
这将是这样的,但你必须根据自己的情况进行调整:
On Error Resume Next
Const adOpenStatic = 3
Const adLockOptimistic = 3
Const adCmdText = &H0001
Set objConnection = CreateObject("ADODB.Connection")
Set objRecordSet = CreateObject("ADODB.Recordset")
strPathtoTextFile = server.mappath("uploads/")
strFileName = "testLang.csv"
objConnection.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & strPathtoTextFile & ";" & _
"Extended Properties=""text;HDR=NO;FMT=CSVDelimited"""
objRecordset.Open "SELECT * FROM " & strFileName, _
objConnection, adOpenStatic, adLockOptimistic, adCmdText
Do Until objRecordset.EOF
Wscript.Echo "Number: " & objRecordset.Fields.Item(1)
Wscript.Echo "Greeting: " & objRecordset.Fields.Item(2)
Wscript.Echo "Language: " & objRecordset.Fields.Item(3)
objRecordset.MoveNext
Loop