Hoe een Excel-werkblad vanuit Delphi te openen. Excel naar Delphi. Methoden van het WorkSheet-object (blad)

IN deze recensie De basisstructuren waarmee u vanuit DELPHI toegang krijgt tot een Excel-werkmap worden besproken.

Het organiseren van toegang tot het EXCEL-boek

Om met MS Excel in het programma te kunnen communiceren, moet u de ComObj-module gebruiken
gebruikt ComObj;
en declareer een variabele voor toegang tot MS Excel van het volgende type:
var Excel: variant;

In het eenvoudigste geval kan het initialiseren van een Excel-variabele als volgt worden gedaan:
Excel:= CreateOleObject("Excel.Applicatie");

Een nieuw boek maken:
Excel.Werkboeken.Toevoegen;

Opening bestaand boek(waarbij pad het pad is naar het bestand met xls-extensie.):
Excel.Werkboeken.Open;

Een bestaande werkmap openen voor alleen-lezen:
Excel.Werkboeken.Open;

Excel afsluiten:
Excel.ActiveWorkbook.Sluiten;
Excel.Applicatie.Afsluiten;

Blokkeren van Excel-verzoeken (bevestigingen, meldingen), bijvoorbeeld het blokkeren van een verzoek om een ​​bestand op te slaan:
Excel.DisplayAlerts:=Onwaar;

Excel op het scherm weergeven:
Excel.Visible:= Waar;
of verberg:
Excel.Visible:= Onwaar;

De inhoud van het actieve Excel-werkblad afdrukken:
Excel.ActiveSheet.PrintOut;

Gegevens lezen/schrijven in EXCEL

U kunt als volgt toegang krijgen tot een cel in de huidige Excel-werkmap:
Excel.Range["B2"]:="Hallo!";- om een ​​waarde naar een cel te schrijven of
s:=Excel.Bereik["B2"];
- om te lezen,

waarbij B2 het celadres is.
Of gebruik de R1C1-linkstijl: Excel.Range]:="Hallo!";

, waar is de celcoördinaat. Helemaal niet, Excel-cel

U kunt elke waarde toewijzen (teken, geheel getal, breuk, datum) en Excel stelt de standaardopmaak in de cel in.

Cellen opmaken in EXCEL
U kunt als volgt een groep cellen selecteren (selecteren) voor later werk:
Excel.Bereik, Excel.Cellen].Selecteren;
of
Excel.Range["A1:C5"].Selecteer;

in dit geval wordt het gebied tussen de cellen A1 en C5 geselecteerd.
Nadat u de selectie heeft gemaakt, kunt u het volgende instellen:
1) cellen samenvoegen
Excel.Selection.MergeCells:=Waar;
2) woordterugloop
Excel.Selection.WrapText:=Waar;
3) horizontale uitlijning
Excel.Selectie.HorizontaleUitlijning:=3;
Indien ingesteld op 1, wordt de standaarduitlijning gebruikt. Wanneer ingesteld op 2, is de uitlijning links, 3 gecentreerd en 4 rechts.
4) verticale uitlijning
Excel.Selectie.VerticalAlignment:=1;
de toegewezen waarden zijn hetzelfde als de horizontale uitlijning.

5) rand voor cellen
Daarnaast kun je voor de eigenschap Borders waarden opgeven, bijvoorbeeld gelijk aan 3. Dan wordt alleen de bovenrand voor het selectieblok ingesteld:
Excel.Selectie.Borders.LineStyle:=1;
De waarde van de eigenschap Borders specificeert een andere combinatie van celranden.
In beide gevallen kunt u waarden gebruiken in het bereik van 1 tot 10.

Wachtwoorden gebruiken in EXCEL

Een wachtwoord instellen voor de actieve werkmap kunt u als volgt doen:
poging
// probeer een wachtwoord in te stellen
Excel.ActiveWorkbook.protect(“pass”);
behalve
// acties als een poging om een ​​wachtwoord in te stellen mislukt
einde;

waarbij pass het wachtwoord is dat voor het boek moet worden ingesteld.

Het verwijderen van een wachtwoord uit een boek is vergelijkbaar, gebruik de opdracht
Excel.ActiveWorkbook.Unprotect("pass");

Een wachtwoord voor het actieve blad instellen of verwijderen Excel-werkmappen geproduceerd door teams
Excel.ActiveSheet.protect(“pass”); // wachtwoord instellen
Excel.ActiveSheet.Unprotect("pass"); // verwijder wachtwoord

waarbij pass het wachtwoord is dat is ingesteld om het boek te beschermen.

Hulpwerkzaamheden in EXCEL

Rijen verwijderen met shift omhoog:
Excel.Rijen["5:15"].Selecteren;
Excel.Selectie.Verwijderen;

Bij het uitvoeren van deze acties worden de regels 5 t/m 15 verwijderd.

Een vastgezet gebied instellen op actief blad Excel
// maak het gebied vrij als dit is ingesteld
Excel.ActiveWindow.FreezePanes:=False;
// selecteren de gewenste cel, V in dit geval D3
Excel.Range["D3"].Selecteer;
// stel het gebied in dat moet worden bevroren
Excel.ActiveWindow.FreezePanes:=Waar;

Succes!

