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-08 22:27:00) [21]

Так и не получается, значит, решить вопрос этого топика с импортом из Экселя?


sniknik   (2010-11-07 10:38:00) [22]

> Вы ЗАБАНЕНЫ на этом форуме
напиши это модератору - forum@sources.ru вместе с тем, что не заходил... может они всю под сеть закрыли из-за частого "кидалова" из нее.


Doctordradd   (2010-11-07 08:46:00) [23]

Единственное сообщение что вожу при входе на этот форум, это что мой адрес забанен...раньше точно на этот форум не заходил:

Обнаружена ошибка. Если Вам неизвестны причины ошибки, попробуйте обратиться к файлам помощи.

Обнаружена ошибка:

Вы ЗАБАНЕНЫ на этом форуме


Германн   (2010-11-07 04:00:00) [24]


>  Doctordradd   (07.11.10 03:44) [21]
>
>
> > найми программиста
>
> Где ж б его нанять здесь...
>

Это будет очень дорого стоить. (Отвечаю и на твоё письмо).
Но есть и такой ресурс http://forum.sources.ru/index.php?showforum=149


Doctordradd   (2010-11-07 03:44:00) [25]


> найми программиста

Где ж б его нанять здесь...


> в данном в топике коде нет чтения из файла, т.е. "наоборот"
> это запись, именно она и не работает


Подскажите, пожалуйста, все равно не понял по словам где именно ошибка кроется...
Наоборот получается от экспорта вроде бы, но что-то упустил все равно...


sniknik   (2010-11-07 00:41:00) [26]

> Извините, я не программист вовсе
да не за что. найми программиста.

> В самом начале топика дан экспорт, который работает на 5+ и импорт, сделанный вобщем-то так же, но наоборот
ну так, теперь ты все прояснил! сразу стало понятно, что работать не будет... т.к. в данном в топике коде нет чтения из файла, т.е. "наоборот" это запись, именно она и не работает. это карма.


Doctordradd   (2010-11-07 00:03:00) [27]


> только начинаешь? а до этого типа все кристально ясно было,
>  поэтому не мог определиться, что используешь?

Извините, я не программист вовсе, редактирую, подгоняю исходник телефонного справочника под базу данных предприятия...

В самом начале топика дан экспорт, который работает на 5+ и импорт, сделанный вобщем-то так же, но наоборот, здесь-то и загвоздка...
пишется все через main.ini...
Формат разный, если не ошибаюсь, это Text, Date, ItemIndex...


sniknik   (2010-11-05 23:31:00) [28]

> как правильно записать импорт
правильно писать экспорт... т.к. из экселя в файл, импорт наоборот.

и для кого правильно? вот например для меня, используя jet, в один запрос -  
SELECT * INTO Export#txt IN "D:\" "Text;" FROM [Sheet1$]
это экспорт
SELECT * INTO [Sheet4$] FROM Import#txt IN "D:\" "Text;"
и импорт

но для тебя это вряд ли будет правильно, нужный тебе формат ты не описал, поэтому думаю csv тебе не подойдет.

> я уже путаться больше начинаю...
только начинаешь? а до этого типа все кристально ясно было, поэтому не мог определиться, что используешь?


Doctordradd   (2010-11-05 19:47:00) [29]

Сергей, подскажите, пожалуйста, как правильно записать импорт, я уже путаться больше начинаю...
Спасибо.


Doctordradd   (2010-11-05 15:06:00) [30]

В книжке написано, что более 400 классов...
В Tlist импортированные данные отображаются, далее нет.
Файл базы .pdb...
Программу не сам пишу, изменяю телефонный справочник...


Германн   (2010-11-05 02:51:00) [31]


> их дельфи/хелп вообще то 16 штук выдает

У меня всего 8. Но среди них нет той, о которой говорит (скорее всего) автор.


> Doctordradd

Сохранение содержимого документа Excel в ini-файл вам дьявол подсказал, не иначе.


sniknik   (2010-11-05 01:55:00) [32]

в скобках пишется то, что нужно, для метода того класса/типа объекта который используется. их дельфи/хелп вообще то 16 штук выдает... скажи который (номер от 1 до 16) и я посмотрю за тебя какого типа переменные в нем должны быть написаны.

хотя, и в них принципа нет.


Doctordradd   (2010-11-04 23:01:00) [33]


> WriteString написана совершенно верно

Подскажите, пожалуйста, что должно быть в скобках для правильной записи данных


sniknik   (2010-11-04 20:46:00) [34]

> Если сам принцип записи в файл верен
WriteString написана совершенно верно. но принципа в ней нет...


Doctordradd   (2010-11-04 18:53:00) [35]

Ммм... Ваша подсказака для более знающего delphi человека...
Если сам принцип записи в файл верен, подскажите, пожалуйста, более развернуто, если конечно не трудно, что не так в коде записи...
Спасибо.

Заменяя value на text - ошибку не выдает, но и данные не пишутся в файл, delphi дает подсказку что можно писать после точки, только лишь templates.


Anatoly Podgoretsky   (2010-11-04 18:26:00) [36]

> Doctordradd  (04.11.2010 16:51:09)  [9]

Value это variant, и строки если они есть, то они Юникодовые.


Doctordradd   (2010-11-04 16:51:00) [37]

Я не знаю как записать эти данные в файл, сделал попытку такого вида:
main.ini.WriteString(' ','n1',ws.Range['B'+inttostr(fst)].Value);


Anatoly Podgoretsky   (2010-11-04 16:04:00) [38]

Все понял у тебя или секретная или обидная ошибка.


Doctordradd   (2010-11-04 16:01:00) [39]

Если знаете - подскажите, если не знаете, чего глумиться-то, каждый человек в чем-то хорошо, а в чем-то плохо разбирается...
написано "Мастера Delphi" а не балабольства на форуме, для того, полагаю люди и обращаются...
Ошибка конечно же выдается в виде подчеркнутой строчки и не компилится.


Anatoly Podgoretsky   (2010-11-04 11:34:00) [40]

Так и пишет "выдаю ошибку"


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

Наверх

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