Форум: "Основная";
Текущий архив: 2006.11.19;
Скачать: [xml.tar.bz2];
ВнизКак обрабатывать текст в Exel? Найти похожие ветки
← →
WebSqlNeederr (2006-10-05 15:09) [0]У меня есть прайс фирмы из 1000 строк. В строке пять столбцов но заполняются не все а выборочно (три обязательные и две на выбор). Нужно средствами Делфи обработать этот екселевский документ и перегнать в БД на сайт (MySQL).
Помогите как это реализовать.
← →
Сергей М. © (2006-10-05 15:09) [1]И в чем проблема ?
← →
WebSqlNeederr (2006-10-05 15:30) [2]Можно примерчик как считывать это в Делфи
← →
Сергей М. © (2006-10-05 15:33) [3]http://www.google.ru/search?hs=VQ6&hl=ru&client=firefox-a&rls=org.mozilla%3Aru%3Aofficial&q=CreateOleObject%28%27Excel.Application%27%29&btnG=%D0%9F%D0%BE%D0%B8%D1%81%D0%BA&lr=lang_ru
← →
WebSqlNeederr (2006-10-05 15:45) [4]Спасибо за ссылку. Но там немного сложнее все чем мне нужно.
Можете здесь написать вот как взять и прочитать в Делфи первую строчку из екселя? Если в этой строчки 5 столбцов. И информацию из каждого столбца сохранить в масив.
И вообще какой компонент использовать ...
Был бы премногоблагодарен за помощь.
← →
Сергей М. © (2006-10-05 15:54) [5]var
Excel, MyArray: Variant;
..
Excel := CreateOleObject("Excel.Application");
try
Excel.Workbooks.Open("MyDoc.xls");
MyArray := Excel.Workbooks[1].Worksheets[1].Range["A1:E1"];
finally
Excel.Quit;
Excel := Unassigned;
end;
← →
WebSqlNeederr (2006-10-05 16:22) [6]Спасибо большое за пример.
Правда Делфи ругается, CreateOleObject. Может в uses какой то юнит дописать нужно?
← →
WebSqlNeederr (2006-10-05 16:25) [7]Уже сам разобрался, извините :)
← →
Сергей М. © (2006-10-05 16:25) [8]ActiveX
← →
WebSqlNeederr (2006-10-05 16:27) [9]Еще вопрос, а как из варианта в стринг перекинуть? Я попробовал так Memo1.Text:=MyArray; и вот так Memo1.Text:=MyArray[0]; но не получается :(
← →
Сергей М. © (2006-10-05 16:29) [10]
> не получается
И что сие значит ?
← →
WebSqlNeederr (2006-10-05 16:54) [11]ну пишет cpuld not convert variant of type (Dispatch) into type (String)
← →
WebSqlNeederr (2006-10-05 17:26) [12]Подскажите хоть кто то как собственно вывести в мемо первую ячейку? Я уже пробовал и вот так, но не помогает :(
memo1.text:=vartostr(MyArray[1][1]);
← →
WebSqlNeederr (2006-10-05 17:26) [13]Теперь пишет Invalid argument Что это значит? Что изменить нужно?
← →
palva © (2006-10-05 23:44) [14]memo1.text := MyArray[1, 1].Value;
← →
WebSqlNeederr (2006-10-07 04:41) [15]palva, опять пишет invalid argument :(
← →
WebSqlNeederr (2006-10-07 12:44) [16]..
← →
WebSqlNeederr (2006-10-07 14:23) [17]Плдскажите хоть кто нибудь ато я не могу понять в чем дело :(
← →
WebSqlNeederr (2006-10-07 22:10) [18]...
← →
Master_ © (2006-10-07 22:40) [19]Попробуйте обращаться конкретно к ячейкам:
memo1.text:=Excel.ActiveSheet.Cells.Item[x,y].value;
где x и y соответственно № строки и № ячейки
← →
WebSqlNeederr (2006-10-07 23:09) [20]Увы не работает все это :( Приблизительно те же ошибки выдает.
Я не могу понять в чем дело? У других аналогичный код работает?
← →
EvS © (2006-10-07 23:15) [21]Выкладывай код.
← →
Master_ © (2006-10-07 23:21) [22]У меня работает это!
Вот пример того что именно я делаю когда нужен импорт данных из MS Excel:
procedure EXCELOUT;
var
Excel,Sheet:Variant;
wb,savechanges:olevariant;
xlend,x:integer;
begin //Подготовка документя
Excel:=CreateOleObject("Excel.application");
Excel.Visible:=false;//Прячу EXCEL
// Открываю Excel
wb:=excel.WorkBooks.Open(title.opendialog2.FileName);
//Ссылаюсь на первый лист
Sheet:=Excel.Workbooks[1].sheets[1];
xlend:=strtoint(inexcel.Edit1.text);
//Здесь заполнение моей базы данными из EXCEL файла
for x:=2 to xlend do// заполнять начиная со 2 строки по XLEND
begin
title.ClientDataSet1.Insert;
title.ClientDataSet1.FieldByName("FilmName").AsString:=Excel.ActiveSheet.Cells.I tem[x,1].value;
title.ClientDataSet1.FieldByName("JanrFilma").AsString:=Excel.ActiveSheet.Cells. Item[x,2].value;
title.ClientDataSet1.FieldByName("rem2").AsString:=Excel.ActiveSheet.Cells.Item[ x,3].value;
title.ClientDataSet1.FieldByName("komentarii").AsString:=Excel.ActiveSheet.Cells .Item[x,4].value;
title.ClientDataSet1.Post;
end;
title.ClientDataSet1.First;
wb.close(savechanges:=false);Не сохранять изменений
excel.quit;//ВЫйти и закрыть excel объект
end;
В uses прописать ActiveX и COMObj
Работает 100 процентов, попробуйте!
← →
WebSqlNeederr (2006-10-07 23:36) [23]Master_, большое спасиьо! Теперь все ОК!
← →
Master_ © (2006-10-07 23:39) [24]Рад помочь
← →
Percent (2006-10-08 01:45) [25]Обмен тыренным кодом.
Очень продуктивно...
← →
Master_ © (2006-10-08 01:57) [26]какой он тыренный?
очень даже стандартный!
← →
Percent (2006-10-08 02:00) [27]какой он тыренный?
очень даже стандартный!
Что ни строка - то перл.
А вот это вообще шедевр:
title.ClientDataSet1.FieldByName("JanrFilma").AsString
← →
Master_ © (2006-10-08 02:02) [28]Это часть моей ГОРЕ ПРОГРАММЫ базы данных филмов, а что?
← →
Percent (2006-10-08 02:10) [29]Да БД... "нормализованная", типа...
← →
Master_ © (2006-10-08 02:17) [30]типа...
А поповоду
var
Excel,Sheet:Variant;
wb,savechanges:olevariant;
begin //Подготовка документа
Excel:=CreateOleObject("Excel.application");
Excel.Visible:=false;
wb:=excel.WorkBooks.Open(title.opendialog2.FileName);
Sheet:=Excel.Workbooks[1].sheets[1];
это влюбом Help-e типа Kuliba от Озерова есть
а она для меня была настольной книгой, и таковой является до сих пор
Молод я еще что бы все знать!!!! :-)))
← →
Антоныч © (2006-10-09 17:44) [31]Диапазон данных из Excel лучше вытягивать так:
var
...
Buf: Variant;
... // здесь подключаемся к Excel
Buf:=VarArrayCreate([1,{сколько строк},1,{сколько столбцов}], VarVariant);
Buf:=WorkSheet.Range[WorkSheet.Cells[1,1],WorkSheet.Cells[{сколько строк},{сколько столбцов}]].Value;
... //здесь уже можно закрывать Excel и работать с Buf как с обычным массивом
Аналогично можно передавать в Excel диапазон данных. Достоинства - высокая скорость при передаче больших объёмов данных.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2006.11.19;
Скачать: [xml.tar.bz2];
Память: 0.51 MB
Время: 0.079 c