如何使用VBScript在循环内读取CSV文件

时间:2019-04-23 10:32:50

标签: csv vbscript

我有2个CSV文件,如下所示。

LogIn

empid,name
54321,xyz
12345,abc

TEAMLIST.csv

heading1,head2,head3,head4
54321-Process : GDPR_WBT,54321,Process : GDPR_WBT,TRUE
12345-Process : GDPR_WBT,12345,Process : GDPR_WBT,TRUE
54321-Fire Safety,54321,Fire Safety,FALSE
12345-Fire Safety,12345,Fire Safety,TRUE

下面是我的整个VBScript代码。问题是内部循环工作正常,但外部循环仅接收第一条记录[54321,xyz],而不是所有记录。无法理解原因。

DATA.csv

1 个答案:

答案 0 :(得分:0)

在外循环的第一次迭代之后,内循环已经读取DATA.csv到末尾。要在外循环的每次迭代中“倒带”该文件,您需要在外循环内部中打开/关闭该文件。

Do Until EMPLOYEE.AtEndOfStream
    '...
    Set DATA = fs.OpenTextFile("DATA.csv")
    Do Until DATA.AtEndOfStream
        '...
    Loop
    DATA.Close
Loop

或者(如果文件足够小)将其读入数组一次,并让内部循环遍历该数组。

DATA = Split(fs.OpenTextFile("DATA.csv").ReadAll, vbNewLine)

Do Until EMPLOYEE.AtEndOfStream
    '...
    For Each line2 In DATA
        '...
    Next
Loop

旁注1:在脚本中创建多个FileSystemObject实例是没有意义的。在脚本的开头创建一个实例,并在其余的代码中使用该实例。

旁注2:Do While Not很尴尬。请改用Do Until