我正在尝试将逗号分隔的文件分开,出于某种原因,我似乎没有得到我期望获得的输出。
以下是代码:
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
答案 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)
尝试使用其他分隔符;或管道。 然后看看输出是否正常。 如果是,请尝试在名称中引用逗号或在其他引号中设置名称,例如' 玩得开心, 约翰