:: Visual Foxpro, Foxpro for DOS
excel в vfp
axeum
Автор

Сообщений: 107
Дата регистрации: 07.07.2020
Добрый день, не так давно начал в программирование и так получилось что fox первый язык,хочу перенсти таблицу excel(3 столбца id,tel, numb) в fox но ни как не получается, help и учебники(vfp9 клепинин и агафонова) мне не помогли, могли бы скинуть код с примером переноса простенькой таблицы или указать на какой нибудь ресурс где можно найти подробную информацию по переносу?
Ratings: 0 negative/0 positive
Re: excel в vfp
of63

Сообщений: 25240
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
Троль из местных?

Для тролей:
Ratings: 0 negative/0 positive
Re: excel в vfp
axeum
Автор

Сообщений: 107
Дата регистрации: 07.07.2020
IMPORT FROM C:\example.xls type xl8

прекращена работа fox, именно поэтому я и задаю этот вопрос
Ratings: 0 negative/0 positive
Re: excel в vfp
Божья_коровка

Сообщений: 25731
Дата регистрации: 23.08.2001
axeum
прекращена работа fox, именно поэтому я и задаю этот вопрос
Тогда программно или если это только 1 раз, то через Акцесс, раньше в старых версиях экселя можно было сохранить как дбф.
Через Акцесс затягиваешь туда файл экселя и выгружаешь как дбф, это пару кликов мышкой.

Вот если решишь программно, то подпили код под себя для импорта, выбрала кусок, думаю идея понятна...
name_xls = GETFILE('XLS', 'Выберите файл для загрузки:')
IF ISNULL (name_xls)
MESSAGEBOX('Файл для загрузки не выбран!')
ELSE
LOCAL loexcel, lcolderror, lcrange, lnsheets, lncounter, lcfilename, lcfntemp
lcolderror = ON("ERROR")
ON ERROR loexcel=.Null.
loexcel = GETOBJECT(, "Excel.Application")
ON ERROR &lcolderror
IF ISNULL(loexcel)
loexcel = CREATEOBJECT("Excel.Application")
ENDIF
loexcel.workbooks.add(name_xls)
loexcel.Visible = .T.
*******************чтение значений с экселя в темповую таблицу
STORE '' TO fio_tmp, iin_tmp
STORE 0 TO k, i2
**************************************
loexcel.cells(1,5).value = "=COUNTA(C[-3])"
i2 = loexcel.cells(1,5).value
WAIT WINDOW NOWAIT 'Ждите, идет загрузка данных...'
FOR k=1 TO i2
fio_tmp = loexcel.cells(k,1).Text
iin_tmp = loexcel.cells(k,2).Text
IF SQLEXEC(hconn, "Insert into kon.iin_tmp (fio,iin) values ('"+ALLTRIM(fio_tmp)+"','"+ALLTRIM(iin_tmp)+"')")<>-1
ELSE
MESSAGEBOX('Не удалось вставить данные '+ALLTRIM(fio_tmp))
endIF
ENDFOR
loexcel = .NULL.
**************************************************************
ENDIF


------------------
Жись, она как зёбра, полоса белая, полоса черная, а мне всегда задница достается...




Исправлено 6 раз(а). Последнее : Божья_коровка, 07.07.20 12:34
Ratings: 0 negative/0 positive
Re: excel в vfp
of63

Сообщений: 25240
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
> прекращена работа fox, именно поэтому я и задаю этот вопрос

Так бы сразу и сказал, а то "не работает, помогите"...
Фокс уверенно импортирует файлы эксель, сохраненные как Эксель-95, более новые версии не может. В этом случае приходится запускать сам Эксель, и читать им (под управлением фокса), либо читать через ОДБС-драйвер
Ratings: 0 negative/0 positive
Re: excel в vfp
Crispy

Сообщений: 18571
Дата регистрации: 16.05.2005
Божья_коровка
axeum
прекращена работа fox, именно поэтому я и задаю этот вопрос
Тогда программно или если это только 1 раз, то через Акцесс, раньше в старых версиях экселя можно было сохранить как дбф.
Через Акцесс затягиваешь туда файл экселя и выгружаешь как дбф, это пару кликов мышкой.

Он кстати сегодня не во всех комплектацих офиса может иметься.
Я бы сделал проще.
Сохранить таблицу в текстовый файл из экселя. А потом просто через старую добрую команду APPEND FROM добавить в созданнную с таким же числом столбцов пустую dbf.
Делов на три минуты.


