![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Правильный импорт данных из Экселя
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]Так и пишет "выдаю ошибку"