In deze recensie worden de basisconstructies besproken waarmee u vanuit Delphi toegang krijgt tot een Excel-werkmap.

Het organiseren van toegang tot het EXCEL-boek

Om in een programma met MS Excel te kunnen communiceren, moet u de ComObj-module gebruiken en een variabele declareren om toegang te krijgen tot het MS Excel-varianttype.

gebruikt ComObj;
var Excel: variant;

In het eenvoudigste geval kunt u een Excel-variabele als volgt initialiseren:

Excel:= CreateOleObject("Excel.Applicatie");

Een nieuw boek maken:

Excel.Werkboeken.Toevoegen;

Een bestaand boek openen (waarbij pad het pad is naar het bestand met de xls-extensie):

Excel.Werkboeken.Open;

Een bestaande werkmap openen voor alleen-lezen:

Excel.Werkboeken.Open;

Excel afsluiten:

Excel.ActiveWorkbook.Sluiten;
Excel.Applicatie.Afsluiten;

Blokkeren van Excel-verzoeken (bevestigingen, meldingen), bijvoorbeeld het blokkeren van een verzoek om een ​​bestand op te slaan:

Excel.DisplayAlerts:=Onwaar;

Excel op het scherm tonen of verbergen:

Excel.Visible:= Waar;
Excel.Visible:= Onwaar;

De inhoud van het actieve Excel-werkblad afdrukken:

Excel.ActiveSheet.PrintOut;

Gegevens lezen/schrijven in EXCEL

U kunt als volgt toegang krijgen tot een cel in de huidige Excel-werkmap:

Excel.Range["b2"]:="Hallo!"; // schrijf een waarde naar een cel
s:=Excel.Bereik["b2"]; // waarde uit cel lezen

Waarbij b2 het celadres is.

waarbij B2 het celadres is.

Excel.Range]:="Hallo!";

Waar is de celcoördinaat.

Over het algemeen kunt u elke waarde aan een Excel-cel toewijzen (teken, geheel getal, breuk, datum), en Excel stelt de standaardopmaak in de cel in.

Cellen opmaken in EXCEL

U kunt als volgt een groep cellen selecteren (selecteren) voor later werk:

Excel.Bereik, Excel.Cellen].Selecteren;
// of
Excel.Range["A1:C5"].Selecteer;

In dit geval wordt het gebied tussen de cellen A1 en C5 geselecteerd.

Nadat u de selectie heeft gemaakt, kunt u het volgende instellen:
1) Cellen samenvoegen:

Excel.Selection.MergeCells:=Waar;

2) Woordterugloop:

Excel.Selection.WrapText:=Waar;

3) Horizontale uitlijning:

Excel.Selectie.HorizontaleUitlijning:=3;

Indien ingesteld op 1, wordt de standaarduitlijning gebruikt. Wanneer ingesteld op 2, is de uitlijning links, 3 gecentreerd en 4 rechts. 4) Verticale uitlijning

Excel.Selectie.VerticalAlignment:=1;

De toegewezen waarden zijn hetzelfde als de horizontale uitlijning.
5) Rand voor cellen:

Wanneer ingesteld op 1, worden celranden getekend met dunne, ononderbroken lijnen.
Daarnaast kun je voor de eigenschap Borders waarden opgeven, bijvoorbeeld gelijk aan 3. Dan wordt alleen de bovenrand voor het selectieblok ingesteld:

Excel.Selectie.Borders.LineStyle:=1;

De waarde van de eigenschap Borders geeft aan verschillende combinatie cel randen.
In beide gevallen kunt u waarden gebruiken in het bereik van 1 tot 10.

Wachtwoorden gebruiken in EXCEL

Een wachtwoord instellen voor de actieve werkmap kunt u als volgt doen:

poging
// probeer een wachtwoord in te stellen
Excel.ActiveWorkbook.protect(“pass”);
behalve
// acties als een poging om een ​​wachtwoord in te stellen mislukt
einde;

Waar pass het wachtwoord is dat voor het boek moet worden ingesteld.

Het verwijderen van een wachtwoord uit een boek is vergelijkbaar, gebruik de opdracht

Excel.ActiveWorkbook.Unprotect("pass");

Het instellen en verwijderen van een wachtwoord voor het actieve blad van een Excel-werkmap gebeurt met behulp van de opdrachten

Excel.ActiveSheet.protect("pass"); // wachtwoord instellen
Excel.ActiveSheet.Unprotect("pass"); // verwijder wachtwoord

Waar pass is het wachtwoord dat is ingesteld om het boek te beschermen.

Hulpwerkzaamheden in EXCEL

Rijen verwijderen met een opwaartse verschuiving (bij het uitvoeren van deze acties worden rijen 5 t/m 15 verwijderd):

Excel.Rijen["5:15"].Selecteren;
Excel.Selectie.Verwijderen;

Een bevriezingsgebied instellen op het actieve Excel-werkblad:

// maak het gebied vrij als dit is ingesteld
Excel.ActiveWindow.FreezePanes:=False;
// selecteer de gewenste cel, in dit geval D3
Excel.Range["D3"].Selecteer;
// stel het gebied in dat moet worden bevroren
Excel.ActiveWindow.FreezePanes:=Waar;


Werken met Excel van Delphi

