Первоначально у меня была следующая идея. Учитывая эти данные
Dog Names,Dog Ages,Collar Size
Woof,3,4
Bowser,2,5
Ruffy,4.5,6
Angel,1,7
Demon,7,8
Dog,9,2
создайте три глобальных массива с именами Dog_Names
, Dog_Ages
и Collar_Size
и заполните их данными в файле CSV.
Этот бит VBScript выполняет эту работу и отображает результаты. Удалите отметку комментария из wscript.echo
в подпрограмме x
, чтобы увидеть, как все это происходит.
Option Explicit
Dim FSO
Set FSO = CreateObject( "Scripting.FileSystemObject" )
Dim oStream
Dim sData
Dim aData
Set oStream = fso.OpenTextFile("data.csv")
sData = oStream.ReadAll
aData = Split( sData, vbNewLine )
Dim sLine
sLine = aData(0)
Dim aContent
aContent = Split( sLine, "," )
Dim aNames()
Dim nArrayCount
nArrayCount = UBound( aContent )
ReDim aNames( nArrayCount )
Dim i
For i = 0 To nArrayCount
aNames(i) = Replace( aContent( i ), " ", "_" )
x "dim " & aNames(i) & "()"
Next
For j = 0 To nArrayCount
x "redim " & aNames(j) & "( " & UBound( aData ) - 1 & " )"
Next
Dim j
Dim actual
actual = 0
For i = 1 To UBound( aData )
sLine = aData( i )
If sLine <> vbnullstring Then
actual = actual + 1
aContent = Split( sLine, "," )
For j = 0 To nArrayCount
x aNames(j) & "(" & i - 1 & ")=" & Chr(34) & aContent(j) & Chr(34)
Next
End If
Next
For j = 0 To nArrayCount
x "redim preserve " & aNames(j) & "(" & actual - 1 & ")"
Next
For i = 0 To actual - 1
For j = 0 To nArrayCount
x "wscript.echo aNames(" & j & ")," & aNames(j) & "(" & i & ")"
Next
Next
Sub x( s )
'wscript.echo s
executeglobal s
End Sub
Результат выглядит так
>cscript "C:\Documents and Settings\Bruce\Desktop\datathing.vbs"
Dog_Names Woof
Dog_Ages 3
Collar_Size 4
Dog_Names Bowser
Dog_Ages 2
Collar_Size 5
Dog_Names Ruffy
Dog_Ages 4.5
Collar_Size 6
Dog_Names Angel
Dog_Ages 1
Collar_Size 7
Dog_Names Demon
Dog_Ages 7
Collar_Size 8
Dog_Names Dog
Dog_Ages 9
Collar_Size 2
>Exit code: 0 Time: 0.338