:: Не фоксом единым
чтение csv файлов
boba

Сообщений: 6269
Откуда: Медвежьи озера-
Дата регистрации: 26.03.2001
Раньше в старом ексел можно было такие файлы читать
При открытии ексел спрашивал разделитель, ставили запятую и все
Сейчас это в пункте меню data-импорт из текстовых файлов.
Ставлю разделитель запятая, все равно в первую колонку
помещается огромный текст с запятыми.
Разбиения на колонки нет по разделителю запятая
Пришлось писать на фоксе программу с getwordcount, getwordnum
потом из курсора переносить уже в ексел.
Все почти решилось, остался пустяк.
Иногда в тексте файла встречается кусок типа
"Вова, Галя", который нужно поместить в одно поле фокса или колонку ексел
Поскольку в функциях указывал разделителем запятую,
все это разъехалось на разные поля и колонки. Сейчас сижу клею это назад.
Ratings: 0 negative/0 positive
Re: чтение csv файлов
of63

Сообщений: 25244
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
Если экселем открывать файл с расширением CSV, то открывает ничего не спрашивая, иногда не понимая разделителя (запятая - точка с запятой, табуляция). Но если "испортить" расширение, например на "CSV_", то эксель начинает задавать вопросы про разделитель, про тип данных в колонках (например, в CSV 20-значный номер счета в банке эксель открывает как целое число, причем теряя точность). Поэтому открываю такие CSV как текстовый файл, с обязательной порчей расширения...
Ratings: 0 negative/0 positive
Re: чтение csv файлов
boba

Сообщений: 6269
Откуда: Медвежьи озера-
Дата регистрации: 26.03.2001
Это тоже пробовал, вопросы аналогичные указанному выше data-import from text пункту меню,
и тоже на запятые не разделил
Ratings: 0 negative/0 positive
Re: чтение csv файлов
of63

Сообщений: 25244
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
Если разделитель - запятая, то надо как-то экранировать запятые в тексте... Но лучше делать разделитель точку с запятой или табуляцию. Эксель, в программном режиме, делает разделитель-запятую. Чтобы была ТСЗ, надо ставить флажок Local

m.oExcel.ActiveWorkBook.SaveAs(имя, 6, , , , , , , , , ,.T.) && Local:=True
* Local:=True - Внимание! БЕЗ ЭТОГО ЗНАЧЕНИЯ ПАРАМЕТРА CSV БУДЕТ ГЕНЕРИРОВАТЬСЯ С РАЗДЕЛИТЕЛЕМ ЗПТ, А НЕ ТСЗ !

Про экранирование:
* О записи ВКПС в файл CSV: habrahabr.ru
* Если значение содержит в себе CRLF, CR, LF (символы-разделители строк), двойную кавычку или запятую (символ-разделитель полей),
* то заключение значения в кавычки обязательно. В противном случае — допустимо.
* т.е. допустимы переводы строк внутри поля. Но такие значения полей должны быть обязательно закавычены,
* Не получается с CSV ТАБ-разделителем (TXT)
* Если внутри закавыченной части встречаются двойные кавычки, то используется специфический квотинг кавычек в CSV — их дублирование. (получается, но вроде и без этого было хорошо...)

Вот так боролся с открыванием CSV в экселе:
Ratings: 0 negative/0 positive
Re: чтение csv файлов
boba

Сообщений: 6269
Откуда: Медвежьи озера-
Дата регистрации: 26.03.2001
В общем все дело было в наличие двойных кавычек
вокруг полей. Причем, в некоторых полях внутри текста с двойными кавычками
иногда могла встречаться запятая.
Если в эксел кроме разделителя запятая
указать двойные кавычки, то разбиение по запятой происходит.
Правда в случает с доп запятой внутри поля часть поля после запятой уходит в другое поле
Еще баг. Некоторые колонки, где лежит число с одной точкой
несмотря на указание текстового типа для колонки
выдает иногда что-то типа
январь 1 или 4 февраль.
Моя программа на фоксе работает раз в 3 медленнее, но делает все верно.
Сами файлы- результат массовых чтений с интернет.
Их довольно много
В фоксе в проге пишу sys(2000,'csv')
и цикл по непустому файлу
В ексел приходится самому подсовывать каждый файл,
везде задавать разделители, тип колонок текст-морока.
Ratings: 0 negative/0 positive
Re: чтение csv файлов
ВладимирС
Автор

Сообщений: 1693
Дата регистрации: 03.11.2005
boba
Раньше в старом ексел можно было такие файлы читать
При открытии ексел спрашивал разделитель, ставили запятую и все
Сейчас это в пункте меню data-импорт из текстовых файлов.
Ставлю разделитель запятая, все равно в первую колонку
помещается огромный текст с запятыми.
Разбиения на колонки нет по разделителю запятая
Пришлось писать на фоксе программу с getwordcount, getwordnum
потом из курсора переносить уже в ексел.
Все почти решилось, остался пустяк.
Иногда в тексте файла встречается кусок типа
"Вова, Галя", который нужно поместить в одно поле фокса или колонку ексел
Поскольку в функциях указывал разделителем запятую,
все это разъехалось на разные поля и колонки. Сейчас сижу клею это назад.
Хм...
Не знаю какой у Вас эксель, но у меня MO 365.
То действительно через "data-импорт" из текстовых файлов. Причем есть кнопка "Преобразовать данные". И там все можно перенастроить и какой разделитель, а так же тип колонки.
Провел эксперимент с разделителем зпт и тсз. Все нормально импортирует. Даже при разделителе зпт и в колонке имеется зпт, но текст обрамлен двойными кавычками.
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 4 (Гостей: 4)

© 2000-2024 Fox Club 
Яндекс.Метрика