In dit artikel laat ik zien hoe je ermee kunt werken MS Excel van Delphi. Dit artikel kan nuttig zijn voor mensen die willen leren hoe ze verschillende kunnen maken Excel-rapporten van programma's die erin zijn geschreven Delphi. Het artikel bevat referentiegegevens die nodig zijn om mee te werken MS-Excel. Hier vindt u informatie over hoe:

Sluit de Excel-interface correct aan en ontkoppel deze;
- Hoe u de lettergrootte, kleur en type kunt wijzigen;
- Hoe u een reeks cellen selecteert, samenvoegt, vult en vermenigvuldigt;
- Hoe u tekst roteert en centreert;
- Hoe celranden te tekenen;
- Hoe u een formule in een cel invoert en nog veel meer...

Dus laten we beginnen...

We gaan door de module heen ComObj, hiervoor in gebruikt moet een module worden toegevoegd ComObj en moduul Excel_TLB(Voor MSExcel 2007).

Gebruikt……, ComObj, Excel_TLB;

Module Excel_TLB bevat het nodige constanten om mee te werken Excel hoef je deze niet aan te sluiten, maar dan zul je handmatig de waarden van alle gebruikte constanten uit deze module moeten invoeren. De waarden van de constanten zijn te vinden in de module of op internet, maar voor verschillende versies MS-Excel ze zijn anders.
Aandacht!!! Module Excel_TLB in andere versies MS-Excel kan anders genoemd worden. Voordat u de module aansluit Excel_TLB, je moet de bibliotheek importeren Excel. Om dit te doen, selecteert u Component->Component importeren->Een typebibliotheek importeren-> wij vinden MS-Excel en volg de instructies.

In de sectie met de beschrijving van de variabelen moeten we beschrijven type variabele Variant of OleVariant om de interface aan te sluiten Excel. Ik heb de variabele beschreven excelleren.

Formulier1: TForm1;
excelleren : variant;// Variabele waarin het object wordt gemaakt EXCEL

Een document maken

Aandacht!!! Telkens wanneer u een interfaceobject maakt, verpakt u de aanmaakprocedure in een foutafhandelingsmodule:
poging
maak een interface;
een rapport genereren;
laat de interface los;
Behalve
omgaan met fouten;
laat de interface los;
einde;

poging
// maak een EXCEL-object

// Om de vraag over het opslaan van het document niet te stellen
excel.DisplayAlerts:= vals;

// creëren nieuw document werkboek
excel.WorkBooks.Toevoegen;

//of laad het vanuit de programmamap
excel.WorkBooks.Open(GetCurrentDir() + "\report.xls");

( GetCurrentDir() - retourneert het pad naar de map met het programma)

// Maak het zichtbaar deze functie na het debuggen en testen is het beter om het aan het eind te gebruiken, na het genereren van het rapport (dit versnelt het proces van het uitvoeren van gegevens naar het rapport)
excel.Zichtbaar:= waar;

//stel het type formules in het R1C1-formaat in
excel.Application.ReferenceStyle:= xlR1C1;

// stel het formuletype in in A1-formaat
excel.Application.ReferenceStyle:= xlA1;

// Stel de naam in van het eerste en tweede blad
excel.WorkBooks.WorkSheets.Name:= "Rapport1";
excel.WorkBooks.WorkSheets.Name:= "Rapport2";

// stel de getalnotatie in voor de getalnotatie van de eerste en vierde kolom
excel.WorkBooks.WorkSheets.Columns.NumberFormat:= "0,00";
excel.WorkBooks.WorkSheets.Columns.NumberFormat:= "0,0";

// stel de breedte van de eerste en tweede kolom in
excel.WorkBooks.WorkSheets.Columns.ColumnWidth:= 10;
excel.WorkBooks.WorkSheets.Columns.ColumnWidth:= 20;

// stel de stijl, kleur, grootte en lettertype in voor de eerste rij
excel.WorkBooks.WorkSheets.Rows.Font.Bold:= Waar; //vet
excel.WorkBooks.WorkSheets.Rows.Font.Color:= clRed; // kleur rood
excel.WorkBooks.WorkSheets.Rows.Font.Size:= 12; //maat 12
excel.WorkBooks.WorkSheets.Rows.Font.Name:= "Times New Roman"; // lettertype

// celwaarden 1.4 en 2.4 toewijzen (1 - rij, 4 - kolom)
excel.WorkBooks.WorkSheets.Cells := "En op deze manier kunt u een waarde in de cel invoeren";
excel.WorkBooks.WorkSheets.Cells := "En op deze manier kunt u een waarde in de cel invoeren";

//voer de formule "=b5+c4" in cel "A12" in
excel.WorkBooks.WorkSheets.Range["A12"].Formule:="=b5+c4";

// Lijn de eerste rij verticaal uit met het midden
excel.WorkBooks.WorkSheets.Rows.VerticalAlignment:= xlCenter;

// Lijn de eerste rij horizontaal uit met het midden
excel.WorkBooks.WorkSheets.Rows.HorizontalAlignment:= xlCenter;

// Lijn de cel links uit
excel.WorkBooks.WorkSheets.Cells.HorizontalAlignment:= xlLeft;

