Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Правильный импорт данных из Экселя


Страницы:   1 2 3

Doctordradd ©   (2010-11-02 18:37:00) 

Подскажите, пожалуйста, как правильно импортировать данные из таблицы Эксель. Экспорт работает отлично, при импорте открывается файл экселя, записывается временно 1 колонка, при закрытии программы записанные данные исчезают.
Записываются только в готовую строку, т.е. в программу введены вручную данные, в эти строки вписываются данные с экселя, в пустые же - нет...
Подскажите, пожалуйста, где ошибка.
Спасибо.

Экспорт правильный:
var ws,xl:variant;
   i,maxrow:integer;
   col,fst:integer;
begin
 fst:=2;
 xl:=createoleobject('Excel.Application');
   try
     maxrow:=0;
     xl.visible:=true;
     XL.WorkBooks.Add;
     ws := XL.ActiveWorkBook.ActiveSheet;
     ws.Range['A1'].NumberFormat:='0';

     ws.Range['A'+inttostr(fst)].Value := '№';
     ws.Range['B'+inttostr(fst)].Value := 'Nombres';
     col:=1;
begin
        inc(col);
        ws.Range[Chr(Ord('A')+col)+inttostr(fst)].Value := ' ';
     end;
begin
        inc(col);
        ws.Range[Chr(Ord('A')+col)+inttostr(fst)].Value := ' ';
     end;
begin
        inc(col);
        ws.Range[Chr(Ord('A')+col)+inttostr(fst)].Value := ' ';
     end;
begin
        inc(col);
        ws.Range[Chr(Ord('A')+col)+inttostr(fst)].Value := ' ';
     end;
begin
        inc(col);
        ws.Range[Chr(Ord('A')+col)+inttostr(fst)].Value := ' ';
     end;

     for i:=fst+1 to Visitas.Items.Count+fst do begin
        col:=1;
        ws.Range['a'+inttostr(i)].Value := i-2;//# работы
        ws.Range['b'+inttostr(i)].Value := Visitas.Items[i-fst-1].Caption;
begin
           inc(col);
           ws.Range[Chr(Ord('A')+col)+inttostr(i)].Value:=Visitas.Items[i-fst-1].SubItems[0];
        end;
begin
           inc(col);
           ws.Range[Chr(Ord('A')+col)+inttostr(i)].Value:=Visitas.Items[i-fst-1].SubItems[1];
        end;
begin
           inc(col);
           ws.Range[Chr(Ord('A')+col)+inttostr(i)].Value:=Visitas.Items[i-fst-1].SubItems[2];
        end;
begin
           inc(col);
           ws.Range[Chr(Ord('A')+col)+inttostr(i)].Value:=Visitas.Items[i-fst-1].SubItems[3];
        end;
        begin
           inc(col);
           ws.Range[Chr(Ord('A')+col)+inttostr(i)].Value:=Visitas.Items[i-fst-1].SubItems[4];
        end;
        maxrow:=i;
     end;

Импорт с ошибкой:
var ws,xl:variant;
   i,maxrow:integer;
   col,fst:integer;
begin
 fst:=7;
 xl:=createoleobject('Excel.Application');
   try
     maxrow:=0;
     xl.visible:=true;
     XL.WorkBooks.open('PRESENTES');
     ws := XL.ActiveWorkBook.ActiveSheet;
     ws.Range['A1'].NumberFormat:='0';

      for i:=fst+1 to Visitas.Items.Count+fst do begin
        col:=1;
        Visitas.Items[i-fst-1].SubItems[0]:= ws.Range['A'+inttostr(fst)].Value;
        Visitas.Items[i-fst-1].SubItems[1] := ws.Range['B'+inttostr(fst)].Value;
        maxrow:=i;


Doctordradd   (2010-11-03 21:21:00) [41]

Команду записи с файла не смог вставить, выдает ошибку, с формы вручную данные записываются так:

main.ini.WriteString(Edit1.Text,'n1',Edit2.text);
где
  Edit1.text:=SECT;
  oldname:=Edit1.Text;


также при импорте в таблицу основную выдаются данные только 1-й строчки из экселя и только в строчки, уже прописанные вручную.
Т.е. сначала приходится вводить любые данные в каждую строку, в эту строку вписывается 7-я строка из экселя, она же вписывается во все строки уже введенные вручную в базу.
Подскажите, пожалуйста, как дать команду записи в файл этих данных с эклселя и исправить запись с 7 строки на с 7 и далее, также вписывать данные не только в уже введенные строки в базе, а в любые пустые.
Спасибо


Leonid Troyanovsky   (2010-11-02 19:13:00) [42]


> Doctordradd   (02.11.10 18:55) [2]

> Ммм...по-русски у меня всегда была 5, но уже 8 лет не говорю
> на родном языке...

Милн Ален Александр. Пер. Б.Заходер.
Посоветовать даже не знаю что, если с русским плохо.
May be VBA help.

Да, и чего сразу Excel, а не, скажем, Access.

--
Regards, LVT.


Anatoly Podgoretsky   (2010-11-02 19:11:00) [43]

> Doctordradd  (02.11.2010 18:37:00)  [0]

Не видать команды записи в файл.


Doctordradd   (2010-11-02 18:55:00) [44]

Ммм...по-русски у меня всегда была 5, но уже 8 лет не говорю на родном языке...
В любом случае более подробное обьяснение:
Я новичок в Дельфи, создаю программу, базу данных. Данные работников, скажем записываются в несколько колонок в основном интерфейсе программы тип таблицы. Есть экспорт данных в эксель, пытаюсь создать импорт. Данные в таблицу программы записываются с формы, в которой каждое поле - это колонка в таблице.
При импорте в данный момент открывается нужный файл, имя приходится прописывать в Дельфи, не получается открывать выбор файла, после открытия в таблицу программы импортируются данные указанные в коде Дельфи, но при закрытии созданной программы данные из таблицы исчезают.


Leonid Troyanovsky   (2010-11-02 18:47:00) [45]


> Doctordradd   (02.11.10 18:37)  

> из таблицы Эксель. Экспорт работает отлично, при импорте
> открывается файл экселя, записывается временно 1 колонка,
>  при закрытии программы записанные данные исчезают.

Вообще-то оно хорошее правильнописание,
но только почему-то хромает ..

--
Regards, LVT.


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо