Formulių žetonai ir vartotojo funkcijos
HotXLS atskleidžia skambintojo valdomus formulių žetonų srautus nuostolingam tikrinimui ir saugiam įrašymui atgal abiejuose darbo knygos varikliuose, taip pat hierarchinius vartotojo funkcijų registrus pasirinktiniam skaičiavimui
Žetonų modelis
TXLSFormulaTokenClass, TXLSFormulaTokenKind ir TXLSFormulaTokenSource klasifikuoja kiekvieną TXLSFormulaToken ir įrašo, ar jis atsirado iš išanalizuoto teksto, klasikinių BIFF baitų ar kito palaikomo šaltinio
| TXLSFormulaToken | Kind, Opcode, BaseOpcode, TokenClass, RawBytes, TextValue, NumberValue, IntegerValue, ArgumentCount, ExternSheetIndex, Row1, Col1, Row2, Col2, Row1Relative, Col1Relative, Row2Relative, Col2Relative, ReferenceUsesOffsets, Supported, ArrayRows, ArrayCols, ArrayValueCount ir ArrayValues |
| TXLSFormulaTokenStream | DecodeBiff, Clone, CloneSyntaxTree, BindContext, CanCompileFor, CanWriteBiffAt, ReplaceReference, Count, Items, Rgce, RgbExtra, BiffWritable ir BiffVersion |
| TXLSCompiledFormula | CreateTokenStream grąžina skambintojo valdomą sukompiliuoto formulių žetonų srauto kloną |
Sintaksės medis
CloneSyntaxTree grąžina kviestiejui priklausančią išanalizuotą TXLSSyntaxItem mazgų medį struktūrinei apžiūrai: kiekvienas mazgas praneša savo ItemType, literalius duomenis (Value, IntValue, DecValue), priekinius Spaces, medžio saitas (Parent, Child, ChildCount), nuorodos lapą kaip TXLSRangeItem per Range ir masyvo konstantos duomenis (ArrayRows, ArrayCols, ArrayValueCount bei TXLSArraySerVal įrašus ArrayValues). Medis — atkabota kopija, tad jo apžiūra neliečia darbo knygos sukompiliuotų formulių, o mutacijos nariai (AddChild, PushChild, CopyObject, OffsetCopyReferences, AdjustForShift ir TXLSRangeItem.CopyObject / AdjustForShift) skirti įrankiams, perręšiantiems klonuotą medį prieš pakartotinį kompiliavimą
Darbo knygos įėjimo taškai
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 ir SetFormulaTokens išlaiko aiškią nuosavybę ir patikrina kontekstą, BIFF versiją, žetonų palaikymą, masyvų nuosavybę ir nuorodų ribas prieš pakeičiant langelį
Vartotojo funkcijų registrai
TXLSUserFunctionResolver ir TXLSUserFunctionRegistry pateikia paiešką pagal vardą per RegisterHandler, UnregisterHandler, Clear, Contains, TryGetHandler ir Count
Workbook.RegisterUserFunction('NETMARGIN', CalculateNetMargin);
Workbook.RegisterGlobalUserFunction('FISCALYEAR', CalculateFiscalYear);
try
Workbook.Calculate;
finally
Workbook.UnregisterUserFunction('NETMARGIN');
Workbook.UnregisterGlobalUserFunction('FISCALYEAR');
end;
IXLSWorkbook, TXLSWorkbook ir TXLSXWorkbook atskleidžia RegisterUserFunction, UnregisterUserFunction, ClearUserFunctions, RegisteredUserFunctionCount, RegisterGlobalUserFunction, UnregisterGlobalUserFunction, ClearGlobalUserFunctions ir RegisteredGlobalUserFunctionCount
Lygiaverčiai modulio lygmens įėjimo taškai yra XLSRegisterGlobalUserFunction, XLSUnregisterGlobalUserFunction, XLSClearGlobalUserFunctions, XLSRegisteredGlobalUserFunctionCount ir XLSGlobalUserFunctionRegistered
TXLSCalculator.OnUserFunctionResolve dalyvauja prieš senosios įvykių atsarginės parinkties mechanizmą, o registro tvarkyklės iškviečiamos už registro užrakto ribų, todėl tvarkyklė gali saugiai pati save išregistruoti
Pavojingosios išorinės ir makro stiliaus funkcijų pavadinimais užblokuojami dar prieš argumentų vertinimą ir handlerių paiešką, nebent darbo knygai ar atskiram kontekstiniam vertinimui aiškiai ijungta AllowUnsafeFormulaCallbacks; paprasti naudotojo funkcijų vardai pagal numatymą lieka prieinami
Formulių diagnostika
TXLSXFormulaIssueKind, TXLSXFormulaLocation ir TXLSXFormulaIssue grąžinami TXLSXWorkbook.AnalyzeFormulaIssues dėl trūkstamų funkcijų, išorinių nuorodų ir žiedinės priklausomybės komponentų
Makrokomandų lapų tikrinimas
TXLSSheetKind atskiria darbalapio, makrokomandų lapo, diagramų lapo, VBA modulio ir nežinomo lapo įrašus per TXLSWorksheet.SheetKind; TXLSMacroRisk, TXLSMacroCommandInfo ir TXLSMacroCommandArray apibūdina tipizuotus TXLSWorksheet.ScanMacroCommands rezultatus
Sujungtų langelių AutoFit ir rūšiavimo tipai
TXLSMergedAutoFitStrategy ir TXLSXMergedAutoFitStrategy parenka pirmo, paskutinio ar subalansuoto augimo strategiją sujungtiems intervalams, o TXLSSortOrientation, TXLSSortFormulaMode ir TXLSSortCompareEvent valdo vertikalų ar horizontalų stabilų rūšiavimą ir formulių perkėlimą