我刚才读取的。CSV文件出了点问题,是 这样的:它的原文件中一共有35列
第一列 第二列.........第35列
NO NAME IL
1001 ABC XXXX
1002 VBN XX
strRlt(0)=NO strRlt(34)=IL1001 strRlt(35)=ABC 为什么下一行的NO号会跟上一行的最后一列一起读了出来呢,是文件有问题吗,还是别的原因?
...全文
726打赏收藏
faysky2请进!!
我刚才读取的。CSV文件出了点问题,是 这样的:它的原文件中一共有35列 第一列 第二列.........第35列 NO NAME IL 1001 ABC XXXX 1002 VBN XX strRlt(0)=NO strRlt(34)=IL1001 strRlt(35)=ABC 为什么下一行的NO号会跟上一行的最后一列一起读了出来呢,是文件有问题吗,还是别的原因?
不用到2维数组,使用line input 读出来一条处理一条数据
Private Sub Command1_Click()
Dim str As String
Dim Arrstr() As String
Dim i As Integer
Open "D:\WINAPIxx.csv" For Input As #1
Do While Not EOF(1)
Line Input #1, str
Arrstr() = Split(str, ",")
For i = 0 To UBound(Arrstr)
Debug.Print Arrstr(i) '再这个地方把你需要的数据提出来即可!
Next
str = vbnullstring
Loop
Private Sub Command1_Click()
Dim strTmp As String, fPath As String, rowCounts As Long, strRlt() As String, arrTmp() As String, i As Long, j As Long
fPath = App.Path & "\test.csv"
i = 0
Open fPath For Input As #1
While Not EOF(1)
Line Input #1, strTmp '一行一行地读数据
arrTmp = Split(strTmp, ",")
For j = 0 To UBound(arrTmp)
strRlt(i, j) = arrTmp(j) '给二维数组赋值
Next
i = i + 1
Wend
Close #1
For i = 0 To rowCounts - 1
strTmp = ""
For j = 0 To 34
strTmp = strTmp & "," & strRlt(i, j) '打印结果
Next
Debug.Print Mid(strTmp, 2)
Next
End Sub
'用ado怎样实现
'工程--->引用--->Microsoft ActiveX Data Object 2.x(版本号)
Private Sub Form_Load()
cn.CursorLocation = adUseClient
cn.Open "Driver={Microsoft Text Driver (*.txt; *.csv)};Dbq=" & App.Path & ":\;Extensions=asc,csv,tab,txt;"
rs.Open "select * from Test.csv", cn, adOpenDynamic, adLockOptimistic
While Not rs.EOF
For i = 0 To rs.Fields.Count - 1
Debug.Print rs(i) & ""
Next
Wend
rs.Close
cn.Close
Set rs = Nothing
Set cn = Nothing
End Sub