Tokeny vzorcov a používateľské funkcie
HotXLS sprístupňuje toky tokenov vzorcov vlastnené volajúcim na bezztrátové skúmanie a chránený spätný zápis v oboch engine zošitov, plus hierarchické registre používateľských funkcií pre vlastný výpočet
Model tokenov
TXLSFormulaTokenClass, TXLSFormulaTokenKind a TXLSFormulaTokenSource klasifikujú každý TXLSFormulaToken a zaznamenávajú, či pochádza z parsovaného textu, klasických BIFF bajtov alebo iného podporovaného zdroja
| TXLSFormulaToken | Kind, Opcode, BaseOpcode, TokenClass, RawBytes, TextValue, NumberValue, IntegerValue, ArgumentCount, ExternSheetIndex, Row1, Col1, Row2, Col2, Row1Relative, Col1Relative, Row2Relative, Col2Relative, ReferenceUsesOffsets, Supported, ArrayRows, ArrayCols, ArrayValueCount a ArrayValues |
| TXLSFormulaTokenStream | DecodeBiff, Clone, CloneSyntaxTree, BindContext, CanCompileFor, CanWriteBiffAt, ReplaceReference, Count, Items, Rgce, RgbExtra, BiffWritable a BiffVersion |
| TXLSCompiledFormula | CreateTokenStream vracia klon toku tokenov kompilovaného vzorca vlastnený volajúcim |
Vstupné body zošita
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 a SetFormulaTokens ponechávajú vlastníctvo explicitné a validujú kontext, verziu BIFF, podporu tokenov, vlastníctvo polí a hranice referencií pred zmenou bunky
Registre používateľských funkcií
TXLSUserFunctionResolver a TXLSUserFunctionRegistry poskytujú vyhľadávanie podľa názvu cez RegisterHandler, UnregisterHandler, Clear, Contains, TryGetHandler a Count
Workbook.RegisterUserFunction('NETMARGIN', CalculateNetMargin);
Workbook.RegisterGlobalUserFunction('FISCALYEAR', CalculateFiscalYear);
try
Workbook.Calculate;
finally
Workbook.UnregisterUserFunction('NETMARGIN');
Workbook.UnregisterGlobalUserFunction('FISCALYEAR');
end;
IXLSWorkbook, TXLSWorkbook a TXLSXWorkbook sprístupňujú RegisterUserFunction, UnregisterUserFunction, ClearUserFunctions, RegisteredUserFunctionCount, RegisterGlobalUserFunction, UnregisterGlobalUserFunction, ClearGlobalUserFunctions a RegisteredGlobalUserFunctionCount
Ekvivalentné vstupné body na úrovni jednotky sú XLSRegisterGlobalUserFunction, XLSUnregisterGlobalUserFunction, XLSClearGlobalUserFunctions, XLSRegisteredGlobalUserFunctionCount a XLSGlobalUserFunctionRegistered
TXLSCalculator.OnUserFunctionResolve sa zúčastňuje pred starším fallbackom udalostí a obslužné rutiny registra sú volané mimo zámku registra, takže obslužná rutina sa môže bezpečne odregistrovať
Diagnostika vzorcov
TXLSXFormulaIssueKind, TXLSXFormulaLocation a TXLSXFormulaIssue vracia TXLSXWorkbook.AnalyzeFormulaIssues pre chýbajúce funkcie, externé referencie a komponenty cyklických závislostí
Skúmanie makro-hárkov
TXLSSheetKind rozlišuje hárok, makro hárok, grafový hárok, modul VBA a neznáme záznamy hárkov cez TXLSWorksheet.SheetKind; TXLSMacroRisk, TXLSMacroCommandInfo a TXLSMacroCommandArray opisujú typované výsledky z TXLSWorksheet.ScanMacroCommands
Zlúčené typy AutoFit a triedenia
TXLSMergedAutoFitStrategy a TXLSXMergedAutoFitStrategy vyberajú prvý, posledný alebo vyvážený rast pre zlúčené rozsahy, zatiaľ čo TXLSSortOrientation, TXLSSortFormulaMode a TXLSSortCompareEvent riadia vertikálne alebo horizontálne stabilné triedenie a pohyb vzorcov