Kuidas muuta Exceli leht aktiivseks delphi xe5. Juurdepääs Excelile Delphist

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:

Vaikeaken 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 uue raamatu või avab varem salvestatud, 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”. (Erinevates versioonides 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;

Aktiivse Exceli töölehe sisu printimine:

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");

Aktiivse lehe parooli määramine või eemaldamine Exceli töövihikud toodetud meeskondade poolt

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;

Aktiivsel Exceli töölehel külmutusala määramiseks tehke järgmist.

// 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;


Delphi EXCELiga töötamine

Selles artiklis näitan teile, kuidas nendega töötada MS Excel Delphist. See artikkel võib olla kasulik inimestele, kes soovivad õppida, kuidas luua erinevaid Exceli aruanded sisse kirjutatud programmidest Delfi. Artikkel sisaldab töötamiseks vajalikke viiteandmeid MS Excel. Siit leiate teavet selle kohta, kuidas:

Ühendage ja lahutage Exceli liides õigesti;
- kuidas muuta fondi suurust, värvi ja tüüpi;
- kuidas valida, liita, täita ja korrutada lahtrivahemikku;
- kuidas teksti pöörata ja tsentreerida;
- kuidas joonistada lahtri piire;
- Kuidas sisestada valem lahtrisse ja palju muud...

Niisiis, alustame...

Töötame läbi mooduli ComObj, selle jaoks sisse kasutab vaja lisada moodul ComObj ja moodul Excel_TLB(Sest MS Excel 2007).

Kasutab……, ComObj, Excel_TLB;

Moodul Excel_TLB sisaldab vajalikku konstandid koos töötada Excel, ei pea te seda ühendama, kuid siis peate käsitsi sisestama selle mooduli kõigi kasutatud konstantide väärtused. Konstantide väärtused leiate moodulist või Internetist, kuid erinevad versioonid MS Excel nad on erinevad.
Tähelepanu!!! Moodul Excel_TLB teistes versioonides MS Excel võib nimetada erinevalt. Enne mooduli ühendamist Excel_TLB, peate raamatukogu importima Excel. Selleks valige Komponent->Impordi komponent->Impordi tüübiteek-> leiame MS Excel ja järgige juhiseid.

Muutujate kirjelduse jaotises peame kirjeldama tüüpi muutuja Variant või OleVariant liidese ühendamiseks Excel. Kirjeldasin muutujat excel.

Vorm1: Tvorm1;
excel : variant;// Muutuja, milles objekt luuakse EXCEL

Dokumendi loomine

Tähelepanu!!! Liideseobjekti loomisel mähkige loomise protseduur veakäsitlusmoodulisse:
proovi
luua liides;
koostada aruanne;
vabastage liides;
Välja arvatud
käsitseda vead;
vabastage liides;
lõpp;

proovi
// looge EXCEL-objekt

// Et mitte esitada küsimust dokumendi salvestamise kohta
excel.DisplayAlerts:= false;

// luua uus dokument töövihik
excel.WorkBooks.Add;

//või laadige see programmi kataloogist
excel.WorkBooks.Open(GetCurrentDir() + "\report.xls");

(GetCurrentDir() - tagastab tee programmiga kataloogi)

// Tee see nähtavaks seda funktsiooni pärast silumist ja testimist on parem seda kasutada lõpus, pärast aruande genereerimist (see kiirendab andmete aruandesse väljastamist)
excel.Visible:= true;

//seadke R1C1 vormingus valemite tüüp
excel.Application.ReferenceStyle:= xlR1C1;

// määrake valemi tüüp formaadis A1
excel.Application.ReferenceStyle:= xlA1;

// Määrake esimese ja teise lehe nimi
excel.WorkBooks.WorkSheets.Name:= "Aruanne1";
excel.WorkBooks.WorkSheets.Name:= "Aruanne2";

//määrab esimese ja neljanda veeru numbrivormingu numbrivormingu
excel.WorkBooks.WorkSheets.Columns.NumberFormat:= "0.00";
excel.WorkBooks.WorkSheets.Columns.NumberFormat:= "0.0";

// määrake esimese ja teise veeru laius
excel.WorkBooks.WorkSheets.Columns.ColumnWidth:= 10;
excel.WorkBooks.WorkSheets.Columns.ColumnWidth:= 20;

// määrake esimese rea stiil, värv, suurus ja fondi tüüp
excel.WorkBooks.WorkSheets.Rows.Font.Bold:= Tõene; //rasvane
excel.WorkBooks.WorkSheets.Rows.Font.Color:= clRed; // värv punane
excel.WorkBooks.WorkSheets.Rows.Font.Size:= 12; //suurus 12
excel.WorkBooks.WorkSheets.Rows.Font.Name:= "Times New Roman"; //font

//määrake lahtri väärtused 1.4 ja 2.4 (1 - rida, 4 - veerg)
excel.WorkBooks.WorkSheets.Cells := "Ja nii saate sisestada lahtrisse väärtuse";
excel.WorkBooks.WorkSheets.Cells := "Ja nii saate sisestada lahtrisse väärtuse";

//valemi "=b5+c4" sisestamine lahtrisse "A12"
excel.WorkBooks.WorkSheets.Range["A12"].Valem:="=b5+c4";

// Joondage esimene rida vertikaalselt keskele
excel.WorkBooks.WorkSheets.Rows.VerticalAlignment:= xlCenter;

// Joondage esimene rida horisontaalselt keskele
excel.WorkBooks.WorkSheets.Rows.HorizontalAlignment:= xlCenter;

// Joondage lahter vasakule
excel.WorkBooks.WorkSheets.Cells.HorizontalAlignment:= xlLeft;

// Joondage lahter paremale
excel.WorkBooks.WorkSheets.Cells.HorizontalAlignment:= xlRight;

// Ühenda lahtrid "A1:A8"
excel.WorkBooks.WorkSheets.Range["A1:A8"].Merge;

// Pöörake teise rea sõnu 90 kraadise nurga all
excel.WorkBooks.WorkSheets.Rows.Orientation:= 90;

// Pöörake sõnu 45-kraadise nurga all lahtrivahemiku "B3:D3" jaoks
excel.WorkBooks.WorkSheets.Range["B3:D3"].Orientatsioon:= 45;

//tõmmake valitud vahemiku piirid vasakule
excel.Selection.Borders.LineStyle:= xlContinuous; // kindla joonega stiil
excel.Selection.Borders.Weight:= xlMedium;// joone paksus

//tõmmake valitud vahemiku ülemise piirid

excel.Selection.Borders.Weight:= xlMedium;

//tõmmake valitud vahemiku piirid madalamale

excel.Selection.Borders.Weight:= xlMedium;

//tõmmake valitud vahemiku piirid paremale

excel.Selection.Borders.Weight:= xlMedium;

//tõmmake valitud vahemiku piirid vertikaalselt sisse

excel.Selection.Borders.Weight:= xlMedium;

//tõmmake valitud vahemiku piirid horisontaalselt sisse

excel.Selection.Borders.Weight:= xlMedium;

//valitud vahemiku automaatne täitmine
//näiteks täitke lahtrite ala "A10:C10" sõnaga "tere"
//ja korrutage see veel viie lahtriga "A10:C15"

excel.WorkBooks.WorkSheets.Range["A10:C10"].Value:="tere";

//valige lahtrite vahemik "A10:C10"
excel.WorkBooks.WorkSheets.Range["A10:C10"].Vali;

//täitke (kopeerige) lahtrite ala "A10:C15" automaatselt valitud vahemikuga
excel.selection.autofill(excel.WorkBooks.WorkSheets.Range["A10:C15"],xlFillDefault);

//Keela hoiatused, et mitte esitada küsimusi salvestamise ja muu kohta
excel.DisplayAlerts:= Vale;

//salvestage dokument asukohta Exceli vorming 97-2003
excel.ActiveWorkBook.Saveas(GetCurrentDir() + "\report.xls",xlExcel8);

//salvestage dokument praeguses Excel 2007 vormingus
excel.ActiveWorkBook.Saveas(GetCurrentDir() + "\report.xlsx");

//sulgege kõik raamatud
excel.Töövihikud.Sule;

//sulgege Excel
excel.Application.quit;

//vabastage liidesed
excel:= Määramata;

//käsitseda vigu

//sulgege kõik raamatud
excel.Töövihikud.Sule;

//sulgege Excel
excel.Application.quit;

//vabastage liidesed
excel:= Määramata;
lõpp;
lõpp;

Töötades koos Exceli leht saame kasutada järgmisi valikuid:
- töötage piirkonnaga ["B3:D3"];
- töötage lahtriga Cells, kus 2 on rida, 4 on veerg;
- töö ridadega Rows või ridade rida Ridad["1:5"];
- töötada veergudega Veerud või veergude vahemikuga Veerud["A:I"];

Vahemik ["A1"] ja lahtrid tähendavad sama asja.

Pärast dokumendi loomist või tõrke ilmnemist peate liidesed õigesti vabastama.
Muidu sulgemisel Excel see kaob ekraanilt, kuid kui avate tegumihalduri, jääb see seal rippuma ja kui seda protsessi ei lõpetata, siis iga uue käivitamisega koguneb neid aina rohkem, kuni arvuti hakkab külmuma. Seetõttu on hädavajalik vabastada kõik sellega seotud liidesed Excel oma raamatute ja lehtedega.

Näiteks nii:
//sulgege kõik raamatud
excel.Töövihikud.Sule;

//sulgege Excel
excel.Application.quit;

//vabastage liidesed
sheet:=Määramata; //lehe liides, kui see loodi
WorkBook:= Määramata;//töövihiku liides, kui see on loodud
excel:= Määramata;//pakkumise enda liides, kui see loodi

Allpool on näide sisendi väljundist Excel Delphist üksikasjalike kommentaaridega korrutustabelid.

Ühik Ühik1;

Kasutab
Windows, sõnumid, SysUtils, variandid, klassid, graafika, juhtnupud, vormid,
Dialoogid, comobj, StdCtrls, Excel_TLB;

Tüüp
Tvorm1 = klass (Tvorm)
Nupp1: TButton;
protseduur Button1Click(Saatja: TOobject);
privaatne
(eraavaldused)
avalik
(Avalikud deklaratsioonid)
lõpp;

Var
Vorm1: Tvorm1;
excel:variant; // Muutuja, milles EXCEL-objekt luuakse
MyData: variant; // Muutuja, milles korrutustabel moodustatakse
i,j:täisarv;
rakendamine

Protseduur Tvorm1.Button1Click(Saatja: TObject);
alustada
proovi
// EXCEL-objekt
excel:= CreateOleObject("Excel.Application");
// Et mitte esitada küsimust dokumendi salvestamise kohta
excel.DisplayAlerts:= false;
// uus dokument
excel.WorkBooks.Add;

//variandi massiivi deklareerimine
MyData:= VarArrayCreate(,variant);
I jaoks:= 1 kuni 9 teha
J jaoks: = 1 kuni 9 teha
Minu andmed:=i*j;

// Ühenda lahtrid "A1:I1"
excel.WorkBooks.WorkSheets.Range["A1:I1"].Merge;
//Kirjuta pealkiri
excel.WorkBooks.WorkSheets.Range["A1"].Value:="Korrutustabelid";
// Joondage pealkiri keskele
excel.WorkBooks.WorkSheets.Range["A1"].HorizontalAlignment:= xlCenter;
// määrake veergude laius A kuni I
excel.WorkBooks.WorkSheets.Columns["A:I"].ColumnWidth:= 3;

//valige korrutustabeli ala ["A2:I10"] ja joonista piirid
excel.WorkBooks.WorkSheets.Range["A2:I10"].select;
//tõmmake valitud vahemiku piirid vasakule
excel.Selection.Borders.LineStyle:= xlContinuous; // rea stiil on kindel
excel.Selection.Borders.Weight:= xlThin // joone paksus
//tõmmake valitud vahemiku ülemise piirid
excel.Selection.Borders.LineStyle:= xlContinuous;
excel.Selection.Borders.Weight:= xlThin;
//tõmmake valitud vahemiku piirid madalamale
excel.Selection.Borders.LineStyle:= xlContinuous;
excel.Selection.Borders.Weight:= xlThin;
//tõmmake valitud vahemiku piirid paremale
excel.Selection.Borders.LineStyle:= xlContinuous;
excel.Selection.Borders.Weight:= xlThin;
//tõmmake valitud vahemiku piirid vertikaalselt sisse
excel.Selection.Borders.LineStyle:= xlContinuous;
excel.Selection.Borders.Weight:= xlThin;
//tõmmake valitud vahemiku piirid horisontaalselt sisse
excel.Selection.Borders.LineStyle:= xlContinuous;
excel.Selection.Borders.Weight:= xlThin;

//määrake variandi massiivi MyData väärtustele vahemik ["A2:I10"], see kiirendab oluliselt tööd kui väljund //lahtripõhiselt

Excel.WorkBooks.WorkSheets.Range["A2:I10"].Value:=MyData;

// Tee see nähtavaks
excel.Visible:= true;
//vabastage liidesed
MyData:= Määramata;
excel:= Määramata;
Välja arvatud
showmessage("Tähelepanu! MS Exceli rakenduse loomisel ilmnes viga");
//sulgege Excel
excel.Application.quit;
//vabastage liidesed
MyData:= Määramata;
excel:= Määramata;
lõpp;
lõpp;

Selle artikli kirjutamisel kasutati saidi materjali

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; murda; lõpp ;

välja arvatud tõsta Erand. Loo (rsEInvalidSheetActivate) ;

lõpp ; Tööleht.

lõpp ;

Siin on funktsiooni parameetrid seatud kogus olevale töövihiku indeksile (WBIndex). Tööleht.

Töövihikud

ja lehe nimi. Tööleht Soovi korral saate sama lehe kogus indeksi järgi aktiveerida 30 Töölehed

- samal ajal on funktsioon ise veidi lihtsustatud (lehe nime kontrollimise tingimus pole vajalik). Samuti, kui olete selles kindel
hetkel Kuna vajalik töövihik on aktiivne, saate vältida lisamuutuja (töövihiku indeks WBIndex) kasutamist ja aktiveerida lehe järgmiselt:
MyExcel. ActiveWorkBook. Lehed. Üksus [i]. Aktiveerige; Vaatame nüüd lähemalt, milliseid meetodeid objekt kasutab 3. Exceli töölehe meetodid Nüüd vaatame objekti üksikasjalikumalt Joonisel on kujutatud meetodeid, mida olen oma töös kunagi kasutanud.
Kogu objekt
kogusummad
erinevaid meetodeid, mida saate kasutada. Tööleht
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 lehe valik kopeerib lehe töövihiku teise kohta Tööleht kleebib lõikepuhvri sisu töölehel

tagastab objekti, mis esindab kas ühte diagrammi (objekt

ChartObject

Diagrammiobjektid ) lehel 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) lehe valik Samal ajal nagu Tööleht).