// Lijn de cel naar rechts uit
excel.WorkBooks.WorkSheets.Cells.HorizontalAlignment:= xlRight;

// Cellen samenvoegen "A1:A8"
excel.WorkBooks.WorkSheets.Range["A1:A8"].Samenvoegen;

// Draai de woorden in een hoek van 90 graden voor de tweede rij
excel.WorkBooks.WorkSheets.Rows.Orientatie:= 90;

// Draai de woorden in een hoek van 45 graden voor het celbereik "B3:D3"
excel.WorkBooks.WorkSheets.Range["B3:D3"].Oriëntatie:= 45;

// teken de grenzen van het geselecteerde bereik naar links
excel.Selection.Borders.LineStyle:= xlContinuous; // effen lijnstijl
excel.Selection.Borders.Weight:= xlMedium;// lijndikte

// teken de grenzen van het geselecteerde bereik bovenaan

excel.Selection.Borders.Weight:= xlMedium;

// teken de grenzen van het geselecteerde bereik lager

excel.Selection.Borders.Weight:= xlMedium;

// teken de grenzen van het geselecteerde bereik naar rechts

excel.Selection.Borders.Weight:= xlMedium;

// teken de grenzen van het geselecteerde bereik verticaal naar binnen

excel.Selection.Borders.Weight:= xlMedium;

// teken de grenzen van het geselecteerde bereik horizontaal naar binnen

excel.Selection.Borders.Weight:= xlMedium;

//vul het geselecteerde bereik automatisch in
//vul bijvoorbeeld het gebied van de cellen "A10:C10" met het woord "hallo"
//en vermenigvuldig het met nog eens vijf cellen "A10:C15"

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

//selecteer het celbereik "A10:C10"
excel.WorkBooks.WorkSheets.Range["A10:C10"].Selecteren;

//automatisch vullen (kopiëren) het gebied van cellen "A10:C15" met het geselecteerde bereik
excel.selection.autofill(excel.WorkBooks.WorkSheets.Range["A10:C15"],xlFillDefault);

// schakel waarschuwingen uit om geen vragen te stellen over opslaan en andere
excel.DisplayAlerts:= Onwaar;

// sla het document op Excel-formaat 97-2003
excel.ActiveWorkBook.Saveas(GetCurrentDir() + "\report.xls",xlExcel8);

// sla het document op in het huidige Excel 2007-formaat
excel.ActiveWorkBook.Saveas(GetCurrentDir() + "\report.xlsx");

// sluit alle boeken
excel.Werkboeken.Sluiten;

// sluit Excel
excel.Applicatie.quit;

// maak de interfaces vrij
excel:= Niet toegewezen;

// fouten afhandelen

// sluit alle boeken
excel.Werkboeken.Sluiten;

// sluit Excel
excel.Applicatie.quit;

// maak de interfaces vrij
excel:= Niet toegewezen;
einde;
einde;

Bij het werken met Excel-blad we kunnen de volgende opties gebruiken:
- werk met het gebied Bereik["B3:D3"];
- werk met de cel Cellen waarbij 2 een rij is en 4 een kolom;
- werk met rijen Rijen of een reeks rijen Rijen["1:5"];
- werk met kolommen Kolommen of een reeks kolommen Kolommen["A:I"];

Bereik["A1"] en Cellen betekenen hetzelfde.

Nadat het document is gegenereerd of nadat er een fout is opgetreden, moet u de interfaces correct vrijgeven.
Anders bij het sluiten Excel het verdwijnt van het scherm, maar als je Taakbeheer opent, blijft het daar hangen en of dit proces niet voltooid, dan zullen ze bij elke nieuwe start steeds meer accumuleren totdat de computer begint te bevriezen. Daarom is het absoluut noodzakelijk om alle bijbehorende interfaces vrij te geven Excel met zijn boeken en bladen.

Bijvoorbeeld als volgt:
// sluit alle boeken
excel.Werkboeken.Sluiten;

// sluit Excel
excel.Applicatie.quit;

// maak de interfaces vrij
blad:=Niet toegewezen; //sheet-interface als deze is gemaakt
WorkBook:= Niet toegewezen;//werkmapinterface als deze is gemaakt
excel:= Niet toegewezen;//interface van het voorstel zelf als het is gemaakt

Hieronder ziet u een voorbeeld van de uitvoer in Excel uit Delphi tafels van vermenigvuldiging met gedetailleerd commentaar.

Eenheid Eenheid1;

Gebruik
Windows, berichten, SysUtils, varianten, klassen, afbeeldingen, besturingselementen, formulieren,
Dialogen, comobj, StdCtrls, Excel_TLB;

Type
TForm1 = klasse(TForm)
Knop 1: T-knop;
procedure Button1Click(Afzender: TObject);
privé
(Privéaangiften)
publiek
(Openbare verklaringen)
einde;

Var
Formulier1: TForm1;
excel: variant; // Variabele waarin het EXCEL-object wordt gemaakt
MijnData: variant; // Variabele waarin de tafel van vermenigvuldiging wordt gevormd
i,j:geheel getal;
uitvoering

Procedure TForm1.Button1Click(Afzender: TObject);
beginnen
poging
// EXCEL-object
excel:= CreateOleObject("Excel.Applicatie");
// Om de vraag over het opslaan van het document niet te stellen
excel.DisplayAlerts:= vals;
// nieuw document
excel.WorkBooks.Toevoegen;

