VB6 запятая, разделяющая файл CSV - PullRequest
2 голосов
/ 13 ноября 2010

Я пытаюсь отделить файл с разделителями-запятыми и по какой-то причине мне кажется, что я не получаю вывод, который ожидал получить.

Вот код:

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.И затем пропускает Crow и Ras перед отображением Wood.

Я также получаю ошибку

 Input past end of file

Ответы [ 3 ]

2 голосов
/ 13 ноября 2010

Короче говоря, Input # не предназначен для чтения CSV.См. http://msdn.microsoft.com/en-us/library/aa243386(v=VS.60).aspx

Возможно, существует внешний анализатор CSV, который вы можете использовать из VB6, но я не знаю ни одного случайного сообщения.Вы можете довольно легко написать синтаксический анализатор CSV, который получает по одному символу за раз и использует конечный автомат.

1 голос
/ 13 ноября 2010

Прошло много времени с тех пор, как я использовал VB6, но я случайно вспомнил, что можно использовать объект ADODB.Recordset для запроса файла CSV как базы данных SQL .

Вот документация Microsoft , включая чтение CSV-файлов без строк заголовка .

0 голосов
/ 01 сентября 2014

Попробуйте использовать другой разделитель, как; или труба. Тогда посмотрите, все ли в порядке. Если ДА, попробуйте заключить в кавычки имя или задать имя в других кавычках, таких как ' Повеселись, John

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...