HotXLS dokumentáció

Képlettokenek és felhasználói függvények

A HotXLS a hívó tulajdonában lévő képlettoken-adatfolyamokat tesz elérhetővé a veszteségmentes vizsgálathoz és az őrzött visszaíráshoz mindkét munkafüzet-motorban, valamint hierarchikus felhasználói függvény-regisztereket az egyéni számításhoz

Tokenmodell

TXLSFormulaTokenClass, TXLSFormulaTokenKind és TXLSFormulaTokenSource osztályozza az egyes TXLSFormulaToken tokeneket, és rögzíti, hogy azok elemzett szövegből, klasszikus BIFF-bájtokból vagy más támogatott forrásból származnak-e

TXLSFormulaTokenKind, Opcode, BaseOpcode, TokenClass, RawBytes, TextValue, NumberValue, IntegerValue, ArgumentCount, FunctionIndex, ExternSheetIndex, Row1, Col1, Row2, Col2, Row1Relative, Col1Relative, Row2Relative, Col2Relative, ReferenceUsesOffsets, Supported, ArrayRows, ArrayCols, ArrayValueCount és ArrayValues
TXLSFormulaTokenStreamDecodeBiff, Clone, CloneSyntaxTree, BindContext, CanCompileFor, CanWriteBiffAt, ReplaceReference, Count, Items, Source, FormulaText, FullyDecoded, Rgce, RgbExtra, BiffWritable és BiffVersion
TXLSCompiledFormulaCreateTokenStream az összeállított képlet tokentfolyamának hívó tulajdonában lévő klónját adja vissza

Szintaxisfa

A CloneSyntaxTree a hívó tulajdonában lévő, TXLSSyntaxItem csomópontokból álló elemzett fát ad vissza strukturális vizsgálathoz: minden csomópont jelenti az ItemType típust, a literál hasznos adatot (Value, IntValue, DecValue), a vezető Spaces szóközöket, a fa kapcsolatait (Parent, Child, ChildCount), a hivatkozáslevelet TXLSRangeItem-ként a Range-ön keresztül, valamint a tömbkonstans adatait (ArrayRows, ArrayCols, ArrayValueCount, valamint a TXLSArraySerVal bejegyzéseket az ArrayValues gyűjteményben). A fa egy leválasztott másolat, így bejárása soha nem érinti a munkafüzet összeállított képleteit, a módosító tagok (AddChild, PushChild, CopyObject, OffsetCopyReferences, AdjustForShift, valamint a TXLSRangeItem.CopyObject / AdjustForShift) pedig olyan eszközök számára léteznek, amelyek újrafordítás előtt átírják a klónozott fát

Munkafüzet belépési pontjai

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 és SetFormulaTokens explicit módon tartják a tulajdonlást, és a cella módosítása előtt érvényesítik a kontextust, a BIFF-verziót, a tokentámogatást, a tömbök tulajdonlását és a hivatkozási határokat

Felhasználói függvény-regiszterek

TXLSUserFunctionResolver és TXLSUserFunctionRegistry név szerinti keresést biztosít a RegisterHandler, UnregisterHandler, Clear, Contains, TryGetHandler és Count segítségével

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

IXLSWorkbook, TXLSWorkbook és TXLSXWorkbook a RegisterUserFunction, UnregisterUserFunction, ClearUserFunctions, RegisteredUserFunctionCount, RegisterGlobalUserFunction, UnregisterGlobalUserFunction, ClearGlobalUserFunctions és RegisteredGlobalUserFunctionCount tagokat teszik elérhetővé

A megfelelő egységszintű belépési pontok az XLSRegisterGlobalUserFunction, XLSUnregisterGlobalUserFunction, XLSClearGlobalUserFunctions, XLSRegisteredGlobalUserFunctionCount és XLSGlobalUserFunctionRegistered

TXLSCalculator.OnUserFunctionResolve az örökölt esemény-fallback előtt vesz részt, és a regiszterkezelők a regiszter-záron kívül kerülnek meghívásra, így egy kezelő biztonságosan kiregisztrálhatja magát

A veszélyes külső és makrostípusú függvénynevek blokkolva vannak az argumentumkiértékelés és a kezelőkeresés előtt, hacsak a AllowUnsafeFormulaCallbacks nincs explicit módon engedélyezve a munkafüzet vagy az egyedi kontextusfüggő kiértékelés számára; a közönséges felhasználói függvénynevek alapértelmezés szerint továbbra is elérhetők

Képlet-diagnosztika

TXLSXFormulaIssueKind, TXLSXFormulaLocation és TXLSXFormulaIssue a TXLSXWorkbook.AnalyzeFormulaIssues által adódik vissza hiányzó függvények, külső hivatkozások és körkörös függőségi összetevők esetén

Makrolap-vizsgálat

TXLSSheetKind a munkalap-, makrolap-, diagramlap-, VBA-modul- és ismeretlen laprekordokat különbözteti meg a TXLSWorksheet.SheetKind segítségével; a TXLSMacroRisk, TXLSMacroCommandInfo és TXLSMacroCommandArray a TXLSWorksheet.ScanMacroCommands által visszaadott típusos eredményeket írják le

Összevont AutoFit- és rendezéstípusok

TXLSMergedAutoFitStrategy és TXLSXMergedAutoFitStrategy első, utolsó vagy kiegyensúlyozott növekedést választ az összevont tartományokhoz, míg a TXLSSortOrientation, TXLSSortFormulaMode és TXLSSortCompareEvent a függőleges vagy vízszintes stabil rendezést és a képletmozgatást vezérli

Lásd még