Dokumentacija HotXLS

Pogon za proračune programa Excel

Pregled

HotXLS uključuje ugrađeni pogon za raščlanjivanje i proračun formula; ovaj pogon programski vrednuje formule ćelija unutar vašeg procesa, eliminišući potrebu za pozivanjem programa Excel ili spoljnih OLE kontrolera radi razrešavanja izračunatih vrednosti radne sveske

Izvršavanje proračuna

Pre snimanja ili izvoza pokrenite potpuno ponovno proračunavanje radne sveske pomoću glavnog interfejsa radne sveske

procedure Calculate;

Pogon podržava standardne matematičke, datumske, logičke, znakovne i statističke porodice funkcija; on uzastopno razrešava zavisnosti ćelija i prati lance referenci kako bi sprečio kružne reference

Kontekstualno izračunavanje formula

TXLSWorksheet i TXLSXWorksheet izlažu EvaluateFormulaAt za izračunavanje teksta formule u izabranom redu i koloni sa numeracijom od jedan, bez upisivanja privremene ćelije i bez menjanja stanja proračuna radne sveske

A1 i R1C1 stilovi referenci, lokalna imena, strukturisane reference, zavisnosti formula, koreni nizova, tipizirane Excel vrednosti grešaka, volatilan status, eksplicitno odobrenje spoljnih referenci, otkazivanje i stabilne kategorije neuspeha dele uobičajeni evaluator radne sveske

CreateFormulaEvaluationTemplate jednom kompajlira nepromenljivo sidro i ponovo ga koristi na ciljnim ćelijama; A1 strukturisane reference osetljive na red cilja razrešavaju se za svaki ciljni kontekst, a ograničenja po pozivu vezuju dužinu formule, broj koraka sintaksnih stavki, dubinu rekurzije i broj bajtova generisanih nizova

Pogledajte Kontekstualno izračunavanje formula za tipove rezultata, podrazumevane budžete, pravila životnog veka i primere za Delphi ili C++Builder

Operatori nad nizovima

Aritmetički, poredbeni i operatori konkatenacije, kao i unarna negacija i procentualni operator, prihvataju izračunate nizove pored skalarnih vrednosti

Skalar se primenjuje na svaki element, a niz od jednog reda ili jedne kolone širi se preko kompatibilne dimenzije; nekompatibilni oblici vraćaju #VALUE!

Greške se zadržavaju u svojim pojedinačnim rezultujućim ćelijama, pa jedno deljenje nulom ili jedan nevažeći element ne odbacuje vrednosti izračunate za preostale ćelije

COMBINA i PERMUTATIONA dele skalarnu i broadcast semantiku nad nizovima, sa skraćenim nenegativnim celobrojnim argumentima i proverom prekoračenja, dok MUNIT vraća kompaktnu dvodimenzionalnu jediničnu matricu tipa Double

FormulaArrayMemoryLimit podrazumevano iznosi 64 MiB i ograničava korisni sadržaj generisanih matrica; MUNIT dodatno proverava preostali prostor za spill radnog lista, umesto da nameće fiksni plafon dimenzija

Provera prisustva formula

ISFORMULA(reference) proverava pripadnost formule bez izračunavanja referencirane ćelije, tako da formula ostaje otkrivena i kada je njen keširani rezultat greška ili prazan znakovni niz

Pravougaoni opseg vraća Bulov niz istog oblika; članovi deljene formule i klasičnih ili XLSX nizovnih formula vraćaju true, dok je ćelija sa formulom samo sidro dinamičkog spill-a

Direktno upisane vrednosti i skalarna definisana imena vraćaju #VALUE!, nevažeće reference zadržavaju #REF!, a generisani Bulovi nizovi ograničeni su pomoću FormulaArrayMemoryLimit

XLSX upisuje _xlfn.ISFORMULA i pri otvaranju vraća ime bez prefiksa, ODS koristi standardnu sintaksu of:=ISFORMULA, a klasični XLS izlaz odbija nepodržanu buduću funkciju pre upisa podataka

Moderne tekstualne funkcije

UNICHAR skraćuje numeričke unose ka nuli i konvertuje validne Unicode skalarne vrednosti u UTF-16, uključujući izlazne parove surogata za dopunske ravni i sve raspone za privatnu upotrebu

Unosi koji su nula ili van opsega vraćaju #VALUE!, dok izolovane surogatne kodne tačke i Unicode noncharacter vrednosti vraćaju #N/A; unosi u obliku opsega i generisanih nizova zadržavaju ove greške po elementu

BAHTTEXT konvertuje konačne brojeve u tekst tajlandskih bahta i satanga, zaokružuje srednje (midpoint) vrednosti od nule na dve decimale, zadržava negativan predznak kada zaokružena veličina postane nula i razvija naučnu notaciju bez sužavanja kroz celobrojni tip

