Delphi Exceliga töötamine. Juurdepääs Excelile DELPHI-st

Vahetage andmeid kasutajaga MS Excel V Delfi abiga OLE.

Tere kallid kolleegid!

Me kõik seisame varem või hiljem silmitsi ülesandega vahetada andmeid pakettrakendustega MS Office. Üks neist on MS Excel. Ja täpsemalt selle tootega suhtlemise kohta MS Office arutatakse selles artiklis.

Üks viis suhtlemiseks Delfi c MS Excel- on sellega ühenduse loomine OLE objektiks.

Niisiis.
Esiteks, et töötada MS Excel Ja OLE lisa sektsiooni Kasutab moodulid ComObj Ja ActiveX.

Ja esimene asi, mida peame kontrollima, on see, kas see on installitud MS Excel põhimõtteliselt kasutaja arvutis.
Selleks kasutame funktsiooni CLSIDFromProgID, mis otsib registrist CLSID edastatavate jaoks ProgID:
Abi MSDN-ist: meetod CLSIDFromProgID
Parameetrid:
pszProgID: PoleStr— string objekti nimega
clsid: TCLSID— Osuti struktuurile TGUID millele leitud objekt üle antakse;
Tagastab:
TULEMUS— Tulemus, mis võib võtta järgmisi väärtusi:
S_OK— leitud objekt;
CO_E_CLASSSTRING— registreeritud CLSID Sest ProgID on kehtetu;
REGDB_E_WRITEREGDB- Kirjutamisviga CLSID registrisse.
Loetletud tulemustest vajame S_OK.
Kirjutame funktsiooni olemasolu määramiseks Excel kasutajalt:

Funktsioon IsXlsInstall: tõeväärtus; var CLSID: TCLSID; begin Tulemus:= (CLSIDFromProgID("Excel.Application", CLSID) = S_OK); lõpp;

Kui Excel installitud, siis loome sellega ühenduse. Seda saate teha kahel viisil. GetActiveOleObject— Hankige link juba töötavale eksemplarile Excel või LooOleObject— Looge uus eksemplar Excel.
Kui meil on ülesanne saada andmeid jooksvalt Excel, siis peaksime kasutama ainult esimest valikut, muudel juhtudel proovime ühenduse luua ja kui see ei õnnestu, siis loome selle.
Kirjutame ühendamiseks 2 funktsiooni XlsConnect ja käivitada uus XlsStart:
Lisame muutuja FXlsApp tüübiga Variant, mis sisaldab viidet objektile Excel.

Privaatne FXlsApp: variant; *** funktsioon XlsConnect: tõeväärtus; begin Tulemus:= Väär;

proovi FXlsApp:= GetActiveOleObject("Excel.Application"); MS Excel Tulemus:= Tõene;

välja arvatud lõpp; lõpp; protseduur XlsStart; begin FXlsApp:= CreateOleObject("Excel.Application"); lõpp; Nüüd saate lisada nupu, millele klõpsates loome ühenduse kasutades kirjalikke funktsioone:

Protseduur btnConnectClick(Saatja: TObject); alustada kui ei IsXlsInstall, siis tõsta esile Exception.Create("MS Exceli rakendust ei leitud Excel algab sisse taustal. Liin FXlsApp.Visible:= Tõene; teeb taustaakna Excel nähtav.

Aken Excel see algab tühjalt ja tuleb sellele lisada töövihik. Seda tehakse meetodi abil WorkBooks.Add mis lisab uus raamat või avab varem salvestatud faili, kui määrate faili tee.
Lisame protseduuri, mis seda teeb:

Protseduur XWorkbookAdd(const FilePath: string = ""); begin FXlsApp.WorkBooks.Add(FilePath); lõpp;

Raamat on lisatud, nüüd proovime sinna midagi kirjutada.

FXlsApp.Cells := "Teststring";

Kus Rida on rea indeks ja Kol— veeru indeks, mis algab ühega.

FXlsApp.Range["A1"] := "Cell A1";

Kus Vahemik on rakkude massiiv ja A1- tuttav Excel raku koordinaadid.
Vahemiku saab määrata koordinaatidena. Näiteks kood

FXlsApp.Range["A3:A10"] := 5;

täidab kõik lahtrid numbriga 5 A3 poolt A10 ja kood

FXlsApp.Range["A3:A10"].Interior.Color:= clMoneyGreen;

tõstab sama vahemiku heleroheliselt esile.
IN tagakülg st andmete hankimiseks Excel, töötab samamoodi. Liin

ShowMessage(FXlsApp.Cells);

Kuvab teate lahtri sisuga koordinaatidega: Rida=5, Veerg=1.

Pärast seda, kui oleme teinud vajalikud manipulatsioonid Excel, saame saadud raamatu salvestada faili järgmise käsuga:

FXlsApp.ActiveWorkbook.SaveAs("C:\Test.xlsx");

Kus Aktiivne tööraamat- praegune raamat.
Ja sulgege rakendus Excel käsk:

FXlsApp.Quit;

Kuidas te neist juhtimisvõimalustest aru saate? Excel alates Delfi ei ole piiratud. Ja on üks üsna lihtne viis teada saada, kuidas vajalik toiming läbi viia Excel alates Delfi.
Seda nimetatakse makrodeks.

Kujutagem ette, et peame liitma mitu lahtrit üheks ja me ei tea, kuidas seda teha. Aga me tahame teada saada. Selleks teeme järgmised sammud:
1. Käivitage Excel ja looge tühi raamat.
2. Käivitage vaikimisi käsk “Record Macro”, makro nimeks on “Macro1”. (IN erinevad versioonid Excel see käsk asuvad erinevates menüüpunktides).
3. Valige teatud lahtrite vahemik ja klõpsake nuppu "Ühenda ja aseta keskele".
4. Lõpetage makro salvestamine.
5. Avage makrode loend ja valige seal salvestatud makro.
6. Klõpsake nuppu "Muuda".
Toimetaja hakkab tööle Microsoft Visual Basic Rakenduse jaoks milles näeme tehtud toimingute koodi:

Sub Macro1() " " Macro1 Macro " With Selection .HorizontalAlignment = xlCenter .VerticalAlignment = xlBottom .WrapText = Vale .Orientation = 0 .AddIndent = False .IndentLevel = 0 .ShrinkToReldingLevel = 0 .ShrinkToReldingLevel = 0 .ShrinkToReldingLevel. .Merge End Sub

Vaatame lähemalt, mida ta meile siin kirjutas:
Valikuga— Määrake valitud lahtrivahemiku jaoks atribuudid:
Horisontaalne joondus = xlCenterHorisontaalne orientatsioon= tsentreeritud.
VerticalAlignment = xlBottom— Vertikaalne orientatsioon – piki alumist serva.
WrapText = Vale— Teksti murdmine sõnadega on keelatud.
Orientatsioon = 0— Orientatsioon 0 kraadi.
AddIndent = vale- Kasutamine automaatne taandumine sisse/välja
Taanetase = 0— taanetase 0.
ShrinkToFit = Vale— Tihendage tekst veeru mahutamiseks sisse/välja.
ReadingOrder = xlContext— Lugemise järjekord vastavalt kontekstile.
MergeCells = Vale- ühendatud lahtrid sisse/välja
Lõpeta— valitud vahemikuga töölõigu lõpp.
Valik.Ühenda— Ühendage valitud vahemik.

Nüüd proovime Delphi lahtreid liita:

Valime vajaliku vahemiku.

FXlsApp.Selection.MergeCells:= Tõene;

Me ühendame lahtrid atribuudi määramisega. Või kasutades meetodit:

FXlsApp.Selection.Merge;

Sel viisil saate koodi peaaegu kõigi vajalike manipulatsioonide jaoks.
Ja kui mõni omadus või meetod küsimusi tekitab, saate kasutada MSDN-i abi.

Pange tähele massiividega töötamise eripära VBA. Indeksid massiivides sisse Delfi on mähitud nurksulgudesse, samas kui sisse VBA need on ümmargused. Ja kood sisse Delfi

FXlsApp.Range["B5:C8"].Vali;

V VBA hakkab välja nägema

Vahemik("D5:H14").Vali;

Allpool annan väikese KKK suhtlemise küsimuses Excel alates Delfi

Kuidas määratleda Excelis konstantseid väärtusi Delphis kasutamiseks?

Toimetajas VBA Seame peatuspunkti huvikonstandi vastas. Klõpsake käsul Käivita ja kui täitmine peatub, osutage huvipakkuvale konstandile:

Kuidas keelata Excelis sõnumiväljundid?

FXlsApp.DisplayAlerts:= Vale;

Kuidas saada Excelist raamatute loendit?

For i:= 1 kuni FXlsApp.Workbooks.Count do ListBox1.Items.Add(FXlsApp.Workbooks.Item[i].Name);

Kuidas ruudustiku kuvamist keelata?

FXlsApp.ActiveWindow.DisplayGridlines:= Vale;

Kuidas kuvada praegust lehte prindi eelvaatena?

FXlsApp.ActiveWindow.SelectedSheets.PrintPreview;

Kuidas muuta osa lahtrites olevatest tekstidest paksuks?

Var Rida: täisarv; // Stringindeks Col: integer; // Lahtriindeks TextSelStart: täisarv; // Alustades märgist TextSelLength: integer; // Valitud märkide arv algab FXlsApp.Cells.Characters(TextSelStart, TextSelLength).Font.Bold:= True; lõpp;

Kuidas liimitud raku jaoks rea kõrgust automaatselt kohandada?

Var merge_area: variant; cell_width, cell_width, i: integer begin // Salvesta liidetud lahtrite vahemik muutujasse merge_area:= FXlsApp.Range["D5"].MergeArea;// Salvesta lahtri laius, mille kõrguseks valime cell_width:= FXlsApp.Range["D5"].ColumnWidth;

cell_width:= 0;

for i:= 1 et merge_area.Columns.Count do // Hankige ühendatud vahemiku kõigi veergude kogulaius cell_width:= cell_width + merge_area.Columns[i].ColumnWidth;

// Lahtrite ühendamise tühistamine merge_area.UnMerge;

// Määrake huvipakkuva lahtri laius võrdseks kogulaiusega FXlsApp.Range["D5"].ColumnWidth:= cell_width;

// Helista standardmeetod rea kõrguse automaatne sobitamine FXlsApp.Rows.EntireRow.AutoFit;

// Tagastab huvipakkuva lahtri algse laiuse FXlsApp.Range["D5"].ColumnWidth:= cell_width;

// Liimige vahemik uuesti kokku merge_area.Merge; lõpp;

Kuidas saada kasutatud rakuvahemikku?
Tulemus:= exApp.ActiveSheet.UsedRange;

Kuidas saada veergu tähte indeksi järgi?

Kasutab matemaatikat; *** funktsioon ColIdxToStr(const Col: integer): string const CharsCount: täisarv = 26;

Nihe: täisarv = 64; var Rank: bait;

Col, Tmp: täisarv; algus Tulemus:= "";

samas kui veerg > 0 algab Rank:= 0; Tmp:=Col; while Tmp > CharsCount ei alga Tmp:= Ceil(Tmp / CharsCount - 1);

Inc(Auaste);

lõpp;

Inc(Auaste);

Tulemus:= Tulemus + Chr(Tmp + nihe);

Col:= Col - Trunc(Power(Tähiarv,Aste)) * Tmp;
lõpp; lõpp;

IN

Excel.DisplayAlerts:=Vale;

Exceli kuvamine või peitmine ekraanil:

Excel.Visible:= Tõene;
Excel.Visible:= Vale;

Prindi sisu aktiivne leht Excel:

Excel.ActiveSheet.PrintOut;

Andmete lugemine/kirjutamine EXCELis

Praeguse Exceli töövihiku lahtrile pääsete juurde järgmiselt.

Excel.Range["b2"]:="Tere!"; // lahtrisse väärtuse kirjutamine
s:=Excel.Range["b2"]; // väärtuse lugemine lahtrist

Kus b2 on lahtri aadress.

Või kasutades R1C1 lingi stiili:

Excel.Range]:="Tere!";