leht peaks välja ulatuma ( Parameeter Samuti, kui olete selles kindel
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 vahele jätnud sõnad, mis olid kirjutatud suurtähtedega. Vale 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 vahele jätnud sõnad, mis olid kirjutatud suurtähtedega. kuvas valesti kirjutatud sõna tuvastamisel muude kirjaviiside soovituste loendi. selleks, et , kuni ootas sisenditõige kirjapilt
. Kui see argument välja jäetakse, kasutatakse praeguseid sätteid. Variant SpellLang 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) MS Excel antud juhul 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 Delfi (tühi parameeter), mis on sees OleVariant.

on tüüpi muutuja Delfi 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. Excel .

, kuid sellest hoolimata on see ainus viis ja mitte muul viisil kasutatud meetodite kutsumiseks

SaveAs meetod

Exceli töölehe töölehe salvestamine.

väljend.SalvestaAs(Failinimi, failivorming, parool, parooli kirjutamine, ainult soovituslik, varukoopia loomine, lisaMru, tekstikood, tekstivisuaalne paigutus, kohalik)
leht peaks välja ulatuma ( Parameeter Samuti, kui olete selles kindel
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 Samuti, kui olete selles kindel 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"

;

Kopeerige leht töövihiku teise kohta.

Exceli töölehe töölehe salvestamine.

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

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?

MyExcel.ActiveWorkBook.WorkSheets.Item.Copy(After:=MyExcel.ActiveWorkBook.WorkSheets.Item)

Sel juhul kopeeritakse ja kleebitakse esimene leht pärast kolmandat.

Kleepimise meetod

Kleepige lõikepuhvri sisu Exceli lehele.

Exceli töölehe töölehe salvestamine.

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 erandlik olukord.

meetod avatud raamatud

Tagastab objekti, mis esindab kas ühte diagrammi (objekt arvutab kõik välja) või kõigi diagrammide kogum (objekt avatud raamatud) lehel.

Exceli töölehe töölehe salvestamine.

väljendus.ChartObjects

Kuidas saada Delphis Exceli lehel diagrammi?

MyExcel.ActiveWorkBook.ActiveSheet.ChartObjects

Sel juhul saab kätte esimene.

Liikumise meetod

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.

Selles artiklis vaatleme põhilisi konstruktsioone, mis võimaldavad teil Delphist juurde pääseda MS Exceli töövihikule.

EXCEL-i raamatule juurdepääsu korraldamine

Programmis MS Exceliga suhtlemiseks peate kasutama ComObj moodulit

Kasutab ComObj;

ja deklareerida muutuja juurdepääsuks MS-ile Järgmisena Excel tüüp:

Var MsExcel: Variant;

Lihtsamal juhul saab Exceli muutuja lähtestada järgmiselt:

MsExcel:= CreateOleObject("Excel.Application");

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

MsExcel.Workbooks.Add;

Olemasoleva raamatu avamine (kus tee on xls-laiendiga faili tee):

MsExcel.Workbooks.Open;

lõpp;

MsExcel.Workbooks.Open;

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

MsExcel.ActiveWorkbook.Close; MsExcel.Application.Quit;

Ms Exceli päringute (kinnituste, märguannete) blokeerimine, näiteks faili salvestamise taotluse blokeerimine:

MsExcel.DisplayAlerts:=Vale;

Exceli kuvamine ekraanil:

MsExcel.Visible:= Tõene;

või peida:

MsExcel.Visible:= Vale;

Aktiivse MS Exceli lehe sisu printimine:

MsExcel.ActiveSheet.PrintOut;

Andmete lugemine/kirjutamine EXCELis

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

Lahtrisse väärtuse kirjutamiseks toimige järgmiselt.

MsExcel.Range["B2"]:="Tere!";

Lahtrist väärtuse lugemiseks toimige järgmiselt.

S:=MsExcel.Range["B2"];

Kus B2- raku aadress.

Või kasutades R1C1 lingi stiili:

MsExcel.Range]:="Tere!";

