for flooders
:: Главная :: Решения :: Статьи :: Сайт М. Дроздова :: Файловый архив :: Книга по VFP 9 :: Русский Help Online :: OFF-LINE Форум
   Лисоводы   всех   стран,  объединяйтесь !!!  

Список Форумов  :: Visual Foxpro, Foxpro for DOS
  

excel в vfp
axeum
Автор

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

Re: excel в vfp
of63

Сообщений: 19958
Откуда: Н.Новгород
Дата: 07.07.20 10:50:12
Троль из местных?

Для тролей:
Ratings: 0 negative/0 positive

Re: excel в vfp
axeum
Автор

Сообщений: 48
Дата: 07.07.20 10:56:36
IMPORT FROM C:\example.xls type xl8

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

Re: excel в vfp
Божья_коровка

Сообщений: 23527
Дата: 07.07.20 11:05:14
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


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




Исправлено: Божья_коровка, 07.07.20 12:34
Ratings: 0 negative/0 positive

Re: excel в vfp
of63

Сообщений: 19958
Откуда: Н.Новгород
Дата: 07.07.20 11:29:19
> прекращена работа fox, именно поэтому я и задаю этот вопрос

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

Re: excel в vfp
Crispy

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

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


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




Исправлено: Crispy, 07.07.20 11:30
Ratings: 0 negative/0 positive

Re: excel в vfp
Rifat

Сообщений: 29
Дата: 07.07.20 11:34:29
Божья_коровка
С типами данных могут быть ньюансы, а так да, деляю также.
Ratings: 0 negative/0 positive

Re: excel в vfp
Божья_коровка

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


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

Re: excel в vfp
Божья_коровка

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


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




Исправлено: Божья_коровка, 07.07.20 11:37
Ratings: 0 negative/0 positive

Re: excel в vfp
ABB

Сообщений: 73
Откуда: Санкт-Петербург
Дата: 07.07.20 11:57:09
Самый простой и надежный метод, по моему опыту, LibreOffice. Сохранить xls как dbf.
Работает хорошо на сотнях тысяч записей.
Ratings: 0 negative/0 positive

Re: excel в vfp
of63

Сообщений: 19958
Откуда: Н.Новгород
Дата: 07.07.20 12:36:52
Реалии таковы, что юзеры ждут от ПО, чтобы она "жрала" любой формат файла, вплоть до фотографии таблицы. Приходится удовлетворять, разными "автоматами" определения формата, инструкциями. Всеядный пожиральщик еще не создан, как и ИИ, как и беспилотное такси...
Ratings: 0 negative/0 positive

Re: excel в vfp
Божья_коровка

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


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




Исправлено: Божья_коровка, 07.07.20 13:43
Ratings: 0 negative/0 positive

Re: excel в vfp
of63

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

Re: excel в vfp
Wilis

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



Исправлено: Wilis, 07.07.20 16:28
Ratings: 0 negative/0 positive

Re: excel в vfp
Божья_коровка

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


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

Re: excel в vfp
akvvohinc

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



Исправлено: akvvohinc, 07.07.20 16:50
Ratings: 0 negative/0 positive

Re: excel в vfp
axeum
Автор

Сообщений: 48
Дата: 09.07.20 08:29:39
  
    &&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 все столбцы общие,можно ткнуть меня носом что не так я делаю?



Исправлено: axeum, 09.07.20 10:17
Ratings: 0 negative/0 positive

Re: excel в vfp
ssa

Сообщений: 12610
Откуда: Москва
Дата: 09.07.20 09:04:00
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
Автор

Сообщений: 48
Дата: 09.07.20 10:06:26
aerror выдает 1526, но как исправить это? я понять не могу в чем ошибка
Ratings: 0 negative/0 positive

Re: excel в vfp
of63

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



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

On-line: 9 PuMa  (Гостей: 8)

02.12.2020 02:29:21 exec: 0.24
Mem: 1.51 Mb

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