Kus on lahtri koordinaat.

üldse, Exceli lahter Saate määrata mis tahes väärtuse (tähemärk, täisarv, murdosa, kuupäev) ja Excel määrab lahtris vaikevormingu.

Vormindage lahtrid EXCELIS

Järgmiseks tööks saate valida (valida) lahtrite rühma järgmiselt:

Excel.Range, Excel.Cells].Select;
// kas
Excel.Range["A1:C5"].Vali;

Sel juhul valitakse ala, mis asub lahtrite A1 ja C5 vahel.

Pärast valiku tegemist saate määrata:
1) Lahtrite ühendamine:

Excel.Selection.MergeCells:=Tõene;

2) Reamurdmine:

Excel.Selection.WrapText:=Tõene;

3) Horisontaalne joondamine:

Excel.Selection.HorizontalAlignment:=3;

Kui see on seatud väärtusele 1, kasutatakse vaikejoondust, kui see on seatud väärtusele 2, on joondus vasakule, 3 on keskel ja 4 on parem. 4) Vertikaalne joondus

Excel.Selection.VerticalAlignment:=1;

Määratud väärtused on samad, mis horisontaalse joonduse puhul.
5) Lahtrite ääris:

Kui see on seatud väärtusele 1, joonistatakse lahtri piirid õhukeste pidevate joontega.
Lisaks saate määrata atribuudi Piirid väärtused, näiteks 3. Seejärel määratakse valikuploki jaoks ainult ülemine piir:

Excel.Selection.Borders.LineStyle:=1;

Piiride vara väärtus täpsustab erinev kombinatsioon raku servad.
Mõlemal juhul saate kasutada väärtusi vahemikus 1 kuni 10.

Paroolide kasutamine EXCELIS

Aktiivsele töövihikule parooli saab määrata järgmiselt.

