例如:csv檔案內容為:Date,$Time,PV1,PV2,PV3,PV11,PV12,PV13,PV4,SP,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,YOUYA,VZ1,V2,V3,V4,V5
03/23/12,17:40:26,102,102,102,102,103,102,97,105,16.8,17.5,22.1,26.3,21.1,21.4,22.3,19,22.3,23,25.4,22.8,49668,0,0,0,10.091,843
03/23/12,17:45:26,110,110,110,110,109,110,105,112,17.1,17.8,23,28.2,22.1,22.5,23,19,22.3,23.2,25.8,22.8,47544,0,0,0,10.091,790
03/23/12,17:50:26,118,118,118,118,117,118,113,120,16.8,18,24,30.5,23.2,23.7,24,19.5,22.5,23.5,26.8,23,45141,0,0,0,10.091,807
03/23/12,17:55:26,125,126,126,126,126,125,121,128,16.8,18,24.9,32.9,24.4,24.7,25.1,19.7,22.5,23.7,27.5,23,45407,0,0,0,10.091,813
03/23/12,18:00:26,133,133,133,133,134,133,128,135,17.1,18.3,26.1,35.2,26.1,26.1,26.1,20,22.3,24,28,23.2,46939,0,0,0,10.091,820
希望再文本框中輸出同樣無逗號的相同行、列的內容
$Date $Time PV1 PV2 PV3 PV11 PV12 PV13 PV4 SP T1 T2 T3 T4 T5 T6 T7 T8 T9 T10 T11 T12 YOUYA VZ1 V2 V3 V4 V5
03/23/12 17:40:26 102 102 102 102 103 102 97 105 16.8 17.5 22.1 26.3 21.1 21.4 22.3 19 22.3 23 25.4 22.8 49668 0 0 0 10.091 843
03/23/12 17:45:26 110 110 110 110 109 110 105 112 17.1 17.8 23 28.2 22.1 22.5 23 19 22.3 23.2 25.8 22.8 47544 0 0 0 10.091 790
03/23/12 17:50:26 118 118 118 118 117 118 113 120 16.8 18 24 30.5 23.2 23.7 24 19.5 22.5 23.5 26.8 23 45141 0 0 0 10.091 807
03/23/12 17:55:26 125 126 126 126 126 125 121 128 16.8 18 24.9 32.9 24.4 24.7 25.1 19.7 22.5 23.7 27.5 23 45407 0 0 0 10.091 813
03/23/12 18:00:26 133 133 133 133 134 133 128 135 17.1 18.3 26.1 35.2 26.1 26.1 26.1 20 22.3 24 28 23.2 46939 0 0 0 10.091 820
我變得程式
Private Sub Command6_Click()
Dim TextLine
Dim TextString
Dim SplitStr As Variant
Dim SplitStr2 As Variant
Dim i As Long, j As Long
Dim s As String
Dim m, n As Integer
Dim a() As String
Open "DATAFILE.CSV" For Input As #1 ' 打開檔案。
Do While Not EOF(1) ' 回圈至檔案尾。
Line Input #1, TextLine ' 讀入一行資料并將其賦予某變數。
Debug.Print TextLine ' 在除錯視窗中顯示資料。
If TextString = "" Then
TextString = TextLine
Else
TextString = TextString & ";" & TextLine
End If
Loop
Close #1 ' 關閉檔案。
SplitStr = Split(TextString, ";")
m = UBound(SplitStr)
For i = 0 To m
SplitStr2 = Split(SplitStr(i), ",")
n = UBound(SplitStr2)
ReDim a(0 To m, 0 To n)
For j = 0 To n
a(i, j) = SplitStr2(j)
Text1.Text = Text1.Text + a(i, j) & " "
Next j
Text1.Text = Text1.Text & vbCrLf
Next i
End Sub
如果csv檔案內容過多,運行特別慢甚至會死機
uj5u.com熱心網友回復:
Open "DATAFILE.CSV" For Input As #1Text1 = Replace(Input(LOF(1), 1), ",", " ")
Close #1
uj5u.com熱心網友回復:
這位版主你太厲害了,如果這樣:csv檔案為下面這個(一個小的為例,實際會有28列,很多行),Date,$Time,PV1,PV2,PV3
03/23/12,17:40:26,102,102,102
03/23/12,17:45:26,110,110,110
03/23/12,17:50:26,118,118,118
03/23/12,17:55:26,125,126,126
03/23/12,18:00:26,133,133,133
我做了五個復選框:分別為 Date $Time PV1 PV2 PV3,選中哪個,就只從csv中提取那一列,并從文本框中顯示輸出?
所以我編的哪個吧csv檔案內容給了一個二維陣列?應該怎樣呢?
十分感謝
uj5u.com熱心網友回復:
同時還想把這個文本框中內容存到EXCEL中去?給定指導吧,我剛接觸VB不久uj5u.com熱心網友回復:
用Split函式切割
比如:
Dim arr() As String
s = "03/23/12,17:40:26,102,102,102"
arr = Split(s, ",")
那么arr(0)就是"03/23/12"
arr(1)就是"17:40:26"
...
結合你的CheckBox判斷就可以了。
uj5u.com熱心網友回復:
我的程式好像是這么做的,可是如果csv檔案資料太多,賦值給陣列然后文本框輸出,特別慢Private Sub Command6_Click()
Dim TextLine
Dim TextString
Dim SplitStr As Variant
Dim SplitStr2 As Variant
Dim i As Long, j As Long
Dim s As String
Dim m, n As Integer
Dim a() As String
Open "DATAFILE.CSV" For Input As #1 ' 打開檔案。
Do While Not EOF(1) ' 回圈至檔案尾。
Line Input #1, TextLine ' 讀入一行資料并將其賦予某變數。
If TextString = "" Then
TextString = TextLine
Else
TextString = TextString & ";" & TextLine
End If
Loop
Close #1 ' 關閉檔案。
SplitStr = Split(TextString, ";")
m = UBound(SplitStr)
For i = 0 To m
SplitStr2 = Split(SplitStr(i), ",")
n = UBound(SplitStr2)
ReDim a(0 To m, 0 To n)
For j = 0 To n
a(i, j) = SplitStr2(j)
Text1.Text = Text1.Text + a(i, j) & " "
Next j
Text1.Text = Text1.Text & vbCrLf
Next i
End Sub
是不是不用陣列形式也可以呢
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/133251.html
標籤:資源
上一篇:Visual Studio Tools for Office 2013 向下兼容2010不
下一篇:vb撰寫中國象棋程式的簡單教程
