HotXLS-dokumentaatio

Kaavatunnisteet ja käyttäjäfunktiot

HotXLS paljastaa soittajan omistamat kaavatunnistevirrat häviöttömään tarkasteluun ja suojattuun takaisinkirjoitukseen molemmissa työkirjamoottoreissa sekä hierarkkiset käyttäjäfunktiorekisterit mukautettua laskentaa varten

Tunnistemalli

TXLSFormulaTokenClass, TXLSFormulaTokenKind ja TXLSFormulaTokenSource luokittelevat jokaisen TXLSFormulaToken-tunnisteen ja tallentavat, tuliko se jäsennetystä tekstistä, klassisista BIFF-tavuista vai jostakin muusta tuetusta lähteestä

TXLSFormulaTokenKind, Opcode, BaseOpcode, TokenClass, RawBytes, TextValue, NumberValue, IntegerValue, ArgumentCount, FunctionIndex, ExternSheetIndex, Row1, Col1, Row2, Col2, Row1Relative, Col1Relative, Row2Relative, Col2Relative, ReferenceUsesOffsets, Supported, ArrayRows, ArrayCols, ArrayValueCount ja ArrayValues
TXLSFormulaTokenStreamDecodeBiff, Clone, CloneSyntaxTree, BindContext, CanCompileFor, CanWriteBiffAt, ReplaceReference, Count, Items, Source, FormulaText, FullyDecoded, Rgce, RgbExtra, BiffWritable ja BiffVersion
TXLSCompiledFormulaCreateTokenStream palauttaa soittajan omistaman kloonin käännetyistä kaavatunnistevirrasta

Syntaksipuu

CloneSyntaxTree palauttaa soittajan omistaman jäsennetyn TXLSSyntaxItem-solmupuun rakennetarkastusta varten: jokainen solmu ilmoittaa ItemType-tyyppinsä, literaaliarvonsa (Value, IntValue, DecValue), edeltävät Spaces-välilyönnit, puulinkkinsä (Parent, Child, ChildCount), viitalehden TXLSRangeItem-oliona Range-kautta sekä taulukkovakiodatan (ArrayRows, ArrayCols, ArrayValueCount sekä TXLSArraySerVal-alkiot ArrayValuesissa). Puu on irrallinen kopio, joten sen läpikäynti ei koskaan muokkaa työkirjan käännettyjä kaavoja, ja mutaatiojäsenet (AddChild, PushChild, CopyObject, OffsetCopyReferences, AdjustForShift sekä TXLSRangeItem.CopyObject / AdjustForShift) on tehty työkaluja varten, jotka kirjoittavat kloonatun puun uudelleen ennen takaisinkääntämistä

Työkirjan rajapinnat

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 ja SetFormulaTokens pitävät omistajuuden eksplisiittisenä ja validoivat kontekstin, BIFF-version, tunnisteiden tuen, taulukon omistajuuden ja viittausten rajat ennen solun muuttamista

Käyttäjäfunktiorekisterit

TXLSUserFunctionResolver ja TXLSUserFunctionRegistry tarjoavat nimipohjaisen haun RegisterHandler, UnregisterHandler, Clear, Contains, TryGetHandler ja Count -kutsujen kautta

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

IXLSWorkbook, TXLSWorkbook ja TXLSXWorkbook paljastavat RegisterUserFunction, UnregisterUserFunction, ClearUserFunctions, RegisteredUserFunctionCount, RegisterGlobalUserFunction, UnregisterGlobalUserFunction, ClearGlobalUserFunctions ja RegisteredGlobalUserFunctionCount -jäsenet

Vastaavat yksikkötason rajapinnat ovat XLSRegisterGlobalUserFunction, XLSUnregisterGlobalUserFunction, XLSClearGlobalUserFunctions, XLSRegisteredGlobalUserFunctionCount ja XLSGlobalUserFunctionRegistered

TXLSCalculator.OnUserFunctionResolve osallistuu ennen vanhaa tapahtumavarasijärjestelmää, ja rekisterinkäsittelijät kutsutaan rekisterilukon ulkopuolella, jotta käsittelijä voi turvallisesti poistaa itsensä rekisteristä

Vaarallisia ulkoisia ja makotyyppisiä funktioiden nimiä estetään ennen argumenttien evaluointia ja käsittelijähakua, ellei AllowUnsafeFormulaCallbacks ole eksplisiittisesti käytössä työkirjassa tai yksittäisessä kontekstikohtaisessa evaluoinnissa; tavalliset käyttäjäfunktioiden nimet ovat oletuksena edelleen käytettävissä

Kaavadiagnostiikka

TXLSXFormulaIssueKind, TXLSXFormulaLocation ja TXLSXFormulaIssue palauttaa TXLSXWorkbook.AnalyzeFormulaIssues puuttuvien funktioiden, ulkoisten viittausten ja syklisten riippuvuuksien komponenttien osalta

Makrolaskentataulukoiden tarkastelu

TXLSSheetKind erottaa laskentataulukko-, makrolaskentataulukko-, kaaviolaskentataulukko-, VBA-moduuli- ja tuntemattomat laskentataulukkotietueet TXLSWorksheet.SheetKind-ominaisuuden kautta; TXLSMacroRisk, TXLSMacroCommandInfo ja TXLSMacroCommandArray kuvaavat tyypitetyt tulokset TXLSWorksheet.ScanMacroCommands-kutsusta

Yhdistetyt AutoFit- ja lajittelutyypit

TXLSMergedAutoFitStrategy ja TXLSXMergedAutoFitStrategy valitsevat ensimmäisen, viimeisen tai tasapainotetun kasvun yhdistetyille alueille, kun TXLSSortOrientation, TXLSSortFormulaMode ja TXLSSortCompareEvent ohjaavat pystysuuntaista tai vaakasuuntaista vakaata lajittelua ja kaavojen siirtymistä

Katso myös