proovi
// proovige parooli seada
Excel.ActiveWorkbook.protect("pass");
välja arvatud
// toiminguid, kui parooli määramise katse ebaõnnestub
lõpp;

Kus pass on raamatu jaoks määratav parool.

Parooli eemaldamine raamatust on sarnane, kasutage käsku

Excel.ActiveWorkbook.Unprotect("pass");

Exceli töövihiku aktiivse lehe parooli määramine ja eemaldamine toimub käskude abil

Excel.ActiveSheet.protect("pass"); // määrake parool
Excel.ActiveSheet.Unprotect("pass"); // parooli eemaldamine

Kui pass on raamatu kaitsmiseks seatud parool.

Abitoimingud EXCELIS

Ridade kustutamine ülespoole nihutamisega (nende toimingute tegemisel kustutatakse read 5 kuni 15):

Excel.Rows["5:15"].Vali;
Excel.Selection.Delete;

Aktiivsele kinnitatava ala määramine Exceli leht:

// vabastage ala, kui see oli määratud
Excel.ActiveWindow.FreezePanes:=Vale;
// vali soovitud lahter, V antud juhul D3
Excel.Range["D3"].Vali;
// määrake külmutatav ala
Excel.ActiveWindow.FreezePanes:=Tõene;


Tere, selles artiklis räägin teile, kuidas seda oma rakenduses (programmis) kasutada Delfi DB kujul MS Excel. Jah jah täpselt MS Excel. Siin pole midagi keerulist. Esmalt täidame oma lehe MS Excelis. Iga veeru esimene rida võtab alati meie rakenduse veergude nimeks, see tähendab, et see ei võta veergude nimesid nii - A, B, C ja nii edasi. Nii kirjutasin veeru A ja B esimesele reale Täisnimi Ja Hinne vastavalt iga veeru jaoks. Need on meie pealkirjad, siis allpool täitsin andmed, mis minu andmebaasi jäävad, noh, kirjutage ise nimed ja hinnangud. Nii et meie andmebaas on valmis. Nüüd loome sellega ühenduse. luuakse sarnane ühendus MS Access, nii et siin pole midagi keerulist. Vormil on meil vanad komponendid:

  • TDBGrid
  • TADOQuery
  • TADOühendus
  • TDataSource

Ma ütlen teile kiiresti, kuidas neid komponente ühendada, kuna ma olen seda juba öelnud.

  • TADOQuery c TADOühendus kinnisvaras - Ühendus
  • TDataSource Koos TADOQuery kinnisvaras Andmekogum
  • TDBGrid c TDataSource kinnisvaras Andmeallikas

// Helista TADOühendus määrata vara LongPromt V Vale. Tundub väike seadistus tehtud. Nüüd jõuame otsese ühenduseni. Kinnisvaras TADOühendus- ÜhendusString klõpsake nuppu " “, siis on meil vaateaken

Klõpsake nuppu " Ehita..." ja ilmub järgmine aken

Valige selles aknas järgmine pakkuja: Microsoft OLE DB pakkuja ODBC draiveritele ja vajutage nuppu " Edasi >>" ja vaadake järgmist akent

Viige selles aknas kohe kursor " Kasutage ühendusstringi"ja klõpsake nuppu" Kokkupanek“, mille järel ilmub aken

Selles aknas minge vahekaardile Arvuti andmeallikas ja valige kuvatavas loendis - Exceli failid või õigemini klõpsake sellel kuupäeval vasaku nupuga topeltklõps ja kuvatavas aknas märkige tee meie juurde Excel- meie loodud raamat. Pärast seda klõpsake nuppu " Okei". Meil on kõik ühendused valmis. Tahaksin lisada veel, kui teil on fail Excel, kus teie tabel asub programmiga samas kataloogis, seejärel komponendi atribuudis TADOühendus- ÜhendusString teie Exceli faili tee registreeritakse, kustutage tee ja jätke ainult oma nimi Excel faili laiendiga ja atribuudis Vaikeandmebaas sama komponendi kohta, kirjutage oma nimi Excel-fail laiendiga . Seejärel ei esine rakenduse käivitamisel teie andmebaasi valesti määratud teega tõrkeid. Järgmine sisse TDBGrid Teeme sellel topeltklõpsu ja loome ilmuvas aknas 2 rida, need on meie veerud. Ja need luuakse, klõpsates nuppu " Lisa uus (ins)". Järgmisena, valides atribuudis FieldName iga rea, kirjutame esimesele reale - Täisnimi, alates aastast Excel-fail, täpselt nii kirjutasin veeru nime esimesele reale (lahtri jaoks A1 Kirjutasin selle nii) ja tõstes esile teise rea, mis loodi aastal TDBGrid, kinnisvaras Väljanimi kirjutame - Hinne, kuna just mina kirjutasin selle veeru nime (lahtrisse A2 ma kirjutasin selle nii). Nüüd saame oma andmed aktiveerida. Selle sündmuse jaoks põhivormOnCreate kirjutame järgmise

