我有一个 .csv 文件,它有 100 行和 8 列。每行看起来像下面的东西
0,0,0,0,0,0,0,5
0,1,0,0,1,0,0,6
我需要评估每个领域。如果字段 = 1(在第 1 行和第 7 行之间),我必须将该行的第 8 列值写入文本框,如果字段 = 0 则不为该行写入任何内容。
我对如何评估每个领域感到非常困惑。
我将 ADO 与 Jet-Driver 一起使用。这非常简单,导入的结果是一个 ADO.Recordset,您可以轻松浏览它。
Dim cnCSV As ADODB.Connection
Set cnCSV = New ADODB.Connection
cnCSV.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Chr(34) & lFilePath & Chr(34) & ";Extended Properties=" & Chr(34) & "text;HDR=Yes;FMT=Delimited" & Chr(34) & ";"
cnCSV.Open
Dim p_ImportRst As ADODB.Recordset
Set p_ImportRst = New ADODB.Recordset
lstrSQL = "SELECT * FROM [" & lFileName & "]"
Set p_ImportRst = cnCSV.Execute(lstrSQL)
使用“拆分”
“根据分隔符(例如逗号或空格)将字符串拆分为单独的元素,并将结果元素存储在从零开始的数组中”
http://www.vb6.us/tutorials/vb-string-array-functions-split-join-filter
创建一个可变大小的数组。使用 lbound 和 ubound 来获取它的大小,执行 for 循环并将数字相加。
这是一种应该有效的方法。伪代码...
dim vData() as variant
dim nHandle as integer
dim sTextLine as string
nHandle = FreeFile
open "c:\filename.csv" for input as nHandle
Do While Not EOF(nHandle)
Line Input #nHandle, sTextLine '// Read line into variable.
' break up the line into multiple pieces
vData = split(sTextLine, ",")
' your criteria here
if vData(0) = 0 then ...
if vData(1) = ...
Loop
Close #nHandle