//declareer een variantarray
Mijngegevens:= VarArrayCreate(,varVariant);
voor I:= 1 tot 9 doen
voor J:= 1 tot 9 doen
MijnGegevens:=i*j;

// Cellen samenvoegen "A1:I1"
excel.WorkBooks.WorkSheets.Range["A1:I1"].Samenvoegen;
//Schrijf de titel
excel.WorkBooks.WorkSheets.Range["A1"].Value:="Tabellen van vermenigvuldiging";
// Lijn de titel uit in het midden
excel.WorkBooks.WorkSheets.Range["A1"].HorizontalAlignment:= xlCenter;
// stel de breedte van kolommen A in tot I
excel.WorkBooks.WorkSheets.Columns["A:I"].ColumnWidth:= 3;

//selecteer het gebied van de tafel van vermenigvuldiging ["A2:I10"] en teken randen
excel.WorkBooks.WorkSheets.Range["A2:I10"].select;
// teken de grenzen van het geselecteerde bereik naar links
excel.Selection.Borders.LineStyle:= xlContinu; // lijnstijl is effen
excel.Selection.Borders.Weight:= xlThin // lijndikte
// teken de grenzen van het geselecteerde bereik bovenaan
excel.Selection.Borders.LineStyle:= xlContinu;
excel.Selection.Borders.Weight:= xlThin;
// teken de grenzen van het geselecteerde bereik lager
excel.Selection.Borders.LineStyle:= xlContinu;
excel.Selection.Borders.Weight:= xlThin;
//teken de grenzen van het geselecteerde bereik naar rechts
excel.Selection.Borders.LineStyle:= xlContinu;
excel.Selection.Borders.Weight:= xlThin;
// teken de grenzen van het geselecteerde bereik verticaal naar binnen
excel.Selection.Borders.LineStyle:= xlContinu;
excel.Selection.Borders.Weight:= xlThin;
// teken de grenzen van het geselecteerde bereik horizontaal naar binnen
excel.Selection.Borders.LineStyle:= xlContinu;
excel.Selection.Borders.Weight:= xlThin;

//wijs het bereik ["A2:I10"] toe aan de waarden van de variantarray MyData, dit versnelt het werk aanzienlijk dan uitvoer //celgewijs

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

// Maak het zichtbaar
excel.Zichtbaar:= waar;
// maak de interfaces vrij
Mijngegevens:= Niet toegewezen;
excel:= Niet toegewezen;
Behalve
showmessage("Let op! Er is een fout opgetreden tijdens het maken van de MS Excel-applicatie");
// sluit Excel
excel.Applicatie.quit;
// maak de interfaces vrij
Mijngegevens:= Niet toegewezen;
excel:= Niet toegewezen;
einde;
einde;

Bij het schrijven van dit artikel is materiaal van de site gebruikt

Je kunt bij elke fase van dit model stoppen en het maandenlang bestuderen. Als er een speciale behoefte is om aanvullende eigenschappen en methoden te bestuderen, komen we zeker terug om te studeren. Laten we nu aan de slag gaan in Delphi met werkmapbladen.

2. Hoe activeer ik een Excel-werkmapblad?

Zoals u weet bij het maken van een lege werkmap Excel voegt automatisch 3 toe aan dit boek blanco vel. Om met een specifiek blad te werken ( Werkblad of gewoon Laken) dit blad moet geactiveerd zijn. Eén manier om een ​​werkmapblad te activeren Excel V Delphi ziet er zo uit:

resourcestring rsEInvalidSheetIndex = "Ongeldige index opgegeven voor WorkBooks. Bladactivering afgebroken"; rsEInvalidSheetActivate =;

functie ActivateSheet(WBIndex: geheel getal; Bladnaam: string ) : boolean ; var i: geheel getal ; begin Resultaat: = false;

als WBIndex › MijnExcel. Werkboeken. Tel en verhoog de uitzondering. Maken (rsEInvalidSheetIndex); probeer voor i : = 1 naar MyExcel. Werkboeken [WBIndex]. Lakens. Tel als AnsiLowerCase (MyExcel. WorkBooks [ WBIndex]. Spreadsheets . Item [ i]. Naam ) = AnsiLowerCase (Bladnaam) en begin vervolgens met MyExcel. Werkboeken [WBIndex]. Lakens. Artikel[i]. Activeren; Resultaat: = waar;

pauze; einde ; behalve uitzondering verhogen. Maken (rsEInvalidSheetActivate); einde ; einde ; Hier worden de functieparameters ingesteld op de werkmapindex (WBIndex) in de verzameling

Werkboeken

en de naam van het blad. Werkblad.

Als u wilt, kunt u hetzelfde blad per index in de collectie activeren

Werkbladen Werkblad.

- tegelijkertijd is de functie zelf enigszins vereenvoudigd (de voorwaarde voor het controleren van de bladnaam is niet vereist).

Ook als je dat zeker weet Werkblad op dit moment 30 Omdat de werkmap die u nodig hebt actief is, kunt u het gebruik van een extra variabele (werkmapindex WBIndex) vermijden en het blad als volgt activeren:

MijnExcel. ActiefWerkboek. Lakens. Artikel[i]. Activeren; Laten we nu eens nader kijken naar de methoden die door het object worden gebruikt
3. Excel-werkbladmethoden Laten we nu het object in meer detail bekijken
De figuur toont de methoden die ik ooit in mijn werk heb gebruikt. Totaal voorwerp totalen verschillende methoden die u kunt gebruiken. Methode
Beschrijving
Activeren
Maakt het huidige blad actief. Hoe de methode werkt hebben we al besproken. Werkblad
berekent alles
open boeken
, een specifiek blad in een boek, of
opgegeven bereik cellen op een blad controleer de spelling op het geselecteerde blad slaat alle wijzigingen in het bestand op
verwijdert het huidige blad blad selectie kopieert het blad naar een andere locatie in de werkmap

plakt de inhoud van het klembord in een werkblad

retourneert een object dat een enkel diagram vertegenwoordigt (object GrafiekObject GrafiekObjecten Werkblad) op het blad

het blad verplaatsen. Deze methode is vergelijkbaar met de methode

Kopiëren

. Het enige verschil is dat na het plakken het gekopieerde blad uit het boek wordt verwijderd Laten we nu elk van de hierboven gepresenteerde methoden bekijken. Hieronder, als

uitdrukking

het onderstaande codefragment berekent het actieve blad

MijnExcel. ActiefWerkboek. ActiefWerkblad. Berekenen

Laten we alle formules in de kolommen A, B en C berekenen:

MijnExcel. ActiefWerkboek. ActiefWerkblad. Gebruikt bereik. Kolommen("A:C"). Berekenen

Controleer de spellingmethode

De methodeaanroep ziet er als volgt uit:

uitdrukking. CheckSpelling(CustomDictionary, IgnoreHoofdletters, AlwaysSuggest, SpellLang)

Tegelijkertijd, als GrafiekObject het vel moet uitsteken ( Werkblad).

Parameter Type Laten we nu eens nader kijken naar de methoden die door het object worden gebruikt
Aangepastwoordenboek Variant Met een tekenreeks die de naam aangeeft van het gebruikerswoordenboekbestand dat in aanmerking wordt genomen als het woord niet in het hoofdwoordenboek voorkomt. Als dit argument wordt weggelaten, wordt het standaardwoordenboek gebruikt
NegerenHoofdletters Variant WAAR, indien nodig, zodat MicrosoftExcel woorden overgeslagen die in hoofdletters waren geschreven. Vals om te MicrosoftExcel controleer alle woorden. Als dit argument wordt weggelaten, dan huidige instellingen Excel.
Altijd voorstellen Variant WAAR, om te MicrosoftExcel een lijst met suggesties voor andere spellingen weergegeven wanneer een verkeerd gespeld woord werd gedetecteerd. Vals, naar MicrosoftExcel wachtte op input correcte spelling. Als dit argument wordt weggelaten, worden de huidige instellingen gebruikt.
SpelLang Variant woordenboek taal. Kan de waarden van een van de constanten aannemen MsoTaalID , bijvoorbeeld voor de Russische taal SpelLang = 1049, voor Engels (VS) SpelLang = 1033 enz. Meer details over taalidentificaties.

Hoe grammatica controleren op Excel-blad in Delphi?

MijnExcel. ActiefWerkboek. ActiefWerkblad. CheckSpelling(CustomDictionary:=EmptyParam, IgnoreUppercase:=false, AlwaysSuggest:=EmptyParam, SpellLang:=1033)

in dit geval MS-Excel controleert het huidige blad, inclusief het controleren van woorden uit hoofdletters. De verificatietaal is Russisch. Houd er rekening mee dat we, om de methode aan te roepen, expliciet hebben gespecificeerd welke parameter aan welke waarde moet worden toegewezen. Bovendien gebruikten we om elke parameter over te slaan LeegParam(lege parameter), die in staat Delphi is een variabele van het type OleVariant.

Het is duidelijk dat deze methode voor het aanroepen van methoden (met expliciete aanduiding van alle parameters) niet helemaal handig voor u is en niet op grote schaal wordt toegepast bij het programmeren in het Engels. Delphi , maar niettemin is dit de enige manier en geen andere manier om de gebruikte methoden aan te roepen Excel .

SaveAs-methode

Een Excel-werkblad opslaan.

Methodeaanroep:

