VB中如何提取一TXT文档中的数据,并将数据放在数组中。
具体的说是txt文件里有11列数,行数很多,几万几十万,数与数之间用tab键隔开。如何用VB提取数据,并且保存为数组,最后的数组还是11列,很多行,数据如下:有劳各位给指...
具体的说是txt文件里有11列数,行数很多,几万几十万,数与数之间用tab键隔开 。如何用VB提取数据,并且保存为数组,最后的数组还是11列,很多行,数据如下:有劳各位给指点指点
展开
1个回答
推荐于2016-04-12
展开全部
'用ADO提取文本 数据的方法:
'可以在提取时,在sql语句中 设置条件,返回符合条件的数据
'程序中引用Microsoft ActiveX Data Objects 2.8 Library
'本例中d:\为存放数据文本文件路径,ddd.txt为数据文件
'在文本文件同路径下新建文本文件,文件名为:Schema.ini,内容为:
[ddd.txt]----数据文件名
ColNameHeader=False----无字段名
Format=TabDelimited-----使用tab为分隔符
'以下为vb代码:
Dim Cnn As ADODB.Connection
Dim Rst As ADODB.Recordset
Dim SqlStr As String
Dim i As Integer
Set Cnn = New ADODB.Connection
Set Rst = New ADODB.Recordset
‘ado的文本文件连接字符串:
Cnn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\;Extended Properties=""text;HDR=No;FMT=TabDelimited"""
Cnn.Open
'查询SQL语句,其中where not F2 is null and not F3 is null 为剔除你前两行,可以在这里设置其他限定条件(无字段名时,系统默认为F1、F2、F3。。。):
SqlStr = "select * from ddd.txt where not F2 is null and not F3 is null"
Rst.Open SqlStr, Cnn, adOpenStatic, adLockOptimistic, adCmdText
If Rst.RecordCount > 0 Then
For i = 0 To Rst.RecordCount - 1
’这里给你的数组赋值
Debug.Print Rst.Fields(“f1"), Rst.Fields("f2"), Rst.Fields("f3")
Rst.MoveNext
Next
End If
Rst.Close
Cnn.Close
Set Rst = Nothing
Set Cnn = Nothing
'可以在提取时,在sql语句中 设置条件,返回符合条件的数据
'程序中引用Microsoft ActiveX Data Objects 2.8 Library
'本例中d:\为存放数据文本文件路径,ddd.txt为数据文件
'在文本文件同路径下新建文本文件,文件名为:Schema.ini,内容为:
[ddd.txt]----数据文件名
ColNameHeader=False----无字段名
Format=TabDelimited-----使用tab为分隔符
'以下为vb代码:
Dim Cnn As ADODB.Connection
Dim Rst As ADODB.Recordset
Dim SqlStr As String
Dim i As Integer
Set Cnn = New ADODB.Connection
Set Rst = New ADODB.Recordset
‘ado的文本文件连接字符串:
Cnn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\;Extended Properties=""text;HDR=No;FMT=TabDelimited"""
Cnn.Open
'查询SQL语句,其中where not F2 is null and not F3 is null 为剔除你前两行,可以在这里设置其他限定条件(无字段名时,系统默认为F1、F2、F3。。。):
SqlStr = "select * from ddd.txt where not F2 is null and not F3 is null"
Rst.Open SqlStr, Cnn, adOpenStatic, adLockOptimistic, adCmdText
If Rst.RecordCount > 0 Then
For i = 0 To Rst.RecordCount - 1
’这里给你的数组赋值
Debug.Print Rst.Fields(“f1"), Rst.Fields("f2"), Rst.Fields("f3")
Rst.MoveNext
Next
End If
Rst.Close
Cnn.Close
Set Rst = Nothing
Set Cnn = Nothing
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询