XLSX snima UNICHAR kao _xlfn.UNICHAR i pri ponovnom otvaranju vraća ime bez prefiksa; BAHTTEXT zadržava svoj standardni identitet funkcije i ostaje bez prefiksa u XLS i XLSX formulama

Regresija i predviđanje

LINEST i LOGEST prihvataju jednu ili više kolona ili redova prediktora i vraćaju koeficijente u Excel redosledu, a iza njih opcionu konstantu (intercept)

Kada je argument za statistiku true, obe funkcije vraćaju kompletan rezultat od pet redova sa greškama koeficijenata, statistikama pristajanja, F statistikom, stepenima slobode, regresionim zbirom kvadrata i rezidualnim zbirom kvadrata

TREND i GROWTH koriste isti višepromenljivi model i čuvaju oblik po redu ili koloni datih novih vrednosti prediktora

Klasično XLS ponovno proračunavanje zavisnosti

TXLSWorkbook.Recalculate izgrađuje graf zavisnosti formula pri prvom pozivu i izračunava formule redosledom od prethodnika ka zavisnim ćelijama, a ne po fizičkom redosledu ćelija

Kasniji pozivi ponovo koriste graf i proračunavaju samo tranzitivne zavisne od promenjenih vrednosti, plus volatilne formule; izmene formula, imena, struktura radnog lista i prepisivanja referenci bezbedno poništavaju i ponovo izgrađuju graf

Kružne reference koriste klasična podešavanja radne sveske EnableIteration, MaxIterations i MaxIterationChange, dok UseFullPrecision=False primenjuje prikazanu preciznost brojeva na keširane rezultate i njihova nizvodna izračunavanja

Zavisnosti definisanih imena

Inkrementalno proračunavanje prati imena definisana na nivou radne sveske i radnog lista kroz ugnježdene formule i reference sa više oblasti

Aciklične formule imena daju svoje tačne zavisnosti ćelija, dok se rekurzivni ciklusi imena bezbedno vraćaju na volatilno ponovno proračunavanje

What-If tabele podataka

I klasični XLS i moderni XLSX radni listovi mogu da kreiraju, izračunaju, čitaju, upisuju, kopiraju i strukturno prilagođavaju What-If tabele podataka sa jednom ili sa dve promenljive

function AddDataTable(
  const AResultRange, ARowInputCell, AColumnInputCell: WideString
): TXLSDataTable;

Opseg rezultata sadrži samo izračunate izlazne ćelije, dok formule i probne vrednosti koriste okolne ćelije u istom rasporedu kao Excel

  • Tabela sa unosom po koloni — ostavite ARowInputCell praznim, smestite izvornu formulu iznad svake kolone rezultata, a probne vrednosti levo od redova rezultata
  • Tabela sa unosom po redu — ostavite AColumnInputCell praznim, smestite izvornu formulu levo od svakog reda rezultata, a probne vrednosti iznad kolona rezultata
  • Tabela sa dve promenljive — zadaćete obe ulazne ćelije, smestite izvornu formulu iznad i levo od opsega rezultata, probne vrednosti za unos po redu iznad rezultata, a probne vrednosti za unos po koloni levo
Sheet.Range['B1', 'B1'].Value := 0;
Sheet.Range['D1', 'D1'].Formula := '=B1*2+1';
Sheet.Range['C2', 'C2'].Value := 1;
Sheet.Range['C3', 'C3'].Value := 2;
Sheet.Range['C4', 'C4'].Value := 3;

Table := Sheet.AddDataTable('D2:D4', '', 'B1');
Workbook.Recalculate;

Ovaj primer sa unosom po koloni izračunava 3, 5 i 7 u D2:D4; svaka probna vrednost primenjuje se kroz izolovani kontekst proračuna, pa se formule koje do B1 dolaze indirektno preko drugih ćelija sa formulama ispravno proračunavaju

AddDataTable vraća nil za nevažeći opseg, nevažeću ulaznu referencu ili kada su obe ulazne reference prazne; kolekcija DataTables radnog lista izlaže dobijenu definiciju i njene oznake obrisanih ulaza

Brisanje referencirane ulazne ćelije čuva definiciju tabele i vraća #REF! za njene izlaze, u skladu sa semantikom sačuvane radne sveske

Korisnički definisane funkcije

Proširite pogon formula prilagođenom poslovnom logikom; registrujte svoje funkcije pomoću događaja u nastavku

Opasna spoljna imena i imena makro stila odbijaju se pre nego što se pokrenu argumenti ili obrađivači, osim ako radna sveska ili pojedinačno kontekstualno izračunavanje eksplicitno ne omogući AllowUnsafeFormulaCallbacks