expression.SaveAs(Bestandsnaam, Bestandsformaat, Wachtwoord, WriteResPassword, ReadOnlyRecommended, CreateBackup, AddToMru, TextCodepage, TextVisualLayout, Lokaal)
Parameter Type Laten we nu eens nader kijken naar de methoden die door het object worden gebruikt
Bestandsnaam Variant een tekenreeks die de naam vertegenwoordigt van het bestand dat moet worden opgeslagen. Moet worden gespecificeerd volledige pad naar het bestand, anders wordt het bestand in de map opgeslagen Excel .
Bestandsformaat Variant Het bestandsformaat dat wordt gebruikt bij het opslaan. Standaard wordt het bestand opgeslagen in het formaat dat u hebt geselecteerd laatste keer V Excel.
Wachtwoord Variant wachtwoord voor het bestand (niet meer dan 15 tekens). Het wachtwoord is hoofdlettergevoelig.
WriteResWachtwoord Variant het wachtwoord dat wordt gebruikt om wijzigingen in de werkmap aan te brengen. Als er geen wachtwoord is opgegeven, wordt het boek geopend in de modus Alleen-lezen.
Alleen-lezenAanbevolen Variant als de parameter gelijk is WAAR Wanneer u een bestand opent, verschijnt er een bericht op het display waarin wordt aanbevolen het bestand te openen voor alleen-lezen.
Maak een back-up Variant WAAR, om een ​​back-upbestand te maken
ToevoegenToMru Variant WAAR, om de naam van het opgeslagen bestand onlangs aan de lijst toe te voegen bestanden openen in het hoofdmenu Excel
Tekstcodepagina En TekstVisueleLay-out Variant momenteel niet gebruikt en behouden voor achterwaartse compatibiliteit
Lokaal Variant Niet vereiste parameter, is standaard gelijk aan Vals.Betekenis WAAR- bestanden opslaan van Microsoft-taal Excel (inclusief configuratiescherminstellingen).

MijnExcel.ActiveWorkBook.ActiveWorkSheet.SaveAs("C\:MijnExcelFile.xls")

In dit geval worden bij het opslaan de standaardinstellingen gebruikt.

Als u wilt opslaan Excel-bestand in een ander formaat en vervolgens in de parameter Bestandsformaat u kunt een van de enumeratorwaarden gebruiken xlBestandsformaat . Enkele betekenissen xlBestandsformaat worden weergegeven in de onderstaande tabel:

Naam Betekenis Laten we nu eens nader kijken naar de methoden die door het object worden gebruikt Bestandsextensie
xlCSV6 CSV*.csv
xlExcel856 Excel 97-2003-werkmap*.xls
xlHtml44 HTML-formaat*.htm; *.HTML
xlOpenDocumentSpreadsheet60 OpenDocument-spreadsheet*.ods
xlOpenXMLWerkboek51 Open XML-boek*.xlsx

Laten we een kleine procedure schrijven waarmee u een Excel-blad in verschillende formaten kunt opslaan:

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

xlOpenDocumentSpreadsheet = 60 ;

xlOpenXMLWerkboek = 51 ;

resourcestring rsESaveActiveSheet =

"Fout bij opslaan actief werkblad"

;

procedure SaveAs(const AFileName: TFileName; AFileFormat: geheel getal ) ;

Methodeaanroep:

probeer MyExcel. ActiefWerkboek. Actief blad. OpslaanAls(AFileName, AFileFormat);

behalve uitzondering verhogen. Maken(rsESaveActiveSheet); einde ; einde ; Methode verwijderen Een Excel-werkblad verwijderen. MijnExcel.ActiveWorkBook.WorkSheets.Item.Select

Hoe Excel-blad naar Delphi kopiëren?

MijnExcel.ActiveWorkBook.WorkSheets.Item.Copy(Na:=MijnExcel.ActiveWorkBook.WorkSheets.Item)

In dit geval wordt het eerste blad gekopieerd en na het derde geplakt.

Plak methode

Plak de inhoud van het klembord in een Excel-werkblad.

Methodeaanroep:

expression.Paste(Bestemming, Link)

Hoe plak ik de inhoud van het klembord in een Excel-blad in Delphi?

MijnExcel.ActiveWorkBook.ActiveSheet.Paste(Bestemming:=MijnExcel.ActiveWorkBook.ActiveSheet.Range("D1:D5"))

In dit geval wordt de inhoud van de buffer ingevoegd in kolom D in de rijen 1 tot en met 5. Opgemerkt moet worden dat als de inhoud van de buffer niet aan de voorwaarde voldoet, er bijvoorbeeld slechts 1 getal in de buffer staat, Dan uitzonderlijke situatie.

Methode controleer de spelling op het geselecteerde blad

Retourneert een object dat een enkel diagram vertegenwoordigt (object cellen op een blad) of de verzameling van alle diagrammen (object controleer de spelling op het geselecteerde blad) op het blad.

Methodeaanroep:

expressie.ChartObjects

Hoe krijg ik een grafiek in een Excel-werkblad in Delphi?

MijnExcel.ActiveWorkBook.ActiveSheet.ChartObjects

In dit geval wordt de eerste ontvangen.

Verplaats methode

Een blad verplaatsen. Deze methode is vergelijkbaar met de . Het enige verschil is dat na het plakken het gekopieerde blad uit het boek wordt verwijderd.

Hier is het deel van de methoden waarmee ik ooit heb gewerkt Excel V Delphi . In het algemeen kan worden gezegd dat in Delphi kan worden gecontroleerd MS-Excel niet slechter dan wanneer je rechtstreeks met deze applicatie werkt, het belangrijkste is om niet te vergeten welke methode of eigenschap waarvoor verantwoordelijk is :). Om het niet te vergeten, heb ik een kleine MindMap gemaakt, die ik regelmatig zal aanvullen en bijwerken. Als je de link volgt, kun je het zien Excel-objecten, door hen gebruikte methoden, parameters van methoden en hun typen in overeenstemming met Delphi-typen. Over het algemeen een klein grafisch spiekbriefje voor degenen die graag aan Excel sleutelen in Delphi.

