2017-08-07 298 views
0

我在尝试使用VBScript对Z-A文本文件(CSV文件)进行排序。 我的文本文件看起来像:按字母顺序排序

 
ZYUIP, ALGORITHM,TESTING,\ ,TABLE1 

我想订购从Z-A中的CSV文件,但我阻止把CSV文件导入阵列。

这是由Z-A定购阵列的代码:

ArrayOfTerms = Array("B","A","C","D") 

For a = UBound(ArrayOfTerms) - 1 To 0 Step -1 
    For j= 0 To a 
     If ArrayOfTerms(j)<ArrayOfTerms(j+1) Then 
      temp = ArrayOfTerms(j+1) 
      ArrayOfTerms(j+1) = ArrayOfTerms(j) 
      ArrayOfTerms(j) = temp 
     End If 
    Next 
Next 
+0

您的csv文件包含项目符号点吗?是否应该有其中的优点,并且只是格式不正确? – JNevill

+0

我的CSV没有项目符号点。我会纠正我的问题 –

+0

你想按字母顺序排列每一行的字段吗?或者你想按字母顺序排序CSV的行吗?在后者的情况下:通过哪一列? –

回答

0

如果您不能下载.Net框架。这是我的解决方案(不优化)将CSV文件从Z排序到A:

'--------------------------------------- 
' Load a CSV File into a VBScript Array 
'---------------------------------------- 
Function CSVArray(CSVFile) 

    comma = "," 
    quote = Chr(34) 

    colMax = -1 

    rowCount  = -1 
    Set inCsvSys = CreateObject("Scripting.FileSystemObject") 
    Set inCsv = inCsvSys.OpenTextFile(CSVFile,"1",True) 
    Do While Not inCsv.AtEndOfStream 
    rowCount = rowCount + 1 
    Redim Preserve inRow(rowCount) 
    inRow(rowCount) = inCsv.ReadLine 
    Loop 
    inCsv.Close 

    For r = 0 to rowCount 

    csvRecord = inRow(r) 
    colNum = -1 
    charPos = 0 
    cellComplete = True 

    Do While charPos < Len(csvRecord) 

     If (cellComplete = True) Then 
     colNum  = colNum + 1 
     cellPos  = 0 
     cellQuoted = False 
     cellComplete = False 
     If colNum > colMax Then 
      colMax = colNum 
      Redim Preserve cellArray(rowCount,colMax) 
     End If    
     End If 

     charPos = charPos + 1 
     cellPos = cellPos + 1 
     charVal = Mid(csvRecord, charPos, 1) 
     If (charVal = quote) Then 
     If (cellPos = 1) Then 
      cellQuoted = True 
      charVal = "" 
     Else 
      Select Case Mid(csvRecord, charPos+1, 1) 
      Case quote 
      charPos = charPos + 1 
      Case comma 
      charPos = charPos + 1 
      cellComplete = True 
      End Select 
     End If 
     ElseIf (charVal = comma) And (cellQuoted = False) Then 
     cellComplete = True 
     End If 
     If (cellComplete = False) Then 
     cellArray(r,colNum) = cellArray(r,colNum)&charVal 
     End If 

    Loop 

    Next 
    CSVArray = cellArray 
End Function 



csv = CSVArray("\\Ad.ing.net\wps\BE\D\UD\002001\D-JS15GY\Desktop\migrate_RA\externalfiles.csv") 

Set fso = WScript.CreateObject("Scripting.Filesystemobject") 
Set objFSO = CreateObject("Scripting.FileSystemObject") 
Set objFile=objFSO.CreateTextFile("\\Ad.ing.net\wps\BE\D\UD\002001\D-JS15GY\Desktop\migrate_RA\externalfiles2.csv",2,true) 

'------------------------------ 
'Order the CSV File from Z to A 
'------------------------------ 

For a = UBound(csv,1) - 1 To 0 Step -1 
    for j= 0 to a 
    if csv(j,0)<csv(j+1,0) then 
    temp=csv(j+1,0) 
    csv(j+1,0)=csv(j,0) 
     csv(j,0)=temp 

    End If 
Next 

Next 

For j = 0 to Ubound(csv,1) 

    objFile.WriteLine csv(j,0) 

Next 
0

可以使用ArrayList.Sort从.NET框架。项目必须逐个输入。

Dim ArrayList : Set ArrayList = CreateObject("System.Collections.ArrayList") 

'Add your items here: 
ArrayList.Add "B" : ArrayList.Add "A" : ArrayList.Add "C" : ArrayList.Add "D" 

ArrayList.Sort 
ArrayList.Reverse