------------------
В действительности все иначе, чем на самом деле.
                                      (Антуан де Сент-Экзюпери)




Исправлено 1 раз(а). Последнее : Crispy, 07.07.20 11:30
Ratings: 0 negative/0 positive
Re: excel в vfp
Rifat

Сообщений: 32
Дата регистрации: 06.02.2012
Божья_коровка
С типами данных могут быть ньюансы, а так да, деляю также.
Ratings: 0 negative/0 positive
Re: excel в vfp
Божья_коровка

Сообщений: 25731
Дата регистрации: 23.08.2001
Crispy
Сохранить таблицу в текстовый файл из экселя. А потом просто через старую добрую команду APPEND FROM добавить в созданнную с таким же числом столбцов пустую dbf.
Делов на три минуты.
Да, тоже можно У ТС куча вариантов


------------------
Жись, она как зёбра, полоса белая, полоса черная, а мне всегда задница достается...
Ratings: 0 negative/0 positive
Re: excel в vfp
Божья_коровка

Сообщений: 25731
Дата регистрации: 23.08.2001
Rifat
Божья_коровка
С типами данных могут быть ньюансы, а так да, деляю также.
Да пусть ТС допиливает, что там у него за типы данных и вообще что за табличка, по моему небольшая в 3 столбца. Я импортила табличку в 2 столбца оба текстовые. В общем пусть сам решает каким путем пойти. Решений ему накидали много.


------------------
Жись, она как зёбра, полоса белая, полоса черная, а мне всегда задница достается...




Исправлено 1 раз(а). Последнее : Божья_коровка, 07.07.20 11:37
Ratings: 0 negative/0 positive
Re: excel в vfp
ABB

Сообщений: 149
Откуда: Санкт-Петербург
Дата регистрации: 21.10.2006
Самый простой и надежный метод, по моему опыту, LibreOffice. Сохранить xls как dbf.
Работает хорошо на сотнях тысяч записей.
Ratings: 0 negative/0 positive
Re: excel в vfp
of63

Сообщений: 25240
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
Реалии таковы, что юзеры ждут от ПО, чтобы она "жрала" любой формат файла, вплоть до фотографии таблицы. Приходится удовлетворять, разными "автоматами" определения формата, инструкциями. Всеядный пожиральщик еще не создан, как и ИИ, как и беспилотное такси...
Ratings: 0 negative/0 positive
Re: excel в vfp
Божья_коровка

Сообщений: 25731
Дата регистрации: 23.08.2001
of63
Реалии таковы, что юзеры ждут от ПО, чтобы она "жрала" любой формат файла, вплоть до фотографии таблицы. Приходится удовлетворять, разными "автоматами" определения формата, инструкциями. Всеядный пожиральщик еще не создан, как и ИИ, как и беспилотное такси...
Оффа, ты же не знаешь, зачем ТС потребовался импорт данных из экселя в дбф. Может это чисто разовая задача для него и всё. И никакой всеядный "пожиральщик" для юзеров и не нужен ;) У меня такое бывало, пришлют раз в пятилетку какой нибудь справочник в экселе, его один раз загнать и забыть


------------------
Жись, она как зёбра, полоса белая, полоса черная, а мне всегда задница достается...




Исправлено 1 раз(а). Последнее : Божья_коровка, 07.07.20 13:43
Ratings: 0 negative/0 positive
Re: excel в vfp
of63

Сообщений: 25240
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
У нас ежемесячная инфа приходит, в экселе. За щастье, когда все время одинаково, хотя бы примерно, тогда можно создать приемник для этого файла. Но бывает и поменяют колонки, содержимое. А оператору это до лампочки, он хочет (и может только) нажать кнопку "Файл принять", если он не принимается, то несут это програмеру.
Ratings: 0 negative/0 positive
Re: excel в vfp
Wilis

Сообщений: 726
Откуда: Прохладный
Дата регистрации: 17.10.2005
Божья_коровка
... или если это только 1 раз, то через Акцесс, раньше в старых версиях экселя можно было сохранить как дбф.
Сейчас с этой работой замечательно справляется Calc из LibreOffice.



Исправлено 1 раз(а). Последнее : Wilis, 07.07.20 16:28
Ratings: 0 negative/0 positive
Re: excel в vfp
Божья_коровка