In dit artikel zullen we kijken naar de basisconstructies waarmee u vanuit Delphi toegang krijgt tot een MS Excel-werkmap.

Het organiseren van toegang tot het EXCEL-boek

Om in het programma met MS Excel te kunnen communiceren, moet u de ComObj-module gebruiken

Gebruikt ComObj;

en declareer een variabele om toegang te krijgen tot MS Excel hierna type:

Var MsExcel: Variant;

In het eenvoudigste geval kan het initialiseren van een Excel-variabele als volgt worden gedaan:

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

Een nieuw boek maken:

MsExcel.Werkboeken.Toevoegen;

Een bestaand boek openen (waarbij pad het pad is naar het bestand met de xls-extensie):

MsExcel.Werkboeken.Open;

Een bestaande werkmap openen voor alleen-lezen:

MsExcel.Werkboeken.Open;

Excel afsluiten:

MsExcel.ActiveWorkbook.Close; MsExcel.Applicatie.Afsluiten;

Blokkeren van MS Excel-verzoeken (bevestigingen, meldingen), bijvoorbeeld het blokkeren van een verzoek om een ​​bestand op te slaan:

MsExcel.DisplayAlerts:=False;

Excel op het scherm weergeven:

MsExcel.Visible:= Waar;

of verberg:

MsExcel.Visible:= Onwaar;

De inhoud van het actieve MS Excel-blad afdrukken:

MsExcel.ActiveSheet.PrintOut;

Gegevens lezen/schrijven in EXCEL

U kunt als volgt toegang krijgen tot een cel in de huidige Excel-werkmap:

Een waarde naar een cel schrijven:

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

Een waarde uit een cel lezen:

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

Waar B2- mobiel adres.

waarbij B2 het celadres is.

MsExcel.Range]:="Hallo!";

Waar - celcoördinaat.

Over het algemeen kunt u elke waarde aan een Excel-cel toewijzen (teken, geheel getal, breuk, datum), en mevrouw Excel zal de standaardopmaak in de cel instellen.

U kunt elke waarde toewijzen (teken, geheel getal, breuk, datum) en Excel stelt de standaardopmaak in de cel in.

U kunt als volgt een groep cellen selecteren (selecteren) voor later werk:

MsExcel.Range, MsExcel.Cells].Selecteren; // of MsExcel.Range["A1:C5"].Selecteer;

in dit geval wordt het gebied tussen de cellen A1 en C5 geselecteerd.

Nadat u een selectie heeft gemaakt, kunt u het samenvoegen van cellen, tekstomloop en horizontale en instellen verticale uitlijning:

// cellen samenvoegen MsExcel.Selection.MergeCells:=True; // inpakken volgens MsExcel.Selection.WrapText:=True; // horizontale uitlijning MsExcel.Selection.HorizontalAlignment:=3; // verticale uitlijning MsExcel.Selection.VerticalAlignment:=1;

Voor verticale en horizontale uitlijning de volgende waarden worden gebruikt:

1 - standaarduitlijning wordt gebruikt
2 - linkeruitlijning
3 - in het midden
4 - aan de rechterkant.

Celgrens

Wanneer ingesteld op 1, worden celranden getekend met dunne, ononderbroken lijnen.

Daarnaast kun je voor de eigenschap Borders waarden opgeven, bijvoorbeeld gelijk aan 3. Dan wordt alleen de bovenrand voor het selectieblok ingesteld:

MsExcel.Selection.Borders.LineStyle:=1;

De waarde van de eigenschap Borders specificeert een andere combinatie van celranden. In beide gevallen kunt u waarden gebruiken in het bereik van 1 tot 10.

Wachtwoorden gebruiken in EXCEL

Een wachtwoord instellen voor de actieve werkmap kunt u als volgt doen:

Probeer // probeer een wachtwoord in te stellen MsExcel.ActiveWorkbook.protect("pass"); behalve // ​​acties als een poging om een ​​wachtwoord in te stellen mislukt;

Waar doorgang- stel een wachtwoord in voor het boek.

Het verwijderen van een wachtwoord uit een boek is vergelijkbaar, gebruik de opdracht

MsExcel.ActiveWorkbook.Unprotect("pass");

Waar doorgang

Het instellen en verwijderen van een wachtwoord voor het actieve blad van een Excel-werkmap gebeurt met behulp van de opdrachten

MsExcel.ActiveSheet.protect(“pass”); // het wachtwoord instellen MsExcel.ActiveSheet.Unprotect("pass"); // verwijder wachtwoord

Waar doorgang- wachtwoord ingesteld om het boek te beschermen.

Hulpwerkzaamheden in EXCEL

Rijen verwijderen met shift omhoog:

MsExcel.Rows["5:15"].Selecteren; MsExcel.Selectie.;

Bij het uitvoeren van deze acties worden de regels 5 t/m 15 verwijderd.

Stel een vriesgebied in op het actieve Excel-werkblad

// maak het gebied vrij als het is ingesteld MsExcel.ActiveWindow.FreezePanes:=False; // selecteer de gewenste cel, in dit geval D3 MsExcel.Range["D3"].Select; // stel het bevriezingsgebied in MsExcel.ActiveWindow.FreezePanes:=True;

Een actieve Excel-werkmap opslaan