HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

Excel tábla módosítása gyorsan


Példaprogram letöltése

8189 bájt

Készítünk egy komponenst, amely segítségével gyorsan módosíthatjuk Excel munkafüzeteink tartalmát. Az Excel állomány és azon belül a munkalap megadása után, egy listában felsorolhatjuk azokat az értékeket, amelyeket cserélni szeretnénk. Megadhatunk egy tartományt, a komponens végignézi, és ha egy adott cellában olyan értéket talál, amely szerepel a listában, akkor kicseréli azt a megadott értékre.

A mellékelt példaprogram megnyitása előtt az ExcelUpdate.pas-ban lévő komponenst telepítenie kell a Delphi alá. Ehhez válassza a Component - Install Component menüpontot.
A komponens WorkBook tulajdonságában adhatjuk meg az Excel állomány elérési útját és nevét, a WorkSheetIndex-ben pedig a módosítani kívánt munkalap sorszámát. A legelső munkalap indexe 1.
A CellFrom és a CellTo property-kben adhatjuk meg azt a tartományt, amelyben a módosítást végre akarjuk hajtani. A property-kben szabályos Excel cellacímzéseket kell használnunk, pl.: AB15.
A cserélendő értékek listáját az UpdateList property-ben állíthatjuk be. A komponens végignézi a megadott tartományban szereplő cellák értékeit, és ha egy cella olyan értéket tartalmaz, amely szerepel a listában, akkor azt az UpdateValue-ban megadott értékre cseréli.
A művelet az Update metódus meghívásával kezdődik.
A komponenst a TComponent osztályból származtatjuk. Az Excel programot csak a háttérben nyitjuk meg, az OLE segítségével. Az Excel program, és objektumai eléréséhez OleVariant (ComObj unit) típusú változókat használunk.
Először elindítjuk a háttérben az Excel programot.
ExcelApp:=CreateOleObject('Excel.Application');
A megadott munkafüzetet az Open metódus meghívásával nyithatjuk meg.
ExcelApp.WorkBooks.Open(FWorkBook);
A megadott indexű munkalapot az alábbi módon érhetjük el:
WorkSheet:=ExcelApp.ActiveWorkBook.Worksheets.Item[FWorkSheetIndex];
A CellFrom és a CellTo property-kben megadott cellakoordinátákat a cellák feldolgozása miatt fel kell bontanunk külön oszlop és sor értékekre. Így az oszlopok és sorok elérését ciklusok segítségével megvalósíthatjuk.
A sorok növelése nem okoz problémát. Az oszlopoknál viszont betűkkel kell dolgoznunk. A helyzetet bonyolítja, hogy a Z oszlop után az AA oszlop következik, és így tovább.
Az oszlopok növelésére a következő algoritmust használhatjuk.
if c2.Column[Length(c2.Column)]='Z' then begin
  c2.Column[Length(c2.Column)]:='A';
  c2.Column:=c2.Column+'A';
end
else
  c2.Column[Length(c2.Column)]:=Chr(Ord(c2.Column[Length(c2.Column)])+1);
Egy cellát a Range objektum segítségével választhatunk ki.
Range:=WorkSheet.Range[Column+Row,Column+Row];
...
Range.Value:=FUpdateValue;
A módosítás végrehajtása után elmentjük a módosított munkafüzetet, majd bezárjuk az Excel programot.
ExcelApp.ActiveWorkBook.Save;
ExcelApp.Quit;
Az egész művelet a háttérben zajlik, így a felhasználó az Excel program megnyitásából semmit sem lát.

Könyv
Ez a cikk megtalálható ebben a könyvben: Delphi Software Offline 2003 évkönyv 287. oldal

Felhasználási feltételek
A Software Online szoftverfejlesztői magazin mindegyik cikke, minden megjelent képe, és egyéb publikált anyaga szerzői jog védelme alatt áll! Bármilyen formában történő másodlagos terjesztésük, közzétételük vagy felhasználásuk kizárólag a kiadó előzetes írásbeli engedélyével történhet!

Copyright © 1999-2012 Animare Software Kft. Minden jog fenntartva!
| Készült: Animare Stúdió | Adatvédelem | Kapcsolat |