:: Visual Foxpro, Foxpro for DOS
считывание csv-файла
Livada_vv

Сообщений: 46
Дата регистрации: 22.02.2014
Здравствуйте !

Столкнулся в такой проблемой. CSV-Файл (в прикреплении) был выгружен из Информационной системы (не Vfp). Мне нужно в VFP9 конвертировать его в dbf-файл. Пробовал команды и функции Appe from, strconv() , fopen() - не проходит, вместо русских букв - иероглифы. Никто не сталкивался с такой проблемой. Есть пути решения данной проблемы ?

С уважением,
Виктор
Ratings: 0 negative/0 positive
Re: считывание csv-файла
ssa

Сообщений: 12999
Откуда: Москва
Дата регистрации: 23.03.2005
Livada_vv
Здравствуйте !
Здоров.
Цитата:
нужно в VFP9 конвертировать его в dbf-файл. Пробовал команды и функции Appe from, strconv() , fopen() - не проходит, вместо русских букв - иероглифы.
Показывай как делал.
Цитата:
Никто не сталкивался с такой проблемой.
И на чем основано сие утверждение?
Цитата:
Есть пути решения данной проблемы ?
Разумеется. Тем более, что проблема-то не и не видится. По крайней мере на первый взгляд.

------------------
Лень - это неосознанная мудрость.
Ratings: 0 negative/0 positive
Re: считывание csv-файла
VeterVFP

Сообщений: 413
Откуда: Москва
Дата регистрации: 26.12.2006
Подходит?
CLEAR
cFile= GETFILE('TXT', 'Файл', 'Выбрать',0)
IF EMPTY(cFile)
RETURN
ENDIF
cFlSt= FILETOSTR(cFile)
cFlSt= STRCONV(cFlSt,6)
cFileNew= cFile+ '_NEW.txt'
? STRTOFILE(cFlSt, cFileNew, 0)
CREATE CURSOR qqq (c1 C(250))
APPEND FROM (cFileNew) SDF
LOCATE
BROWSE LAST NOWAIT
Ratings: 0 negative/0 positive
Re: считывание csv-файла
ssa

Сообщений: 12999
Откуда: Москва
Дата регистрации: 23.03.2005
Основную часть можно сделать так:
Create Cursor qqq (c1 V(250), c2 t, c3 V(20), c4 V(250), c5 V(250), c6 V(250), c7 t, c8 t, c9 V(250), c10 V(250))
Append From (cFileNew) Csv
Browse


------------------
Лень - это неосознанная мудрость.




Исправлено 2 раз(а). Последнее : ssa, 01.03.18 10:32
Ratings: 0 negative/0 positive
Re: считывание csv-файла
Livada_vv

Сообщений: 46
Дата регистрации: 22.02.2014
Я с этого и начал. В выходном dbf-файле при просмотре - иероглифы.
Ratings: 0 negative/0 positive
Re: считывание csv-файла
Livada_vv

Сообщений: 46
Дата регистрации: 22.02.2014
Спасибо!
Я делал так:
nHand=FOPEN('nschs.csv')
IF nHand>1
DO WHILE ! FEOF(nHand)
cStroka=FGETS(nHand)
? STRCONV(cStroka,6) &&Чтобы посмотреть содержимое конвертированной строки
ENDDO
=FCLOSE(nHand)
ENDIF
Также пробовал команду добавления в dbf:
Append From nschs.csv сsv
Но - это было не то.
Ratings: 0 negative/0 positive
Re: считывание csv-файла
ssa

Сообщений: 12999
Откуда: Москва
Дата регистрации: 23.03.2005
Livada_vv
Я с этого и начал. В выходном dbf-файле при просмотре - иероглифы.
Каком просмотре? Как смотрел? Почему решил, что дело в команде, а не в чем-то другом?

------------------
Лень - это неосознанная мудрость.
Ratings: 0 negative/0 positive
Re: считывание csv-файла
ssa