Nagu näete, sama päring, ainult tabeli nime asemel, nagu meil oli MS Access märgime sisse oma lehe nime Excel, lisades selle nurksulgudesse ja lõpetades $ . Nagu näete, pole midagi keerulist. Järgmises artiklis andmebaasi kohta MS Excel Ma ütlen teile, kuidas andmeid sisestada, redigeerida ja nii edasi.

Tahaksin märkida, et kui olete tõeline jalgpalli ja eriti käimasoleva Inglismaa meistrivõistluste fänn hetkel on üks tugevamaid, siis on sul ilmselt suur huvi jalgpalliklubi kohta lugeda

Vaatasime sektis. 6.4.2 raamatutega seotud põhitoimingud. Liigume nüüd raamatulehtedega toimingute juurde. Lehtede kogu sisaldub raamatuobjekti atribuudis Töölehed. See kogu on omadustelt sarnane varem käsitletud kogumiga Töövihikud. Lehele pääseb juurde indeksi või nime järgi. Näiteks järgmised laused, COM-serveritega töötades avage ja aktiveerige töövihiku esimene leht, mida esindab Exceli töövihik 1 objekt, edastage sellele lehele kursor Exceli töölehe 1 muutujale ja aktiveerige leht, st. tõstke see Exceli aknas esile:

ExcelWorksheetl:= ExcelWorkbookl.Worksheets kui ExcelWorksheet; ExcelWorksheetl.Activate(LOCALE_USER_DEFAULT);

ExcelWorksheetl:= Exceli töövihik.Töölehed; ExcelWorksheetl.Activate;

Atribuut Töölehed on olemas ka serveriobjektil. See atribuut kehtib aktiivse töövihiku kohta. Seega teostavad järgmised avaldused COM-serveritega töötades aktiivse töövihikuga toiminguid, avades ja aktiveerides selles lehe, mille nimi (näiteks “Sheet1”) on määratud redigeerimisaknas Redigeerimine:

Töölehed Exceli töölehena; ExcelWorksheetl.Activate(LOCALE USER DEFAULT);

OLE automatiseerimisserveritega töötades näevad sarnased avaldused välja järgmised:

ExcelWorksheetl:= ExcelApplicationl.Worksheets; ExcelWorksheetl.Activate;

Kui leht koos antud nimi ei ole raamatus, tehakse erand. Nii et kui selline oht on olemas, tuleks see erand tabada näiteks järgmiselt:

ExcelWorksheetl:= ExcelApplicationl.

Töölehed Exceli töölehena; ExcelWorksheetl.Activate(LOCALE_USER_DEFAULT); välja arvatud

ShowMessage("Me ei saanud avada lehte "" + Editl.Text + """); lõpp;

Lisa uus leht töövihikusse, kasutades objekti Töölehed meetodit Lisa:

Funktsioon Add(Enne: OleVariant; After: OleVariant; Loendus: OleVariant; Type_: OleVariant; lcid: Integer): IDispatch;

Enne või pärast parameetrid on leheobjekt, mille ees või järel sisestatakse. Tavaliselt piisab, kui seada ainult üks neist parameetritest ja määrata teine ​​EmptyParam. Kui mõlemad parameetrid on võrdsed väärtusega EmptyParam, lisatakse uued lehed aktiivse aktiivse lehe ette. Parameeter Count määrab sisestatavate lehtede arvu. Kui see parameeter on võrdne väärtusega EmptyParam, lisatakse üks leht. Parameeter Type__ määrab sisestamise tüübi. Kui see on seatud väärtusele EmptyParam, lisatakse uus tühi leht.

Näiteks lisab järgmine kood COM-serveritega töötamisel ühe uue töölehe aktiivse töövihiku aktiivse töölehe ette ja suunab sellele kursori ExcelWorksheetli muutujale:

EmptyParam, EmptyParam, EmptyParam, EmptyParam, LOCALE_USER_DEFAULT) Exceli töölehena;

Ja järgmine kood lisab aktiivse töövihiku kolmanda lehe järele kaks uut lehte:

Var After, Num: OleVariant; After:= ExcelApplicationl.Worksheets; Arv:= 2;

ExcelWorksheetl:= ExcelApplicationl.Worksheets.Add(

EmptyParam,After,Num,EmptyParam, LOCALE_USER_DEFAULT) Exceli töölehena;

