Документация на HotXLS

Формулни токени и потребителски функции

HotXLS разкрива потоци от формулни токени, притежавани от извикващия код, за загуби на загуби инспекция и защитено записване в двата механизма на работната книга, плюс йерархични регистри на потребителски функции за персонализирани изчисления

Модел на токените

TXLSFormulaTokenClass, TXLSFormulaTokenKind и TXLSFormulaTokenSource класифицират всеки TXLSFormulaToken и записват дали той произхожда от анализиран текст, класически BIFF байтове или друг поддържан източник

TXLSFormulaTokenKind, Opcode, BaseOpcode, TokenClass, RawBytes, TextValue, NumberValue, IntegerValue, ArgumentCount, FunctionIndex, ExternSheetIndex, Row1, Col1, Row2, Col2, Row1Relative, Col1Relative, Row2Relative, Col2Relative, ReferenceUsesOffsets, Supported, ArrayRows, ArrayCols, ArrayValueCount и ArrayValues
TXLSFormulaTokenStreamDecodeBiff, Clone, CloneSyntaxTree, BindContext, CanCompileFor, CanWriteBiffAt, ReplaceReference, Count, Items, Source, FormulaText, FullyDecoded, Rgce, RgbExtra, BiffWritable и BiffVersion
TXLSCompiledFormulaCreateTokenStream връща притежаван от извикващия код клонинг на потока от токени на компилираната формула

Синтактично дърво

CloneSyntaxTree връща анализирано дърво от възли TXLSSyntaxItem, притежавано от извикващия код, за структурна инспекция: всеки възел докладва своя ItemType, литералния payload (Value, IntValue, DecValue), водещите Spaces, връзките в дървото (Parent, Child, ChildCount), референтния лист като TXLSRangeItem чрез Range и данните от константи-масиви (ArrayRows, ArrayCols, ArrayValueCount и записите TXLSArraySerVal в ArrayValues). Дървото е отделено копие, така че обхождането му никога не засяга компилираните формули на работната книга, а членовете за мутиране (AddChild, PushChild, CopyObject, OffsetCopyReferences, AdjustForShift и TXLSRangeItem.CopyObject / AdjustForShift) съществуват за инструменти, които пренаписват клонираното дърво преди повторна компилация

Точки на влизане в работната книга

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 и SetFormulaTokens запазват собствеността изрична и валидират контекста, BIFF версията, поддръжката на токени, собствеността на масивите и границите на препратките, преди клетка да бъде променена

Регистри на потребителски функции

TXLSUserFunctionResolver и TXLSUserFunctionRegistry предоставят търсене по име чрез RegisterHandler, UnregisterHandler, Clear, Contains, TryGetHandler и Count

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

IXLSWorkbook, TXLSWorkbook и TXLSXWorkbook разкриват RegisterUserFunction, UnregisterUserFunction, ClearUserFunctions, RegisteredUserFunctionCount, RegisterGlobalUserFunction, UnregisterGlobalUserFunction, ClearGlobalUserFunctions и RegisteredGlobalUserFunctionCount

Еквивалентните точки на влизане на ниво единица са XLSRegisterGlobalUserFunction, XLSUnregisterGlobalUserFunction, XLSClearGlobalUserFunctions, XLSRegisteredGlobalUserFunctionCount и XLSGlobalUserFunctionRegistered

TXLSCalculator.OnUserFunctionResolve участва преди наследения фолбек на събитията, а обработчиците на регистъра се извикват извън заключването на регистъра, така че обработчик може безопасно да се дерегистрира сам

Опасни външни и макро-подобни имена на функции се блокират преди изчисляването на аргументите и търсенето на обработчик, освен ако AllowUnsafeFormulaCallbacks не е изрично разрешена за работната книга или за отделното контекстуално изчисление; обикновените имена на потребителски функции остават налични по подразбиране

Диагностика на формули

TXLSXFormulaIssueKind, TXLSXFormulaLocation и TXLSXFormulaIssue се връщат от TXLSXWorkbook.AnalyzeFormulaIssues за липсващи функции, външни препратки и компоненти на циклични зависимости

Инспекция на макро листове

TXLSSheetKind различава записите за работен лист, макро лист, лист с диаграми, VBA модул и неизвестен лист чрез TXLSWorksheet.SheetKind; TXLSMacroRisk, TXLSMacroCommandInfo и TXLSMacroCommandArray описват типизираните резултати от TXLSWorksheet.ScanMacroCommands

Обединени типове за автоматично прилягане и сортиране

TXLSMergedAutoFitStrategy и TXLSXMergedAutoFitStrategy избират първи, последен или балансиран растеж за обединени обхвати, докато TXLSSortOrientation, TXLSSortFormulaMode и TXLSSortCompareEvent контролират вертикално или хоризонтално стабилно сортиране и преместването на формули

Свързани теми