Форум: "Начинающим";
Текущий архив: 2011.01.30;
Скачать: [xml.tar.bz2];
ВнизПравильный импорт данных из Экселя Найти похожие ветки
← →
Doctordradd (2010-11-02 18:37) [0]Подскажите, пожалуйста, как правильно импортировать данные из таблицы Эксель. Экспорт работает отлично, при импорте открывается файл экселя, записывается временно 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;
← →
Leonid Troyanovsky © (2010-11-02 18:47) [1]
> Doctordradd (02.11.10 18:37)
> из таблицы Эксель. Экспорт работает отлично, при импорте
> открывается файл экселя, записывается временно 1 колонка,
> при закрытии программы записанные данные исчезают.
Вообще-то оно хорошее правильнописание,
но только почему-то хромает ..
--
Regards, LVT.
← →
Doctordradd (2010-11-02 18:55) [2]Ммм...по-русски у меня всегда была 5, но уже 8 лет не говорю на родном языке...
В любом случае более подробное обьяснение:
Я новичок в Дельфи, создаю программу, базу данных. Данные работников, скажем записываются в несколько колонок в основном интерфейсе программы тип таблицы. Есть экспорт данных в эксель, пытаюсь создать импорт. Данные в таблицу программы записываются с формы, в которой каждое поле - это колонка в таблице.
При импорте в данный момент открывается нужный файл, имя приходится прописывать в Дельфи, не получается открывать выбор файла, после открытия в таблицу программы импортируются данные указанные в коде Дельфи, но при закрытии созданной программы данные из таблицы исчезают.
← →
Anatoly Podgoretsky © (2010-11-02 19:11) [3]> Doctordradd (02.11.2010 18:37:00) [0]
Не видать команды записи в файл.
← →
Leonid Troyanovsky © (2010-11-02 19:13) [4]
> Doctordradd (02.11.10 18:55) [2]
> Ммм...по-русски у меня всегда была 5, но уже 8 лет не говорю
> на родном языке...
Милн Ален Александр. Пер. Б.Заходер.
Посоветовать даже не знаю что, если с русским плохо.
May be VBA help.
Да, и чего сразу Excel, а не, скажем, Access.
--
Regards, LVT.
← →
Doctordradd (2010-11-03 21:21) [5]Команду записи с файла не смог вставить, выдает ошибку, с формы вручную данные записываются так:
main.ini.WriteString(Edit1.Text,"n1",Edit2.text);
где
Edit1.text:=SECT;
oldname:=Edit1.Text;
также при импорте в таблицу основную выдаются данные только 1-й строчки из экселя и только в строчки, уже прописанные вручную.
Т.е. сначала приходится вводить любые данные в каждую строку, в эту строку вписывается 7-я строка из экселя, она же вписывается во все строки уже введенные вручную в базу.
Подскажите, пожалуйста, как дать команду записи в файл этих данных с эклселя и исправить запись с 7 строки на с 7 и далее, также вписывать данные не только в уже введенные строки в базе, а в любые пустые.
Спасибо
← →
Anatoly Podgoretsky © (2010-11-04 11:34) [6]Так и пишет "выдаю ошибку"
← →
Doctordradd (2010-11-04 16:01) [7]Если знаете - подскажите, если не знаете, чего глумиться-то, каждый человек в чем-то хорошо, а в чем-то плохо разбирается...
написано "Мастера Delphi" а не балабольства на форуме, для того, полагаю люди и обращаются...
Ошибка конечно же выдается в виде подчеркнутой строчки и не компилится.
← →
Anatoly Podgoretsky © (2010-11-04 16:04) [8]Все понял у тебя или секретная или обидная ошибка.
← →
Doctordradd (2010-11-04 16:51) [9]Я не знаю как записать эти данные в файл, сделал попытку такого вида:
main.ini.WriteString(" ","n1",ws.Range["B"+inttostr(fst)].Value);
← →
Anatoly Podgoretsky © (2010-11-04 18:26) [10]> Doctordradd (04.11.2010 16:51:09) [9]
Value это variant, и строки если они есть, то они Юникодовые.
← →
Doctordradd (2010-11-04 18:53) [11]Ммм... Ваша подсказака для более знающего delphi человека...
Если сам принцип записи в файл верен, подскажите, пожалуйста, более развернуто, если конечно не трудно, что не так в коде записи...
Спасибо.
Заменяя value на text - ошибку не выдает, но и данные не пишутся в файл, delphi дает подсказку что можно писать после точки, только лишь templates.
← →
sniknik © (2010-11-04 20:46) [12]> Если сам принцип записи в файл верен
WriteString написана совершенно верно. но принципа в ней нет...
← →
Doctordradd (2010-11-04 23:01) [13]
> WriteString написана совершенно верно
Подскажите, пожалуйста, что должно быть в скобках для правильной записи данных
← →
sniknik © (2010-11-05 01:55) [14]в скобках пишется то, что нужно, для метода того класса/типа объекта который используется. их дельфи/хелп вообще то 16 штук выдает... скажи который (номер от 1 до 16) и я посмотрю за тебя какого типа переменные в нем должны быть написаны.
хотя, и в них принципа нет.
← →
Германн © (2010-11-05 02:51) [15]
> их дельфи/хелп вообще то 16 штук выдает
У меня всего 8. Но среди них нет той, о которой говорит (скорее всего) автор.
> Doctordradd
Сохранение содержимого документа Excel в ini-файл вам дьявол подсказал, не иначе.
← →
Doctordradd (2010-11-05 15:06) [16]В книжке написано, что более 400 классов...
В Tlist импортированные данные отображаются, далее нет.
Файл базы .pdb...
Программу не сам пишу, изменяю телефонный справочник...
← →
Doctordradd (2010-11-05 19:47) [17]Сергей, подскажите, пожалуйста, как правильно записать импорт, я уже путаться больше начинаю...
Спасибо.
← →
sniknik © (2010-11-05 23:31) [18]> как правильно записать импорт
правильно писать экспорт... т.к. из экселя в файл, импорт наоборот.
и для кого правильно? вот например для меня, используя jet, в один запрос -SELECT * INTO Export#txt IN "D:\" "Text;" FROM [Sheet1$]
это экспортSELECT * INTO [Sheet4$] FROM Import#txt IN "D:\" "Text;"
и импорт
но для тебя это вряд ли будет правильно, нужный тебе формат ты не описал, поэтому думаю csv тебе не подойдет.
> я уже путаться больше начинаю...
только начинаешь? а до этого типа все кристально ясно было, поэтому не мог определиться, что используешь?
← →
Doctordradd (2010-11-07 00:03) [19]
> только начинаешь? а до этого типа все кристально ясно было,
> поэтому не мог определиться, что используешь?
Извините, я не программист вовсе, редактирую, подгоняю исходник телефонного справочника под базу данных предприятия...
В самом начале топика дан экспорт, который работает на 5+ и импорт, сделанный вобщем-то так же, но наоборот, здесь-то и загвоздка...
пишется все через main.ini...
Формат разный, если не ошибаюсь, это Text, Date, ItemIndex...
← →
sniknik © (2010-11-07 00:41) [20]> Извините, я не программист вовсе
да не за что. найми программиста.
> В самом начале топика дан экспорт, который работает на 5+ и импорт, сделанный вобщем-то так же, но наоборот
ну так, теперь ты все прояснил! сразу стало понятно, что работать не будет... т.к. в данном в топике коде нет чтения из файла, т.е. "наоборот" это запись, именно она и не работает. это карма.
← →
Doctordradd (2010-11-07 03:44) [21]
> найми программиста
Где ж б его нанять здесь...
> в данном в топике коде нет чтения из файла, т.е. "наоборот"
> это запись, именно она и не работает
Подскажите, пожалуйста, все равно не понял по словам где именно ошибка кроется...
Наоборот получается от экспорта вроде бы, но что-то упустил все равно...
← →
Германн © (2010-11-07 04:00) [22]
> Doctordradd (07.11.10 03:44) [21]
>
>
> > найми программиста
>
> Где ж б его нанять здесь...
>
Это будет очень дорого стоить. (Отвечаю и на твоё письмо).
Но есть и такой ресурс http://forum.sources.ru/index.php?showforum=149
← →
Doctordradd (2010-11-07 08:46) [23]Единственное сообщение что вожу при входе на этот форум, это что мой адрес забанен...раньше точно на этот форум не заходил:
Обнаружена ошибка. Если Вам неизвестны причины ошибки, попробуйте обратиться к файлам помощи.
Обнаружена ошибка:
Вы ЗАБАНЕНЫ на этом форуме
← →
sniknik © (2010-11-07 10:38) [24]> Вы ЗАБАНЕНЫ на этом форуме
напиши это модератору - forum@sources.ru вместе с тем, что не заходил... может они всю под сеть закрыли из-за частого "кидалова" из нее.
← →
Doctordradd (2010-11-08 22:27) [25]Так и не получается, значит, решить вопрос этого топика с импортом из Экселя?
← →
sniknik © (2010-11-08 23:27) [26]почему же не получается? очень даже получается, в [18] например вопрос полностью решен, и экспорт и импорт... другое дело тебя это чем то не устраивает. а нас не устраивает твоя постановка вопроса... а собственно нет никакой постановки, есть желание высказанное получить код, не утруждаясь даже нормальное ТЗ. впрочем, грамотное ТЗ тоже не поможет, т.к. принцип сайта - "делаешь ты сам. мы можем подсказать, в трудных местах". но от тебя нет попыток что-то делать... т.что и подсказывать не к чему.
← →
Doctordradd (2010-11-09 06:23) [27]Я не бестолочь вовсе и даже не начинающий программист...
здесь вот вы пишете:
> и для кого правильно? вот например для меня, используя jet,
> в один запрос -
> SELECT * INTO Export#txt IN "D:\" "Text;" FROM [Sheet1$]
> это экспорт
> SELECT * INTO [Sheet4$] FROM Import#txt IN "D:\" "Text;"
> и импорт
>
> но для тебя это вряд ли будет правильно, нужный тебе формат
> ты не описал, поэтому думаю csv тебе не подойдет.
вижу что идет текст, как в колонки, в строчки его писать???
обьясните понятнее где ошибка и как исправить, если можете и хотите помочь...учиться мне поздно уже, неделю как терпеливо надеюсь понять как этот импорт сделать...
понимаю что Вы специалист в этом и может интересно глумиться как кто-то не может сделать что вам 5 мин., когда-нибудь Вам тоже понадобится в другой области что-то исправить или понять, дай Бог помогут...
Код или кусок кода на практике дает понимание как и что работает, теория это в 10 раз больше времени всегда и не всегда толк...
← →
sniknik © (2010-11-09 08:20) [28]> вижу что идет текст, как в колонки, в строчки его писать???
а вам как надо? эксель - таблица (если брать 1 лист), сохранение пишет аналогично просто в другой формат (стандартный кстати).
> обьясните понятнее где ошибка и как исправить
понятнее... ошибки НЕТ. здесь нет. так как то что вы показываете не содержит в одном случае чтения из файла(аналогию по "делаю также но наоборот" не провести), в другом записи (на что жалоба). есть название метода неизвестно какого объекта. причем название абсолютно верное (иначе бы справка не нашла соответствий), с параметрами сложнее, они разные у каждого (не, ну на самом деле у кого то могут совпадать, не суть). впрочем несоответствие типов дало бы ошибку... стойте, так у нас и есть ошибка! или что по вашему значит "не работает"? просто скрываемая. потом, даже если написать один метод с правильными значениями, это еще не значит что мы записали в файл... есть куча вариантов (а объект нам не известен, еще помните?) когда сохранение делается в буфер, и после, другой командой сбрасывается на диск, в файл... т.е. даже абсолютно верный с верными (исправленными) параметрами без ошибок 1 метод может ничего не дать, и скорее всего не даст.
> глумиться как кто-то
мы с вами говорим на разный языках... то что вы воспринимаете как глумление, на самом деле и есть помощь... если бы вы реагировали на нее адекватно, давно бы все решили. но для этого нужно думать как программист/знать необходимый минимум.
> учиться мне поздно уже
поэтому вам и лучше нанять программиста.
> когда-нибудь Вам тоже понадобится в другой области что-то исправить или понять, дай Бог помогут...
мне совсем недавно требовалась такая, стиральную машинку установить... область не моя. вызвал, помогли. 3 тысячи все счастье. и Бог тут не причем. он этим не занимается.
> Код или кусок кода на практике дает понимание как и что работает
я дал вам код. самый простой вариант по моему. но без знания jet-а, ADO, подключений (исамов), оно вам сильно помогло?
> теория это в 10 раз больше времени всегда и не всегда толк...
сказка о голодном рыбаке, которого вместо обеда предпочли научить ловить рыбу. кто там что сказал по этому поводу?
хотя у вас цель другая... не дать заработать "рыбаку" на обед, убедив других таких же "наловить вам рыбы за бесплатно".
← →
Doctordradd (2010-11-09 08:46) [29]я б заплатил вобщем-то раз помочь никак...
3 тысячи, да, рыбка золотая, я вот как раз машинки сам себе подключал...
Вот может быть это поможет помочь? это добавление итемсов в main файле...это и есть запись? или снова не то?procedure LoadGroupVisitas(Const Groupname:string);
var i,cur:integer;
sec:tstringlist;
begin
BaseVisitas.Visitas.OnChange:=nil;
sec:=tstringlist.Create;
with BaseVisitas do begin
Visitas.Clear;
try
ini.ReadSections(sec);
status.panels[1].text:=" Total Visitas : "+inttostr(sec.Count);
if groups.ItemIndex=0 then begin
for i:=0 to sec.Count-1 do begin
Visitas.Items.Add.Caption:=Sec[i];
Visitas.Items[i].SubItems.Add(Ini.ReadString(Sec[i],"n1",""));
Visitas.Items[i].SubItems.Add(Ini.ReadString(Sec[i],"n2",""));
Visitas.Items[i].SubItems.Add(Ini.ReadString(Sec[i],"n3",""));
Visitas.Items[i].SubItems.Add(Ini.ReadString(Sec[i],"n4",""));
Visitas.Items[i].SubItems.Add(Ini.ReadString(Sec[i],"n5",""));
Visitas.Items[i].SubItems.Add(Ini.ReadString(Sec[i],"n6",""));
end;
end;
if groups.itemindex>0 then begin
for i:=0 to sec.Count-1 do begin
if ini.readstring(sec[i],"n7","")=GroupName then begin
cur:=Visitas.Items.Add.Index;
Visitas.items[cur].Caption:=sec[i];
Visitas.items[cur].SubItems.Add(ini.readstring(sec[i],"n1",""));
Visitas.items[cur].SubItems.Add(ini.readstring(sec[i],"n2",""));
Visitas.items[cur].SubItems.Add(ini.readstring(sec[i],"n3",""));
Visitas.items[cur].SubItems.Add(ini.readstring(sec[i],"n4",""));
Visitas.items[cur].SubItems.Add(ini.readstring(sec[i],"n5",""));
Visitas.items[cur].SubItems.Add(ini.readstring(sec[i],"n6",""));
end;
end;
end;
← →
sniknik © (2010-11-09 09:40) [30]> ini.ReadSections(sec)
значит все таки ini...
Германн © (05.11.10 02:51) [15]
> Сохранение содержимого документа Excel в ini-файл вам дьявол подсказал, не иначе.
но... ваше дело конечно, как и будущие проблемы.
> Visitas.Items[i].SubItems.Add(Ini.ReadString(Sec[i],"n1",""));
ну и что же вы врете, что "аналогично только запись"? здесь секция вполне определена. а на "записи" нет.
← →
sniknik © (2010-11-09 09:54) [31]> я вот как раз машинки сам себе подключал...
думаешь я сам не мог? но пришлось бы ехать в магазин подбирать/наращивать шланг, делать врезку (откуда то брать сварку? с умением не проблема, у меня даже есть корочки сварщика, устаревшие правда, получил на повышении квалификации (владение смежными дает/давало бонус на предприятии), еще до института/армии...), и т.д. провозился бы не одну неделю, а так все решилось за пол часа, + саму машинку затащили на 5 этаж без меня... ++ если бы мне пришлось (а мне бы пришлось) из-за этого брать отгул, то потерял бы я больше чем эти 3 тысячи (кстати вы не теряете занимаясь не своим делом вместо своей работы?).
а вообще, честно, вижу такое наплевательское "да че там делать то?" только от от тех, кто в процессе не разбирается, и сам не умеет, или так сказать "умеет издалека". и это неважно к чему относится, в любой области можно применить.
← →
Andy BitOff © (2010-11-09 10:05) [32]
> Doctordradd (09.11.10 08:46) [29]
> это и есть запись?
Какая же это запись? Написано же ReadString, т.е. берем гугл и получаем "Читайте String" (с)translate.google.com
Читайте! А не пишите.
← →
Dennis I. Komarov © (2010-11-09 13:20) [33]
> а вообще, честно, вижу такое наплевательское "да че там
> делать то?" только от от тех, кто в процессе не разбирается,
> и сам не умеет, или так сказать "умеет издалека". и это
> неважно к чему относится, в любой области можно применить.
Вот так привезут человека с аппендицитом, а там Виктор Михайлович Полесов - да чего тут делать, зыж самая простая операция - раз и все...
← →
Dennis I. Komarov © (2010-11-09 13:33) [34]
> я б заплатил вобщем-то раз помочь никак...
Да, если все-таки самодеятельность надоест, составляйте Т.З. и...
← →
Doctordradd (2010-11-09 15:55) [35]
> Сохранение содержимого документа Excel в ini-файл вам дьявол
> подсказал, не иначе.
В куда ж его еще можно сохранить?
> здесь секция вполне определена. а на "записи" нет.
Попробовал Sec[0] в коде импорта, не выходит...
> а вообще, честно, вижу такое наплевательское "да че там
> делать то?" только от от тех, кто в процессе не разбирается,
> и сам не умеет, или так сказать "умеет издалека"
То что не умею издалека, может и моя вина, что другим наукам учился, но Вы не думайте, что я сижу вот и жду, поплевывая на экран...согласен, не знаю абсолютно и наугад уже изменяю этот код, но все же пытаюсь...
> Да, если все-таки самодеятельность надоест, составляйте
> Т.З. и...
Обидно сдаваться теперь, 2 недели пытаюсь решить задачу...
← →
Dennis I. Komarov © (2010-11-09 16:20) [36]Хорошего из этого ничего не получится. Если для баловства, то пожалуйста, развлекайтесь сколько угодно. А если для дела, то извините, любой хороший продукт стоит хороших денег. А чтобы продукт был хороший... и т.д.
← →
sniknik © (2010-11-09 17:53) [37]> Попробовал Sec[0] в коде импорта, не выходит...
так и пишет? не выхожу мол... вообще ошибки это первое на что должен учится обращать внимание программист, т.к. в них часто написана причина...
у тебя там еще один глюк, раз уж ini файл, то там вроде как нет перекрытых методов с вариантным параметром, а автоприведение... ну может не срабатывает. не скажу без ошибки от действия.
> Обидно сдаваться теперь, 2 недели пытаюсь решить задачу...
через 2 месяца будет еще более обидно, при том же состоянии дел. учится на программиста вы же не хотите...
← →
Doctordradd (2010-11-09 18:27) [38]Ошибок выдало несколько, несовместимы типы, не обьявлена переменная...
Т.З. простое было б:
Почистить только необходимо лишнее в коде базы данных, настроить импорт Экселя, настроить копирование строк(при попытке копировать они как бы вырезаются).
Сколько б могла стоить работа?
← →
Anatoly Podgoretsky © (2010-11-09 18:58) [39]> Doctordradd (09.11.2010 18:27:38) [38]
Ты еще и деньги хочешь получать :-)
← →
sniknik © (2010-11-09 21:33) [40]> Т.З. простое было б:
простое тз. это то где все досконально расписано, так чтобы не было неоднозначных толкований (которые обычно после пытаются интерпретировать в пользу заказчика).
а твоя "писулька" не иначе как "вызов Шерлок Холмсу", вот что такое "лишнее в коде базы данных"??? в базах данных вообще то нет кода, и т.д.
вообще совет, не надо в тз. пытаться расписывать что делать, пиши что хочешь получить... ты же вот таксисту не говоришь - "крутите руль влево на 30 градусов, после поворота жмите педаль тормоза, после светофора держите машину прямо...", ты просто говоришь куда тебе надо.
> Ты еще и деньги хочешь получать :-)
не, он приценивается, чтобы не переплатить... (хотя место выбрал не удачное, ссылки где этим занимаются проигнорировал).
Страницы: 1 2 вся ветка
Форум: "Начинающим";
Текущий архив: 2011.01.30;
Скачать: [xml.tar.bz2];
Память: 0.59 MB
Время: 0.004 c