Delphi&Excel

4 отговора 180 прегледа
#1

Delphi&Excel

Zdraveite!
Interesuva me, koi e nai-lesniq i byrz nachin da vzema nakolko stoinosti ot kletki v excel i da si gi polzvam v prilojenieto mi. Stava vypros za nakoi agregatni stoinosti ot fail sys standartna struktura (t.e znam koi kletki mi trqbwat). Kakvo da polzvam OLE conteiner, componentite ot servers ili prez ADO, koe e nai-lesno i byrzo?
INFO: versiqta na exselskiq fail nqma da se promenq(97 e), ne sa nujni promeni v excelskiq fail (samo shte se chete).
Ako moje daite malko kod kolkoto da zacepq za kvo stava vypros, che ne sym polzval dosega.

Отговор
в отговор на ivo_k #2

Re: Delphi&Excel

Така както гледам, най-малко натоварващо е файла да се конвертира до CSV формат и да си четеш каквото трябва с класически достъп до файл.
Другото удобно положение е да създадеш Excel приложение с CreateOLEObject и да пипаш стойностите чрез OLE. Точната адресация на клетките може да видиш като направиш макрос в Excel и видиш генерирания VBScript.
Засега не мога да постна код, но ако не е зор и не се оправиш, утре може да се напъна.

чети и дишай по-леко
Отговор
в отговор на ivo_k #3

Re: Delphi&Excel

Какво значи бърз начин? Ако искаш да е бързо за писане, виж по-долу, а ако искаш да се изпълнява бързо - тоя начин сигурно е възможно най-бавния. Но работи де - проверено е.

Var
ExcelApp, Sheet : OleVariant;
s : String;
begin
CoInitialize(Nil);
Try
ExcelApp := CreateOleObject('Excel.Application');
ExcelApp.Visible:= True; // ако искаш (за тестове е полезно)
ExcelApp.Workbooks.Open('име на файл');
Sheet := ExcelApp.ActiveWorkbook.ActiveSheet;
s := Sheet.Cells[число, число].Value;
Finally
CoUninitialize;
End;
end;


Отговор
в отговор на Formal #4

Re: Delphi&Excel

Blagodaria mnogo za pomo6ta, naistina mi triabva spe6no da go napravia tova za koeto popitah, a niamam vreme da 4eta helpove i debeli knigi a i dostaty4no opit s Delphi
O6te vednyj blagodarnosti na vsi4ki koito vzeha otno6enie po temata


Bydete zdravi!

Отговор
в отговор на Formal #5

Re: Delphi&Excel

zamo da znaesh che pri golqm broj obrysteniq - ot tipa na 400 000 - 500 000 /ne pomnq tochnata cifra, moje i po-malka da e/ kym excel-a chrez ole automation pod win9x moje da se poluchi zawiswane
mnogo nepriqten problem
pod nt/probwal sym na 2000 i xp/ nqma nikakwi problemi
zassega sym nameril edno typo reshenie, no wyrshi rabota - spiram si excel application-a i go puskam otnowo

ako nqkoj se e sblyskwal s tozi problem i go e reshil po po-eleganten nachin - ste sym bu blagodaren da go spodeli wyw forum-a

Отговор