0


1,HELLO,ENGLISH
2,HELLO1,ENGLISH
3,HELLO2,ENGLISH 4
,HELLO3,ENGLISH
5,HELLO4,ENGLISH
6,HELLO5,ENGLISH
7,HELLO6,ENGLISH
8,"HELLO7, HELLO7 ...",ENGLISH
9,HELLO7,ENGLISH
10,HELLO7,ENGLISH

行をステップループし、コンマで分割されたクラシック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
%>
4

1 に答える 1

2

独自の CSV パーサーを作成しないでください。

あなたは「それを分割するの,が道です。今、私は終わりました」から始めます。次に、誰かがデータにコンマを使用し、コンマを含む文字列が二重引用符で囲まれています。あなたは頭が良いので、二重引用符の数を数え、それらが奇数の場合はコンマをエスケープする必要があり、偶数の場合はエスケープする必要がないことを知っています。そして、エスケープされた二重引用符を含む CSV ファイルを取得します...

ちょっと待って!解決策があります。ファイルへのデータベース接続を使用してください!

これは次のようになりますが、自分の状況に合わせて調整する必要があります。

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
于 2013-11-08T10:21:01.360 に答える