Как токенизировать данные диаграммы для CSV-файла в классическом ASP - PullRequest
0 голосов
/ 23 декабря 2011

Привет, ниже приведен пример данных для диаграммы, которые я прочитал с URL

ARRAY ' ' 3 8
Y
25 75 100 125 150 175 200 225
'A' 3 8 6 7 5 3 2 7
'B' 1 9 7 8 4 7 2 5
'C' 8 7 3 6 56 9 111 8

Теперь я хочу сохранить эти данные в CSV-файле, как показано ниже

Time    A   B   c
25      3   1   8
75      8   9   7
100     6   7   3
125     7   8   9
150     5   4   56
175     3   7   9
200     2   2   111
225     7   5   8

На самом деле я должен сначала прочитать данные в массив, в котором каждый элемент будет содержать одну строку файла данных. Теперь мне придется разделить каждый элемент на пробел и сохранить его в двухмерном массиве, теперь для каждого i-го индексаВ каждом массиве мне нужно создать строку, разделенную запятой, затем поставить «\ n» в конце строки и, наконец, сохранить ее в файле CSV.

Я не очень разбираюсь в синтаксисе vb-Сценарий и классический Asp, поэтому я сталкиваюсь с этой проблемой.Пожалуйста, помогите мне

1 Ответ

1 голос
/ 23 декабря 2011

Для начала:

Sub doReOrder(sFSpecI, sFSpecO, sCol1)
  Dim oTS    : Set oTS = goFS.OpenTextFile(sFSpecI)
  Dim sData  : sData   = oTS.ReadLine() ' ARRAY ' ' 3 8
  Dim aParts : aParts  = Split(sData, " ")
  Dim nCols  : nCols   = CByte(aParts(3)) ' Count vs UBound vs Data!
  Dim nRows  : nRows   = CByte(aParts(4))
  Dim nRows2 : nRows2  = nRows + 1
  oTS.SkipLine ' Y
  ' get table in one string, prepend col1 name, clean '
  sData  = "'" & sCol1 & "' " & Replace(oTS.ReadAll(), vbCrLf, " ")
  sData  = Trim(Replace(sData, "'", """"))
  ' get table in flat array
  aParts = Split(sData, " ")
  oTS.Close
  Set oTS = goFS.CreateTextFile(sFSpecO, True)
' WScript.Echo Join(aParts, "|")
  ReDim aData(nCols) ' hold one (new) row to prep for Join
  Dim nRow
  For nRow = 0 To nRows
      Dim nCol
      For nCol = 0 To nCols
          ' magic column hopping
          aData(nCol) = aParts(nRow + nCol * nRows2)
      Next
      oTS.WriteLine Join(aData, ",")
  Next
  oTS.Close
End Sub

Тест:

  Dim sFSpecI : sFSpecI = "..\Data\f1.txt"
  Dim sFSpecO : sFSpecO = "..\Data\f1.csv"
  Dim sCol1   : sCol1   = "Time" ' dangerous - possibly reserved in SQL
  WScript.Echo goFS.OpenTextFile(sFSpecI).ReadAll()
  doReOrder sFSpecI, sFSpecO, sCol1
  WScript.Echo goFS.OpenTextFile(sFSpecO).ReadAll()

Выход:

ARRAY ' ' 3 8
Y
25 75 100 125 150 175 200 225
'A' 3 8 6 7 5 3 2 7
'B' 1 9 7 8 4 7 2 5
'C' 8 7 3 6 56 9 111 8

"Time","A","B","C"
25,3,1,8
75,8,9,7
100,6,7,3
125,7,8,6
150,5,4,56
175,3,7,9
200,2,2,111
225,7,5,8
...