Delphi - Excel függvények futtatása Delphi-ből

Office 10. rész

forráskód letöltése
Eddigi Excel-programozói pályafutásunk során mindig csak konstans értékeket írtunk a cellákba. A mostani példában megnézzük, hogy hogyan lehet függvényeket is megadni egy-egy cellába, és azok eredményeit hogyan lehet kiolvasni. A mellékelt példában egy táblázatot készítünk és azt feltöltjük véletlenszerű számadatokkal. A számoszlopok alján lévő cellákba egy-egy függvényt helyezünk el, majd kiolvassuk a függvények eredményeit.

Amikor egy cellának konstans értéket adtunk át, akkor azt így tettük meg:
ExcelApp.Range['A1','A1'].Value := 12;
Világos tehát, hogy megint a Range osztályt kell használnunk a függvények megadására.
Az Excelben ha megnézünk egy függvényt, hogy az hogyan lett megadva, akkor valami ilyesmit kapunk például: "=SZUM(A1:B8)". Kézenfekvő lenne tehát, hogy valahogy nekünk is így kellene megadni a függvényt. Ez így is van, de erre nem használhatjuk a Value property-t!
A megoldás a FormulaArray property! Ezt a következőképpen használhatjuk:
ExcelApp.Range['B12','B12'].FormulaArray := '=SZUM(B2:B11)';
Innentől kezdve erre már nincs több gondunk, a függvény szorgalmasan végzi a dolgát, jelen esetben összegzi a B2-B11 cellák tartalmát.
A függvény értékének kiolvasásához két lehetőségünk is van. Az egyik a value property, ami a cella értékét tartalmazza, míg a másik a Text property, amely a formázott szám sztring formátumban. A legegyszerűbb, ha ezt is példán keresztül nézzük meg.
Range['F12','F12'].NumberFormat := '# ##0,00';
Range['F12','F12'].Value := 45623,8;
Ebben az esetben a Value property-n keresztül a 45623,8 értéket kapjuk meg. Ha ugyanennek a cellának a tartalmát a Text property-n keresztül kérdezzük le, akkor eredményül a következő sztringet kapjuk: "45 623,80".
ShowMessage(Range['F12','F12'].Text);

Office cikksorozat