HotXLS-dokumentasjon

Formeltokener og brukerfunksjoner

HotXLS eksponerer formeltokenstrømmer eid av den som kaller, for tapsfri inspeksjon og beskyttet tilbakeskriving i begge arbeidsbokmotorene, pluss hierarkiske brukerfunksjonsregistre for egendefinert beregning

Tokenmodell

TXLSFormulaTokenClass, TXLSFormulaTokenKind og TXLSFormulaTokenSource klassifiserer hver TXLSFormulaToken og registrerer om den kom fra tolket tekst, klassiske BIFF-bytes eller en annen støttet kilde

TXLSFormulaTokenKind, Opcode, BaseOpcode, TokenClass, RawBytes, TextValue, NumberValue, IntegerValue, ArgumentCount, FunctionIndex, ExternSheetIndex, Row1, Col1, Row2, Col2, Row1Relative, Col1Relative, Row2Relative, Col2Relative, ReferenceUsesOffsets, Supported, ArrayRows, ArrayCols, ArrayValueCount og ArrayValues
TXLSFormulaTokenStreamDecodeBiff, Clone, CloneSyntaxTree, BindContext, CanCompileFor, CanWriteBiffAt, ReplaceReference, Count, Items, Source, FormulaText, FullyDecoded, Rgce, RgbExtra, BiffWritable og BiffVersion
TXLSCompiledFormulaCreateTokenStream returnerer en klon eid av den som kaller, av den kompilerte formeltokenstrømmen

Syntakstre

CloneSyntaxTree returnerer et tolket tre eid av den som kaller, med TXLSSyntaxItem-noder for strukturell inspeksjon: hver node rapporterer sin ItemType, literalnyttelast (Value, IntValue, DecValue), ledende Spaces, trelenker (Parent, Child, ChildCount), referansebladet som en TXLSRangeItem via Range, og data fra matrisekonstanter (ArrayRows, ArrayCols, ArrayValueCount og TXLSArraySerVal-oppføringene i ArrayValues). Treet er en frakoblet kopi, så en gjennomløping kommer aldri borti arbeidsbokens kompilerte formler, og mutasjonsmedlemmene (AddChild, PushChild, CopyObject, OffsetCopyReferences, AdjustForShift og TXLSRangeItem.CopyObject / AdjustForShift) finnes for verktøy som omskriver et klonet tre før rekompilering

Inngangspunkter i arbeidsboken

Tokens := Worksheet.ParseFormulaTokens('SUM(A1:A4)', 1, 1);
try
  if Tokens.ReplaceReference(OldRef, NewRef) then
    Worksheet.SetFormulaTokens(1, 1, Tokens);
finally
  Tokens.Free;
end;

ParseFormulaTokens, GetFormulaTokens, FormulaTokensToText og SetFormulaTokens holder eierskapet eksplisitt og validerer kontekst, BIFF-versjon, tokenstøtte, matriseeierskap og referansegrenser før en celle endres

Brukerfunksjonsregistre

TXLSUserFunctionResolver og TXLSUserFunctionRegistry gir oppslag etter navn gjennom RegisterHandler, UnregisterHandler, Clear, Contains, TryGetHandler og Count

Workbook.RegisterUserFunction('NETMARGIN', CalculateNetMargin);
Workbook.RegisterGlobalUserFunction('FISCALYEAR', CalculateFiscalYear);
try
  Workbook.Calculate;
finally
  Workbook.UnregisterUserFunction('NETMARGIN');
  Workbook.UnregisterGlobalUserFunction('FISCALYEAR');
end;

IXLSWorkbook, TXLSWorkbook og TXLSXWorkbook eksponerer RegisterUserFunction, UnregisterUserFunction, ClearUserFunctions, RegisteredUserFunctionCount, RegisterGlobalUserFunction, UnregisterGlobalUserFunction, ClearGlobalUserFunctions og RegisteredGlobalUserFunctionCount

De tilsvarende enhetsnivå-inngangspunktene er XLSRegisterGlobalUserFunction, XLSUnregisterGlobalUserFunction, XLSClearGlobalUserFunctions, XLSRegisteredGlobalUserFunctionCount og XLSGlobalUserFunctionRegistered

TXLSCalculator.OnUserFunctionResolve deltar før den eldre hendelsesfallbacken, og registerbehandlere kalles utenfor registerlåsen slik at en behandler trygt kan avregistrere seg selv

Farlige eksterne og makrostilte funksjonsnavn blokkeres før argumentene evalueres og før behandlerslag utføres, med mindre AllowUnsafeFormulaCallbacks er eksplisitt aktivert for arbeidsboken eller den enkelte kontekstuelle evalueringen; vanlige brukerfunksjonsnavn forblir tilgjengelige som standard

Formeldiagnostikk

TXLSXFormulaIssueKind, TXLSXFormulaLocation og TXLSXFormulaIssue returneres av TXLSXWorkbook.AnalyzeFormulaIssues for manglende funksjoner, eksterne referanser og sirkulære avhengighetskomponenter

Inspeksjon av makroark

TXLSSheetKind skiller regneark, makroark, diagramark, VBA-moduler og ukjente arkposter gjennom TXLSWorksheet.SheetKind; TXLSMacroRisk, TXLSMacroCommandInfo og TXLSMacroCommandArray beskriver de typede resultatene fra TXLSWorksheet.ScanMacroCommands

Typer for sammenslått autotilpasning og sortering

TXLSMergedAutoFitStrategy og TXLSXMergedAutoFitStrategy velger første, siste eller balansert vekst for sammenslåtte spenn, mens TXLSSortOrientation, TXLSSortFormulaMode og TXLSSortCompareEvent styrer vertikal eller horisontal stabil sortering og formelflytting

Se også