Dokumentacija HotXLS

Žetoni formul in uporabniške funkcije

HotXLS izpostavlja tokove žetonov formul v lasti klicatelja za izgubam prijazen pregled in nadzorovano pisanje nazaj v obeh računskih pogonih delovnega zvezka ter hierarhične registre uporabniških funkcij za računanje po meri

Model žetonov

TXLSFormulaTokenClass, TXLSFormulaTokenKindin TXLSFormulaTokenSource razvrstijo vsak TXLSFormulaToken ter zabeležijo, ali izvira iz razčlenjenega besedila, klasičnih bajtov BIFF ali drugega podprtega vira

TXLSFormulaTokenKind, Opcode, BaseOpcode, TokenClass, RawBytes, TextValue, NumberValue, IntegerValue, ArgumentCount, FunctionIndex, ExternSheetIndex, Row1, Col1, Row2, Col2, Row1Relative, Col1Relative, Row2Relative, Col2Relative, ReferenceUsesOffsets, Supported, ArrayRows, ArrayCols, ArrayValueCountin ArrayValues
TXLSFormulaTokenStreamDecodeBiff, Clone, CloneSyntaxTree, BindContext, CanCompileFor, CanWriteBiffAt, ReplaceReference, Count, Items, Source, FormulaText, FullyDecodedin Rgce, RgbExtra, BiffWritable, and BiffVersion
TXLSCompiledFormulaCreateTokenStream vrne klon toka žetonov prevedene formule v lasti klicatelja

Syntax tree

CloneSyntaxTree returns a caller-owned parsed tree of TXLSSyntaxItem vozlišča za strukturni pregled: vsako vozlišče poroča svoj ItemType, literal payload (Value, IntValue, DecValue), leading Spaces, tree links (Parent, Child, ChildCount), the reference leaf as a TXLSRangeItem through Range, and array-constant data (ArrayRows, ArrayCols, ArrayValueCount, and the TXLSArraySerVal entries in ArrayValues). Drevo je odcepljena kopija, zato prehajanje po njem nikoli ne sega v prevedene formule delovnega zvezka, člani za spremembe (AddChild, PushChild, CopyObject, OffsetCopyReferences, AdjustForShift, and TXLSRangeItem.CopyObject / AdjustForShift) obstajajo za orodja, ki klonirano drevo prepisujejo, preden se ponovno prevede

Vstopne točke delovnega zvezka

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, FormulaTokensToTextin SetFormulaTokens ohranjajo lastništvo eksplicitno ter preverijo kontekst, različico BIFF, podporo žetonom, lastništvo nizov in meje sklicev, preden se celica spremeni

Registri uporabniških funkcij

TXLSUserFunctionResolver in TXLSUserFunctionRegistry omogočata iskanje po imenu prek RegisterHandler, UnregisterHandler, Clear, Contains, TryGetHandlerin Count

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

IXLSWorkbook, TXLSWorkbookin TXLSXWorkbook izpostavljajo RegisterUserFunction, UnregisterUserFunction, ClearUserFunctions, RegisteredUserFunctionCount, RegisterGlobalUserFunction, UnregisterGlobalUserFunction, ClearGlobalUserFunctionsin RegisteredGlobalUserFunctionCount

Enakovredne vstopne točke na ravni enote so XLSRegisterGlobalUserFunction, XLSUnregisterGlobalUserFunction, XLSClearGlobalUserFunctions, XLSRegisteredGlobalUserFunctionCountin XLSGlobalUserFunctionRegistered

TXLSCalculator.OnUserFunctionResolve sodeluje pred zapuščenim povratnim dogodkom, obravnavalniki registrov pa se kličejo zunaj ključavnice registra, tako da se lahko obravnavalnik varno odjavi sam

Nevarna imena zunanjih in makrovrstnih funkcij so blokirana, preden se ovrednotijo argumenti in poišče upravljalec, razen če AllowUnsafeFormulaCallbacks je za delovni zvezek ali posamično kontekstualno vrednotenje izrecno omogočeno; običajna imena uporabniških funkcij ostanejo privzeto na voljo

Diagnostika formul

TXLSXFormulaIssueKind, TXLSXFormulaLocationin TXLSXFormulaIssue vrne TXLSXWorkbook.AnalyzeFormulaIssues za manjkajoče funkcije, zunanje sklice in komponente krožnih odvisnosti

Pregled makro listov

TXLSSheetKind razlikuje zapise delovnega lista, makro lista, grafičnega lista, modula VBA in neznanega lista prek TXLSWorksheet.SheetKind; TXLSMacroRisk, TXLSMacroCommandInfoin TXLSMacroCommandArray opisujejo tipizirane rezultate iz TXLSWorksheet.ScanMacroCommands

Združeni tipi samodejnega prilagajanja in razvrščanja

TXLSMergedAutoFitStrategy in TXLSXMergedAutoFitStrategy izbirata prvo, zadnjo ali uravnoteženo rast za združena območja, medtem ko TXLSSortOrientation, TXLSSortFormulaModein TXLSSortCompareEvent nadzorujejo navpično ali vodoravno stabilno razvrščanje in premikanje formul

Glej tudi