Žetoni formul in uporabniške funkcije
HotXLS izpostavlja tokove žetonov formul v lasti klicatelja za izgubam prijazen pregled in nadzorovano pisanje nazaj v obeh računskih pogonih delovnega zvezka ter hierarhične registre uporabniških funkcij za računanje po meri
Model žetonov
TXLSFormulaTokenClass, TXLSFormulaTokenKindin TXLSFormulaTokenSource razvrstijo vsak TXLSFormulaToken ter zabeležijo, ali izvira iz razčlenjenega besedila, klasičnih bajtov BIFF ali drugega podprtega vira
| TXLSFormulaToken | Kind, Opcode, BaseOpcode, TokenClass, RawBytes, TextValue, NumberValue, IntegerValue, ArgumentCount, FunctionIndex, ExternSheetIndex, Row1, Col1, Row2, Col2, Row1Relative, Col1Relative, Row2Relative, Col2Relative, ReferenceUsesOffsets, Supported, ArrayRows, ArrayCols, ArrayValueCountin ArrayValues |
| TXLSFormulaTokenStream | DecodeBiff, Clone, CloneSyntaxTree, BindContext, CanCompileFor, CanWriteBiffAt, ReplaceReference, Count, Items, Source, FormulaText, FullyDecodedin Rgce, RgbExtra, BiffWritable, and BiffVersion |
| TXLSCompiledFormula | CreateTokenStream vrne klon toka žetonov prevedene formule v lasti klicatelja |
Syntax tree
CloneSyntaxTree returns a caller-owned parsed tree of TXLSSyntaxItem vozlišča za strukturni pregled: vsako vozlišče poroča svoj ItemType, literal payload (Value, IntValue, DecValue), leading Spaces, tree links (Parent, Child, ChildCount), the reference leaf as a TXLSRangeItem through Range, and array-constant data (ArrayRows, ArrayCols, ArrayValueCount, and the TXLSArraySerVal entries in ArrayValues). Drevo je odcepljena kopija, zato prehajanje po njem nikoli ne sega v prevedene formule delovnega zvezka, člani za spremembe (AddChild, PushChild, CopyObject, OffsetCopyReferences, AdjustForShift, and TXLSRangeItem.CopyObject / AdjustForShift) obstajajo za orodja, ki klonirano drevo prepisujejo, preden se ponovno prevede
Vstopne točke delovnega zvezka
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, FormulaTokensToTextin SetFormulaTokens ohranjajo lastništvo eksplicitno ter preverijo kontekst, različico BIFF, podporo žetonom, lastništvo nizov in meje sklicev, preden se celica spremeni
Registri uporabniških funkcij
TXLSUserFunctionResolver in TXLSUserFunctionRegistry omogočata iskanje po imenu prek RegisterHandler, UnregisterHandler, Clear, Contains, TryGetHandlerin Count
Workbook.RegisterUserFunction('NETMARGIN', CalculateNetMargin);
Workbook.RegisterGlobalUserFunction('FISCALYEAR', CalculateFiscalYear);
try
Workbook.Calculate;
finally
Workbook.UnregisterUserFunction('NETMARGIN');
Workbook.UnregisterGlobalUserFunction('FISCALYEAR');
end;IXLSWorkbook, TXLSWorkbookin TXLSXWorkbook izpostavljajo RegisterUserFunction, UnregisterUserFunction, ClearUserFunctions, RegisteredUserFunctionCount, RegisterGlobalUserFunction, UnregisterGlobalUserFunction, ClearGlobalUserFunctionsin RegisteredGlobalUserFunctionCount
Enakovredne vstopne točke na ravni enote so XLSRegisterGlobalUserFunction, XLSUnregisterGlobalUserFunction, XLSClearGlobalUserFunctions, XLSRegisteredGlobalUserFunctionCountin XLSGlobalUserFunctionRegistered
TXLSCalculator.OnUserFunctionResolve sodeluje pred zapuščenim povratnim dogodkom, obravnavalniki registrov pa se kličejo zunaj ključavnice registra, tako da se lahko obravnavalnik varno odjavi sam
Nevarna imena zunanjih in makrovrstnih funkcij so blokirana, preden se ovrednotijo argumenti in poišče upravljalec, razen če AllowUnsafeFormulaCallbacks je za delovni zvezek ali posamično kontekstualno vrednotenje izrecno omogočeno; običajna imena uporabniških funkcij ostanejo privzeto na voljo
Diagnostika formul
TXLSXFormulaIssueKind, TXLSXFormulaLocationin TXLSXFormulaIssue vrne TXLSXWorkbook.AnalyzeFormulaIssues za manjkajoče funkcije, zunanje sklice in komponente krožnih odvisnosti
Pregled makro listov
TXLSSheetKind razlikuje zapise delovnega lista, makro lista, grafičnega lista, modula VBA in neznanega lista prek TXLSWorksheet.SheetKind; TXLSMacroRisk, TXLSMacroCommandInfoin TXLSMacroCommandArray opisujejo tipizirane rezultate iz TXLSWorksheet.ScanMacroCommands
Združeni tipi samodejnega prilagajanja in razvrščanja
TXLSMergedAutoFitStrategy in TXLSXMergedAutoFitStrategy izbirata prvo, zadnjo ali uravnoteženo rast za združena območja, medtem ko TXLSSortOrientation, TXLSSortFormulaModein TXLSSortCompareEvent nadzorujejo navpično ali vodoravno stabilno razvrščanje in premikanje formul