无法读取 CSV 文件的第一行
Can't read first row of CSV file
我不明白为什么我的脚本没有读取和存储 CSV 文件的第一行。由于某种原因,它从第二行开始。
我有以下代码(从 2 列 CSV 文件读取):
Set rs = CreateObject("ADOR.Recordset")
'this just gets the folder where the csv file lives
sDir = GetiMacrosFolder("DataSources")
strConnect = "Driver={Microsoft Text Driver (*.txt; *.csv)};" & _
"DefaultDir=" & sDir & ";"
rs.Open "select * from test.csv", strConnect
count = 0
Do Until rs.EOR
ReDim Preserve var1(count)
var1(count) = rs.fields(0)
ReDim Preserve var2(count)
var2(count) = rs.fields(1)
count = count + 1
rs.MoveNext
Loop
rs.Close
如果我随后执行 MsgBox(var1(1))
,它会显示第 3 行中的值,而不是应有的第 2 行中的值。
Recordset
object将CSV的第一行读取为tableheaders,所以第二行是第一行数据。您可以通过使用可以指示不要这样做的 driver 来避免这种情况:
strConnect = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & sDir & _
";扩展属性=""text;<b>HDR=No</b>;FMT=Delimited"";""
或者在 CSV 旁边放置一个像这样的 schema.ini
:
[test.csv]
Format=CSVDelimited
ColNameHeader=False
MaxScanRows=0
CharacterSet=ANSI
请注意,CSVDelimited
仅在您的文件实际上是 comma-separated 和 您在系统区域设置中将逗号定义为字段分隔符时才有效.否则,您需要在该文件中指定分隔符:
[test.csv]
格式=<b>Delimited(<i><delimiter></i>)</b>
ColNameHeader=假
MaxScanRows=0
字符集=ANSI
我不明白为什么我的脚本没有读取和存储 CSV 文件的第一行。由于某种原因,它从第二行开始。
我有以下代码(从 2 列 CSV 文件读取):
Set rs = CreateObject("ADOR.Recordset")
'this just gets the folder where the csv file lives
sDir = GetiMacrosFolder("DataSources")
strConnect = "Driver={Microsoft Text Driver (*.txt; *.csv)};" & _
"DefaultDir=" & sDir & ";"
rs.Open "select * from test.csv", strConnect
count = 0
Do Until rs.EOR
ReDim Preserve var1(count)
var1(count) = rs.fields(0)
ReDim Preserve var2(count)
var2(count) = rs.fields(1)
count = count + 1
rs.MoveNext
Loop
rs.Close
如果我随后执行 MsgBox(var1(1))
,它会显示第 3 行中的值,而不是应有的第 2 行中的值。
Recordset
object将CSV的第一行读取为tableheaders,所以第二行是第一行数据。您可以通过使用可以指示不要这样做的 driver 来避免这种情况:
strConnect = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & sDir & _
";扩展属性=""text;<b>HDR=No</b>;FMT=Delimited"";""
或者在 CSV 旁边放置一个像这样的 schema.ini
:
[test.csv]
Format=CSVDelimited
ColNameHeader=False
MaxScanRows=0
CharacterSet=ANSI
请注意,CSVDelimited
仅在您的文件实际上是 comma-separated 和 您在系统区域设置中将逗号定义为字段分隔符时才有效.否则,您需要在该文件中指定分隔符:
[test.csv]
格式=<b>Delimited(<i><delimiter></i>)</b>
ColNameHeader=假
MaxScanRows=0
字符集=ANSI