VB6逗号分隔CSV文件

时间:2010-11-13 19:46:18

标签: vb6 file-io csv

我正在尝试将逗号分隔的文件分开,出于某种原因,我似乎没有得到我期望获得的输出。

以下是代码:

strCSVPath = "E:\cfaApp\tester.csv"
int77 = FreeFile
Open strCSVPath For Input As #int77

Do Until EOF(int77)
    Input #int77, strName, intHours, strMon, strTue, strWed, strThu, strFri, strSat
    Debug.Print strName & vbCr & intHours
    'Debug.Print strName & vbCr & intHours & vbCr & strMon & vbCr & strTue & vbCr & strWed & vbCr & strThu & vbCr & strFri & vbCr & strSat & vbCr
Loop

输出如下:

1.0-Store Manager (1 Employee)

11:00 AM-8:30 PM

10:00 AM-7:30 PM
1.1-Assistant Managers
Wood, Chris

以上输出错误。这是CSV文件(其中一些,不是全部)

1.0-Store Manager (1 Employee),,,,,,,,
"Pro, Bob",1.0-Store Manager,47.5,5:30 AM-3:00 PM,5:30 AM-3:00 PM,11:00 AM-8:30 PM,11:00 AM-8:30 PM,9:00 AM-6:30 PM,OFF
1.1-Assistant Managers (3 Employees),,,,,,,,
"Crow, Billy",1.1-Assistant Managers,47.5,10:00 AM-7:30 PM,5:30 AM-3:00 PM,5:30 AM-3:00 PM,5:30 AM-3:00 PM,OFF,11:00 AM-8:30 PM
"Ras, Pat",1.1-Assistant Managers,47.5,5:30 AM-3:00 PM,9:00 AM-6:30 PM,10:00 AM-7:30 PM,,11:00 AM-8:30 PM,9:00 AM-6:30 PM
"Wood, Chris",1.1-Assistant Managers,47.5,,11:00 AM-8:00 PM,8:30 AM-6:30 PM,10:00 AM-7:30 PM,5:30 AM-3:00 PM,5:30 AM-3:00 PM
1.2- Supervisors (7 Employees),,,,,,,,

正如您所看到的,输出确实会跳过Pro,Bob。然后在展示Wood之前跳过Crow和Ras。

我也遇到错误

 Input past end of file

3 个答案:

答案 0 :(得分:2)

简而言之,Input#不是为读取CSV而设计的。见http://msdn.microsoft.com/en-us/library/aa243386(v=VS.60).aspx

您可以在VB6中使用外部CSV解析器,但我不知道有哪一个随意。您可以非常轻松地编写CSV解析器,一次获取一个字符并使用有限状态机。

答案 1 :(得分:1)

自从我使用VB6以来已经有一段时间了,但我碰巧记得可以将ADODB.Recordset对象用于query the CSV file like a SQL database

以下是Microsoft documentation,包括如何read CSV files without header rows

答案 2 :(得分:0)

尝试使用其他分隔符;或管道。 然后看看输出是否正常。 如果是,请尝试在名称中引用逗号或在其他引号中设置名称,例如' 玩得开心, 约翰

相关问题