Tokeni formula i korisničke funkcije
HotXLS izlaže tokove tokena formula u vlasništvu pozivaoca za gubitke bez gubitaka (lossless) i zaštićen povratni upis u oba pogona radne sveske, kao i hijerarhijske registre korisničkih funkcija za prilagođeni proračun
Model tokena
TXLSFormulaTokenClass, TXLSFormulaTokenKindi TXLSFormulaTokenSource klasifikuju svaki TXLSFormulaToken i beleže da li potiče iz raščlanjenog teksta, klasičnih BIFF bajtova ili drugog podržanog izvora
| TXLSFormulaToken | Kind, Opcode, BaseOpcode, TokenClass, RawBytes, TextValue, NumberValue, IntegerValue, ArgumentCount, FunctionIndex, ExternSheetIndex, Row1, Col1, Row2, Col2, Row1Relative, Col1Relative, Row2Relative, Col2Relative, ReferenceUsesOffsets, Supported, ArrayRows, ArrayColsi ArrayValueCount, and ArrayValues |
| TXLSFormulaTokenStream | DecodeBiff, Clone, CloneSyntaxTree, BindContext, CanCompileFor, CanWriteBiffAt, ReplaceReference, Count, Items, Source, FormulaText, FullyDecoded, Rgce, RgbExtra, BiffWritablei BiffVersion |
| TXLSCompiledFormula | CreateTokenStream vraća klon toka tokena kompajlirane formule u vlasništvu pozivaoca |
Sintaksno stablo
CloneSyntaxTree vraća, u vlasništvu pozivaoca, raščlanjeno stablo čvorova TXLSSyntaxItem za strukturni uvid: svaki čvor prijavljuje svoj ItemType, literarni sadržaj (Value, IntValue, DecValue), vodeće Spaces, veze u stablu (Parent, Child, ChildCount), referentni list kao TXLSRangeItem kroz Rangei podatke nizovnih konstanti (ArrayRows, ArrayCols, ArrayValueCounti unose TXLSArraySerVal u ArrayValues). Stablo je odvojena kopija, pa njeno obilaženje nikada ne dodiruje kompajlirane formule radne sveske, a članovi za mutacije (AddChild, PushChild, CopyObject, OffsetCopyReferences, AdjustForShifti TXLSRangeItem.CopyObject / AdjustForShift) postoje za alate koji prepisuju klonirano stablo pre ponovne kompilacije
Ulazne tačke radne sveske
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, FormulaTokensToTexti SetFormulaTokens održavaju eksplicitno vlasništvo i validuju kontekst, BIFF verziju, podršku tokena, vlasništvo niza i granice referenci pre nego što se ćelija promeni
Registri korisničkih funkcija
TXLSUserFunctionResolver i TXLSUserFunctionRegistry pružaju pretragu po imenu kroz RegisterHandler, UnregisterHandler, Clear, Contains, TryGetHandleri Count
Workbook.RegisterUserFunction('NETMARGIN', CalculateNetMargin);
Workbook.RegisterGlobalUserFunction('FISCALYEAR', CalculateFiscalYear);
try
Workbook.Calculate;
finally
Workbook.UnregisterUserFunction('NETMARGIN');
Workbook.UnregisterGlobalUserFunction('FISCALYEAR');
end;IXLSWorkbook, TXLSWorkbooki TXLSXWorkbook izlažu RegisterUserFunction, UnregisterUserFunction, ClearUserFunctions, RegisteredUserFunctionCount, RegisterGlobalUserFunction, UnregisterGlobalUserFunction, ClearGlobalUserFunctionsi RegisteredGlobalUserFunctionCount
Ekvivalentne ulazne tačke na nivou jedinice su XLSRegisterGlobalUserFunction, XLSUnregisterGlobalUserFunction, XLSClearGlobalUserFunctions, XLSRegisteredGlobalUserFunctionCounti XLSGlobalUserFunctionRegistered
TXLSCalculator.OnUserFunctionResolve učestvuje pre nasleđenog povratnog mehanizma događaja, a rukovaoci registra se pozivaju van zaključavanja registra, tako da se rukovalac može bezbedno odjaviti
Opasna spoljna i makro-stila imena funkcija blokiraju se pre procene argumenata i pretrage rukovaoca, osim ako je AllowUnsafeFormulaCallbacks eksplicitno uključen za radnu svesku ili za pojedinačno kontekstualno izračunavanje; obična imena korisničkih funkcija ostaju dostupna po podrazumevanju
Dijagnostika formula
TXLSXFormulaIssueKind, TXLSXFormulaLocationi TXLSXFormulaIssue vraća TXLSXWorkbook.AnalyzeFormulaIssues za funkcije koje nedostaju, spoljne reference i komponente kružnih zavisnosti
Pregled makro radnih listova
TXLSSheetKind razlikuje radni list, makro list, list grafikona, VBA modul i nepoznate zapise radnih listova kroz TXLSWorksheet.SheetKind; TXLSMacroRisk, TXLSMacroCommandInfoi TXLSMacroCommandArray opisuju tipizirane rezultate iz TXLSWorksheet.ScanMacroCommands
Objedinjeni tipovi AutoFit i sortiranja
TXLSMergedAutoFitStrategy i TXLSXMergedAutoFitStrategy biraju prvi, poslednji ili uravnoteženi rast za spojene raspone, dok TXLSSortOrientation, TXLSSortFormulaModei TXLSSortCompareEvent kontrolišu vertikalno ili horizontalno stabilno sortiranje i pomeranje formula