Kus - raku koordinaat.

Üldiselt saate Exceli lahtrile määrata mis tahes väärtuse (tähemärk, täisarv, murdosa, kuupäev) ja Ms Excel määrab lahtris vaikevormingu.

Vormindage lahtrid EXCELIS

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

MsExcel.Range, MsExcel.Cells].Vali; // või MsExcel.Range["A1:C5"].Vali;

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

Pärast valiku tegemist saate määrata lahtrite liitmise, reamurdmise ning horisontaalse ja vertikaalne joondamine:

// lahtrite liitmine MsExcel.Selection.MergeCells:=True; // mähkimine vastavalt MsExcel.Selection.WrapText:=True; // horisontaaljoondus MsExcel.Selection.HorizontalAlignment:=3; // vertikaalne joondus MsExcel.Selection.VerticalAlignment:=1;

Vertikaalsetele ja horisontaalne joondamine kasutatakse järgmisi väärtusi:

1 - kasutatakse vaikejoondust
2 - vasakpoolne joondus
3 - keskel
4 - paremal.

Lahtri piir

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:

MsExcel.Selection.Borders.LineStyle:=1;

Atribuudi Borders väärtus määrab lahtri servade erineva kombinatsiooni. Mõlemal juhul saate kasutada väärtusi vahemikus 1 kuni 10.

Paroolide kasutamine EXCELIS

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

Proovi // proovi määrata parool MsExcel.ActiveWorkbook.protect("pass"); välja arvatud // toimingud, kui parooli seadmise katse ebaõnnestub;

Kus läbida- määrake raamatule parool.

Parooli eemaldamine raamatust on sarnane, kasutage käsku

MsExcel.ActiveWorkbook.Unprotect("pass");

Kus läbida

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

MsExcel.ActiveSheet.protect("pass"); // parooli määramine MsExcel.ActiveSheet.Unprotect("pass"); // parooli eemaldamine

Kus läbida- parool seatud raamatu kaitsmiseks.

Abitoimingud EXCELIS

Ridade eemaldamine nihutusega üles:

MsExcel.Rows["5:15"].Vali; MsExcel.Selection.;

Nende toimingute tegemisel kustutatakse read 5 kuni 15.

Määrake aktiivsel Exceli töölehel külmutusala

// vabastage ala, kui see oli määratud MsExcel.ActiveWindow.FreezePanes:=False; // vali soovitud lahter, antud juhul D3 MsExcel.Range["D3"].Select; // külmutusala määramine MsExcel.ActiveWindow.FreezePanes:=True;

Aktiivse Exceli töövihiku salvestamine