Сообщений: 12999
Откуда: Москва
Дата регистрации: 23.03.2005
Livada_vv
Спасибо!
Я делал так:
? STRCONV(cStroka,6) &&Чтобы посмотреть содержимое конвертированной строки
Какой конвертированной? Какая еще конвертация?
Цитата:
Также пробовал команду добавления в dbf:
Append From nschs.csv сsv
Но - это было не то.
А почему у нас ТО? Может что-то не так делал?

------------------
Лень - это неосознанная мудрость.
Ratings: 0 negative/0 positive
Re: считывание csv-файла
VeterVFP

Сообщений: 413
Откуда: Москва
Дата регистрации: 26.12.2006
Livada_vv
Я с этого и начал. В выходном dbf-файле при просмотре - иероглифы.
Я же дал рабочий код выше - у меня все показывает корректно. А вот твой код да - одни кракозябры.
Плюс Сергей выше дал готовую структуру курсора
ssa
Create Cursor qqq (c1 V(250), c2 t, c3 V(20), c4 V(250), c5 V(250), c6 V(250), c7 t, c8 t, c9 V(250), c10 V(250))
Append From (cFileNew) Csv
Browse
Ты пробовал именно это код?

UPD
Просуммирую:
CLEAR
cFile= GETFILE('TXT', 'Файл', 'Выбрать',0)
IF EMPTY(cFile)
RETURN
ENDIF
cFlSt= FILETOSTR(cFile)
cFlSt= STRCONV(cFlSt,6)
cFileNew= cFile+ '_NEW.txt'
? STRTOFILE(cFlSt, cFileNew, 0)
CREATE CURSOR qqq (c1 V(250), c2 t, c3 V(20), c4 V(250), c5 V(250), c6 V(250), c7 t, c8 t, c9 V(250), c10 V(250))
APPEND FROM (cFileNew) CSV
LOCATE
BROWSE LAST NOWAIT



Исправлено 2 раз(а). Последнее : VeterVFP, 02.03.18 13:32
Ratings: 0 negative/0 positive
Re: считывание csv-файла
AndyNigmatec

Сообщений: 1552
Откуда: Волгоград
Дата регистрации: 28.06.2015
Позволю себе вставить пять копеек ...
Как-то столкнулся с аналогичной "проблемкой" - нужно было из csv-ки с разделителем ";" забирать данные ... ну собсно как тока стало ясно что в csv-ке данные в UTF-8 то была тупо поставлена заплатка ... на сем и оставил коль работает

ну вот выдрал кусочек:
...
IF lcOk=1
IF FILE(lcFilePrice)
echo('1. Импорт из: '+lcFilePrice+' ... ')
SELECT 0
CREATE CURSOR cPrice (plcode i, siacode i, price1 n(8,2), koef n(6,4), price2 n(8,2),;
plk_name c(180), pdate t, distr c(80))
SET POINT TO ','
SELECT cPrice
APPEND FROM (lcFilePrice) FOR siacode>0 DELIMITED WITH CHARACTER ";"
SET POINT TO
UPDATE cPrice SET plk_name=STRCONV(plk_name, 11), distr=STRCONV(distr, 11)
IF USED('cPrice') AND RECCOUNT('cPrice')>0
echo1('Ok. - '+ALLTRIM(STR(DATETIME()-dt1))+' sec')
ELSE
lcOk=0
echo1('ошибка импорта.')
ENDIF
ELSE
lcOk=0
echo('Не выбран файл.')
ENDIF
ENDIF
...



Исправлено 1 раз(а). Последнее : AndyNigmatec, 02.03.18 19:21
Ratings: 0 negative/0 positive
Re: считывание csv-файла
Igor Korolyov
Автор

Сообщений: 34580
Дата регистрации: 28.05.2002
Так можно если размеры строковых полей в курсоре подогнать (увеличить в 2 раза, и при этом не выпасть за 254 символа), и если в файле нет BOM (3 байта в самом начале).


------------------
WBR, Igor
Ratings: 0 negative/0 positive


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

On-line: 43 dafni_2004 OlegA Guest (Гостей: 40)

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