2011-12-23 17 views
0

下面喜是圖表數據進行數據採樣這是我從URL 在這個如何來標記圖表數據的csv文件在傳統的ASP

 
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

爲了讓你開始:

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