无法读取第一行CSV文件

时间:2015-06-20 15:45:48

标签: csv vbscript imacros

我无法弄清楚为什么我的脚本没有读取和存储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行。

1 个答案:

答案 0 :(得分:3)

Recordset对象读取CSV的第一行作为表头,因此第二行是第一行数据。您可以使用可以指示不执行此操作的驱动程序来避免这种情况:

strConnect = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & sDir & _
             ";Extended Properties=""text;HDR=No;FMT=Delimited"";"

或在CSV旁边放置schema.ini这样的内容:

[test.csv]
Format=CSVDelimited
ColNameHeader=False
MaxScanRows=0
CharacterSet=ANSI

请注意CSVDelimited仅在您的文件实际上以逗号分隔时才有效,您可以在系统的区域设置中将逗号定义为字段分隔符。否则,您需要在该文件中指定分隔符:

[test.csv]
Format=Delimited(<delimiter>)
ColNameHeader=False
MaxScanRows=0
CharacterSet=ANSI