2013-11-08 1 views
0

У меня есть CSV-файл, который выглядит как этот
1, здравствуйте, АНГЛИЙСКИЙ
2, hello1, АНГЛИЙСКИЙ
3, hello2, АНГЛИЙСКИЙ
4, HELLO3, АНГЛИЙСКИЙ
5, HELLO4, английский
6, HELLO5, английский
7, HELLO6, английский
8, "HELLO7, HELLO7 ...", английский
9, HELLO7, английский
10, HELLO7, английскийклассических осин игнорирований запятой в гаджи помечает CSV


Я хочу перейти по строкам и записать в таблицу с помощью функции split 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 
%> 

ответ

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 
Смежные вопросы