HotXLS dokumentacija

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

TXLSFormulaTokenKind, Opcode, BaseOpcode, TokenClass, RawBytes, TextValue, NumberValue, IntegerValue, ArgumentCount, ExternSheetIndex, Row1, Col1, Row2, Col2, Row1Relative, Col1Relative, Row2Relative, Col2Relative, ReferenceUsesOffsets, Supported, ArrayRows, ArrayCols, ArrayValueCount ir ArrayValues
TXLSFormulaTokenStreamDecodeBiff, Clone, CloneSyntaxTree, BindContext, CanCompileFor, CanWriteBiffAt, ReplaceReference, Count, Items, Rgce, RgbExtra, BiffWritable ir BiffVersion
TXLSCompiledFormulaCreateTokenStream 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ą

Taip pat žiūrėkite