OLE automatiseerimisserveritega töötades näevad sarnased avaldused välja järgmised:

ExcelWorksheetl:= ExcelApplicationl.Worksheets.Add;

ExcelWorksheetl:= ExcelApplicationl.Worksheets.Add(

After:= ExcelApplicationl.Worksheets, Count:= 2);

Sisestatud lehe või mis tahes olemasoleva lehe nime saab muuta atribuudi Name abil. Näiteks:

ExcelWorksheetl.Name:= "Arve"; Saate lehe töövihikust kustutada kustutamismeetodi abil.

ExcelWorksheetl.Delete(LOCALE_USER_DEFAULT);

Lehte saate printida printimismeetodil, mis ei erine varem raamatu puhul kirjeldatud sarnasest meetodist. Näiteks trükkimine praegune leht COM-serveritega töötades saab selle kujundada järgmiselt:

ExcelWorksheetl:= ExcelApplicationl.ActiveSheet as, ExcelWorksheet; ExcelWorksheetl.Printout(EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, LOCALE_USER_DEFAULT);

OLE automatiseerimisserveritega töötades osutub see lihtsamaks:

ExcelWorksheetl:= ExcelApplicationl.ActiveSheet; ExcelWorksheetl.Printout;

Enne printimist saate lehe eelvaate vaadata, kasutades prindieelvaate meetodit.

Protseduur PrintPreview(EnableChanges: OleVariant; leid: Integer);

Parameeter EnableChanges määrab, kas vaatamise ajal saab muudatusi teha. Näiteks järgmine avaldus näeb ette COM-serveritega töötamisel eelvaade raamatu aktiivne leht:

(ExcelApplicationl.ActiveSheet kui ExcelWorksheet).

Prindieelvaade (tõene, LOCALE_USER_DEFAULT) ;

OLE-serverite puhul näeb sarnane avaldus välja järgmine:

ExcelApplicationl.ActiveSheet;Prindieelvaade(tõene);

Saate peatuda selle mudeli igas etapis ja uurida seda kuude kaupa. Kui on eriline vajadus mingeid lisaomadusi ja meetodeid uurida, tuleme kindlasti tagasi ja uurime. Nüüd alustame Delphis töövihiku lehtedega töötamist.

2. Kuidas aktiveerida Exceli töövihiku lehte?

Nagu teate tühja töövihiku loomisel Excel lisab sellele raamatule automaatselt 3 tühi leht. Konkreetse lehega töötamiseks ( Tööleht või lihtsalt Leht) tuleb see leht aktiveerida. Üks võimalus töövihiku lehe aktiveerimiseks Excel V Delfi näeb välja selline:

sourcestring rsEInvalidSheetIndex = "Töövihikute jaoks on määratud kehtetu indeks. Lehe aktiveerimine katkestati"; rsEInvalidSheetActivate ="Lehe aktiveerimine lõpetati veaga"

; function ActivateSheet(WBIndex: integer ; SheetName: string ) : tõeväärtus ; var i: täisarv ;

algus Tulemus: = false; kui WBIndex › MyExcel. Töövihikud. Loenda ja tõsta Erand. Loo (rsEInvalidSheetIndex) ; proovige i : = 1 MyExcelile. Töövihikud [WBIindex]. Lehed. Loendage, kui AnsiLowerCase (MyExcel. WorkBooks [ WBIndex]. Sheets . Item [ i]. Name ) = AnsiLowerCase (SheetName), seejärel alustage MyExceliga. Töövihikud [WBIindex]. Lehed. Üksus [i]. Aktiveerige;

Tulemus: = tõene;

MyExcel. ActiveWorkBook. Lehed. Üksus [i]. Aktiveerige;

Vaatame nüüd lähemalt, milliseid meetodeid objekt kasutab Tööleht.

3. Exceli töölehe meetodid

Nüüd vaatame objekti üksikasjalikumalt Tööleht.

Joonisel on kujutatud meetodeid, mida olen oma töös kunagi kasutanud.

Kogu objekt Tööleht kogusummad 30 erinevaid meetodeid, mida saate kasutada.

meetod Kirjeldus
Aktiveerige Muudab praeguse lehe aktiivseks. Oleme juba arutanud, kuidas meetod töötab.
arvutab kõik välja avatud raamatud, konkreetne leht raamatus või määratud vahemik rakud lehel
kontrollige valitud lehel õigekirja
salvestab kõik faili muudatused
kustutab praeguse lehe Tööleht
lehe valik
kopeerib lehe töövihiku teise kohta
kleebib lõikepuhvri sisu töölehel
tagastab objekti, mis esindab kas ühte diagrammi (objekt ChartObject Diagrammiobjektid) lehel
lehe liigutamine. See meetod on meetodiga sarnane Kopeeri. Ainus erinevus on see, et pärast kleepimist kustutatakse kopeeritud leht raamatust