Сообщений: 25731
Дата регистрации: 23.08.2001
Wilis
Божья_коровка
... или если это только 1 раз, то через Акцесс, раньше в старых версиях экселя можно было сохранить как дбф.
Сейчас с этой работой замечательно справляется Calc из LibreOffice.
У меня нет LibreOffice Поэтому в последний раз просто прогоняла через акцесс, там дел то на 1 минуту. ;)
Но ТС-у уже накидали кучу вариантов, пусть решает, что ему удобнее исходя из своих предпочтений, не такая эта трудная задачка загнать 3 столбца с данными из экселя в дбф.


------------------
Жись, она как зёбра, полоса белая, полоса черная, а мне всегда задница достается...
Ratings: 0 negative/0 positive
Re: excel в vfp
akvvohinc

Сообщений: 4212
Откуда: Москва
Дата регистрации: 11.11.2008
axeum
fox первый язык, хочу перенести таблицу excel (3 столбца id,tel, numb) в fox но ни как не получается
Перенести таблицу в язык, действительно, нелегко - в любой, не только первый.



Исправлено 1 раз(а). Последнее : akvvohinc, 07.07.20 16:50
Ratings: 0 negative/0 positive
Re: excel в vfp
axeum
Автор

Сообщений: 107
Дата регистрации: 07.07.2020
&&SELECT * from table1 INTO CURSOR t_1
select table1
name_xls = GETFILE('XLS', 'Выбирите фал для загрузки:')
hconn = sqlconnect()
IF ISNULL (name_xls)
MESSAGEBOX('файл для загрузки не выбран!')
ELSE
LOCAL loexcel, lcolderror, lcrange, lnsheets, lncounter, lcfilename, lcfntemp
lcolderror = ON("ERROR")
ON ERROR loexcel=.Null.
loexcel = GETOBJECT(, "Excel.Application")
ON ERROR &lcolderror
IF ISNULL(loexcel)
loexcel = CREATEOBJECT("Excel.Application")
ENDIF
loexcel.workbooks.add(name_xls)
loexcel.Visible = .T.
*******************чтение значений с экселся в темпоую таблицу
STORE '' TO id_tmp, tel_tmp, numbt_tmp
STORE 0 TO k, i2
**************************************
loexcel.cells(1,4).value = "=COUNTA(C[-3])"
i2 = loexcel.cells(1,4).value
WAIT WINDOW NOWAIT 'Ждите идет загрузка данных...'
FOR k=2 TO i2
id_tmp = loexcel.cells(k,1).Text
tel_tmp = loexcel.cells(k,2).Text
nmbt_tmp = loexcel.cells(k,3).Text
IF SQLEXEC(hconn, "Insert into table1 (id,tel,numbt) values ('"+ALLTRIM(id_tmp)+"','"+ALLTRIM(tel_tmp)+"','"+ALLTRIM(nmbt_tmp)+"')")<>-1
ELSE
MESSAGEBOX('не удалось вставить данные '+ALLTRIM(id_tmp))
endIF
ENDFOR
loexcel = .NULL.
**************************************************************
ENDIF
выходит msgbox не удалось вставить данные, но почему? в table все столбцы character в excel все столбцы общие,можно ткнуть меня носом что не так я делаю?



Исправлено 3 раз(а). Последнее : axeum, 09.07.20 10:17
Ratings: 0 negative/0 positive
Re: excel в vfp
ssa

Сообщений: 13007
Откуда: Москва
Дата регистрации: 23.03.2005
axeum
IF SQLEXEC(hconn, "Insert into table1 (id,tel,numbt) values ('"+ALLTRIM(id_tmp)+"','"+ALLTRIM(tel_tmp)+"','"+ALLTRIM(nmbt_tmp)+"')")<>-1
ELSE
MESSAGEBOX('не удалось вставить данные '+ALLTRIM(id_tmp))
выходит msgbox не удалось вставить данные, но почему? в table все столбцы character в excel все столбцы общие,можно ткнуть меня носом что не так я делаю?
В ветке else поставьте Aerror() и изучите результат.

------------------
Лень - это неосознанная мудрость.
Ratings: 0 negative/0 positive
Re: excel в vfp
axeum
Автор

Сообщений: 107
Дата регистрации: 07.07.2020
aerror выдает 1526, но как исправить это? я понять не могу в чем ошибка
Ratings: 0 negative/0 positive
Re: excel в vfp
of63

Сообщений: 25240
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
Может данные не те (содержат кавычку, например)
Замени эти ALLTRIM(id_tmp) на 'abc' для проверки
Ratings: 0 negative/0 positive


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

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

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