Vaatleme nüüd kõiki ülaltoodud meetodeid.

Allpool, nagu väljendus leht peaks välja ulatuma ( Tööleht), kui pole märgitud teisiti.

Arvutusmeetod

Töövihiku, lehe või lahtrite vahemiku arvutamine.

Väärib märkimist, et meetod kõne Arvutage on võimalik mitte ainult Exceli töövihiku konkreetse töölehe jaoks. Vaatame arvutusmeetodi kutsumise võimalusi.

var MyExcel: OleVariant;

MyExcel. Arvutage

allolev koodilõik arvutab aktiivse lehe

MyExcel. ActiveWorkBook. ActiveWork Sheet. Arvutage

Arvutame kõik veergude A, B ja C valemid:

MyExcel. ActiveWorkBook. ActiveWork Sheet. Kasutatud vahemik. Veerud ("A:C"). Arvutage

Õigekirja kontrollimise meetod

Meetodikutse näeb välja selline:. väljendus

Õigekirja kontrollimine (kohandatud sõnastik, suurtähtede ignoreerimine, alati soovitus, õigekiri) väljendus Samal ajal nagu Tööleht).

leht peaks välja ulatuma ( Parameeter Kirjeldus
Tüüp Variant Kohandatud sõnastik Koos
string, mis näitab kasutajasõnastiku faili nime, mida võetakse arvesse, kui seda sõna põhisõnastikust ei leita. Kui see argument välja jäetakse, kasutatakse vaikesõnastikku Variant Ignoreeri suurtähti Tõsi , kui vaja, siis nii et Microsoft Excel Vale vahele jätnud sõnad, mis olid kirjutatud suurtähtedega. selleks, et Microsoft Excel kontrollige kõiki sõnu. Kui see argument välja jätta, siis praegused seaded
Excel. Variant Ignoreeri suurtähti Alati Soovita selleks, et , selleks, et Vale kuvas valesti kirjutatud sõna tuvastamisel muude kirjaviiside soovituste loendi. selleks, et , kuni ootas sisendit. Kui see argument välja jäetakse, kasutatakse praeguseid sätteid.
SpellLang Variant sõnastiku keel. Võib võtta ühe konstandi väärtused MsoLanguageID , näiteks vene keele jaoks SpellLang = 1049, inglise keeles (USA) SpellLang = 1033 jne. Lisateave keeleidentifikaatorite kohta.

Kuidas kontrollida grammatikat Delphis Exceli lehel?

MyExcel. ActiveWorkBook. ActiveWork Sheet. Check Spelling (CustomDictionary:=EmptyParam, IgnoreUppercase:=false, AlwaysSuggest:=EmptyParam, SpellLang:=1033)

antud juhul MS Excel kontrollib praegust lehte, sealhulgas kontrollib sõnu suured tähed. Kinnituskeel on vene keel. Pange tähele, et meetodi kutsumiseks määrasime selgesõnaliselt, millise parameetri väärtuse määrata. Veelgi enam, mis tahes parameetri vahelejätmiseks kasutasime EmptyParam(tühi parameeter), mis on sees Delfi esindab tüüpi muutuja OleVariant.

On selge, et see meetodite kutsumise meetod (koos kõigi parameetrite selgesõnalise näitamisega) ei ole teie jaoks täiesti mugav ja seda ei kasutata inglise keeles programmeerimisel laialdaselt. Delfi , kuid sellest hoolimata on see ainus viis ja mitte muul viisil kasutatud meetodite kutsumiseks Excel .

SaveAs meetod

Exceli töölehe töölehe salvestamine.

Meetodi kõne:

väljend.SalvestaAs(Failinimi, failivorming, parool, parooli kirjutamine, ainult soovituslik, varukoopia loomine, lisaMru, tekstikood, tekstivisuaalne paigutus, kohalik)
leht peaks välja ulatuma ( Parameeter Kirjeldus
Failinimi Variant string, mis tähistab salvestatava faili nime. Tuleb täpsustada täis tee faili, vastasel juhul salvestatakse fail kausta Excel .
Failivorming Variant Salvestamisel kasutatav failivorming. Vaikimisi salvestatakse fail teie valitud vormingus viimane kord V Excel.
Parool Variant faili parool (mitte rohkem kui 15 tähemärki). Parool on tõstutundlik.
WriteResPassword Variant parool, mida kasutatakse töövihikus muudatuste tegemiseks. Kui parooli pole määratud, avatakse raamat kirjutuskaitstud režiimis.
Ainult lugemiseks soovitatav Variant kui parameeter on võrdne Ignoreeri suurtähti, siis ilmub faili avamisel ekraanile teade, mis soovitab faili avada kirjutuskaitstuks.
Loo varukoopia Variant Ignoreeri suurtähti, et luua varukoopiafail
AddToMru Variant Ignoreeri suurtähti, et lisada hiljuti loendisse salvestatud faili nimi failid avada peamenüüs Excel
TextCodepage Ja TextVisualLayout Variant praegu ei kasutata ja säilitatakse tagasiühilduvuse tagamiseks
Kohalik Variant Mitte nõutav parameeter, on vaikimisi võrdne Vale.Tähendus Ignoreeri suurtähti- failide salvestamine Microsofti keel Excel (sh juhtpaneeli seaded).

MyExcel.ActiveWorkBook.ActiveWorkSheet.SaveAs("C\:MyExcelFile.xls")

Sel juhul kasutatakse salvestamisel vaikesätteid.

Kui teil on vaja salvestada Exceli fail teises vormingus, seejärel parameetris Failivorming võite kasutada ühte loenduri väärtustest xlFileFormat . Mõned tähendused xlFileFormat on esitatud allolevas tabelis:

Nimi Tähendus Kirjeldus Faililaiend
xlCSV6 CSV*.csv
xlExcel856 Excel 97-2003 töövihik*.xls
xlHtml44 HTML-vormingus*.htm; *.HTML
xlOpenDocumentSpreadsheet60 OpenDocumenti arvutustabel*.ods
xlOpenXMLWorkbook51 Avage XML-raamat*.xlsx

Kirjutame väikese protseduuri, mis võimaldab salvestada Exceli lehe erinevates vormingutes:

const xlCSV = 6; xlExcel8 = 56; xlHtml = 44;

xlOpenDocumentSpreadsheet = 60 ;

xlOpenXMLWorkbook = 51;

sourcestring rsESaveActiveSheet =

"Aktiivse töölehe salvestamisel tekkis viga"

;

procedúra SaveAs(const AFileName: TFileName; AFileFormat: integer ) ;

Meetodi kõne:

alusta MyExceli proovimist. ActiveWorkBook. ActiveSheet. SaveAs(AFileName, AFileFormat);

välja arvatud tõsta Erand. Loo(rsESaveActiveSheet); lõpp ; lõpp ; Kustuta meetod Kustutage Exceli tööleht.

MyExcel.ActiveWorkBook.WorkSheets.Item.Select

Valib töövihiku kolmanda lehe

Kopeerimismeetod

Kopeerige leht töövihiku teise kohta.

väljendus. Kopeeri (enne, pärast)

Meetodi kõne:

Kui aga kasutate parameetrit

Enne

, siis ei tohiks te seda kasutada

Pärast ja vastupidi. Lubage mul juhtida teie tähelepanu asjaolule, et märgitud on LEHT, mitte lehe register..

Kuidas kopeerida Exceli lehte Delphisse? Diagrammiobjektid

MyExcel.ActiveWorkBook.WorkSheets.Item.Copy(After:=MyExcel.ActiveWorkBook.WorkSheets.Item) ChartObject Sel juhul kopeeritakse ja kleebitakse esimene leht pärast kolmandat. Diagrammiobjektid Kleepimise meetod

Meetodi kõne:

Kleepige lõikepuhvri sisu Exceli lehele.

väljendus. Kleebi (sihtkoht, link)

Kuidas kleepida lõikepuhvri sisu Delphis Exceli lehele?

MyExcel.ActiveWorkBook.ActiveSheet.Paste(Sihtkoht:=MyExcel.ActiveWorkBook.ActiveSheet.Range("D1:D5"))

Sel juhul sisestatakse puhvri sisu veergu D ridadesse 1 kuni 5. Tuleb märkida, et kui puhvri sisu näiteks tingimust ei rahulda, on puhvris ainult 1 number, siis

Lehe liigutamine. See meetod on sarnane . Ainus erinevus on see, et pärast kleepimist kustutatakse kopeeritud leht raamatust.

Siin on osa meetoditest, mida olen kunagi töötamisel kasutanud Excel V Delfi . Üldiselt võib öelda, et sisse Delfi saab kontrollida MS Excel mitte halvem kui selle rakendusega otse töötades, peamine on mitte unustada, milline meetod või omadus mille eest vastutab :). Noh, et mitte unustada, koostasin väikese MindMapi, mida perioodiliselt täiendan ja uuendan. Lingile klõpsates näete Exceli objekte, nende kasutatavaid meetodeid, meetodi parameetreid ja nende tüüpe vastavalt Delphi tüübid. Üldiselt väike graafiline petuleht neile, kellele meeldib Delphis Excelis nokitseda.