Dokumentacija HotXLS

Tokeni formula i korisničke funkcije

HotXLS izlaže tokove tokena formula u vlasništvu pozivaoca za gubitke bez gubitaka (lossless) i zaštićen povratni upis u oba pogona radne sveske, kao i hijerarhijske registre korisničkih funkcija za prilagođeni proračun

Model tokena

TXLSFormulaTokenClass, TXLSFormulaTokenKindi TXLSFormulaTokenSource klasifikuju svaki TXLSFormulaToken i beleže da li potiče iz raščlanjenog teksta, klasičnih BIFF bajtova ili drugog podržanog izvora

TXLSFormulaTokenKind, Opcode, BaseOpcode, TokenClass, RawBytes, TextValue, NumberValue, IntegerValue, ArgumentCount, FunctionIndex, ExternSheetIndex, Row1, Col1, Row2, Col2, Row1Relative, Col1Relative, Row2Relative, Col2Relative, ReferenceUsesOffsets, Supported, ArrayRows, ArrayColsi ArrayValueCount, and ArrayValues
TXLSFormulaTokenStreamDecodeBiff, Clone, CloneSyntaxTree, BindContext, CanCompileFor, CanWriteBiffAt, ReplaceReference, Count, Items, Source, FormulaText, FullyDecoded, Rgce, RgbExtra, BiffWritablei BiffVersion
TXLSCompiledFormulaCreateTokenStream vraća klon toka tokena kompajlirane formule u vlasništvu pozivaoca

Sintaksno stablo

CloneSyntaxTree vraća, u vlasništvu pozivaoca, raščlanjeno stablo čvorova TXLSSyntaxItem za strukturni uvid: svaki čvor prijavljuje svoj ItemType, literarni sadržaj (Value, IntValue, DecValue), vodeće Spaces, veze u stablu (Parent, Child, ChildCount), referentni list kao TXLSRangeItem kroz Rangei podatke nizovnih konstanti (ArrayRows, ArrayCols, ArrayValueCounti unose TXLSArraySerVal u ArrayValues). Stablo je odvojena kopija, pa njeno obilaženje nikada ne dodiruje kompajlirane formule radne sveske, a članovi za mutacije (AddChild, PushChild, CopyObject, OffsetCopyReferences, AdjustForShifti TXLSRangeItem.CopyObject / AdjustForShift) postoje za alate koji prepisuju klonirano stablo pre ponovne kompilacije

Ulazne tačke radne sveske

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, FormulaTokensToTexti SetFormulaTokens održavaju eksplicitno vlasništvo i validuju kontekst, BIFF verziju, podršku tokena, vlasništvo niza i granice referenci pre nego što se ćelija promeni

Registri korisničkih funkcija

TXLSUserFunctionResolver i TXLSUserFunctionRegistry pružaju pretragu po imenu kroz RegisterHandler, UnregisterHandler, Clear, Contains, TryGetHandleri Count

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

IXLSWorkbook, TXLSWorkbooki TXLSXWorkbook izlažu RegisterUserFunction, UnregisterUserFunction, ClearUserFunctions, RegisteredUserFunctionCount, RegisterGlobalUserFunction, UnregisterGlobalUserFunction, ClearGlobalUserFunctionsi RegisteredGlobalUserFunctionCount

Ekvivalentne ulazne tačke na nivou jedinice su XLSRegisterGlobalUserFunction, XLSUnregisterGlobalUserFunction, XLSClearGlobalUserFunctions, XLSRegisteredGlobalUserFunctionCounti XLSGlobalUserFunctionRegistered

TXLSCalculator.OnUserFunctionResolve učestvuje pre nasleđenog povratnog mehanizma događaja, a rukovaoci registra se pozivaju van zaključavanja registra, tako da se rukovalac može bezbedno odjaviti

Opasna spoljna i makro-stila imena funkcija blokiraju se pre procene argumenata i pretrage rukovaoca, osim ako je AllowUnsafeFormulaCallbacks eksplicitno uključen za radnu svesku ili za pojedinačno kontekstualno izračunavanje; obična imena korisničkih funkcija ostaju dostupna po podrazumevanju

Dijagnostika formula

TXLSXFormulaIssueKind, TXLSXFormulaLocationi TXLSXFormulaIssue vraća TXLSXWorkbook.AnalyzeFormulaIssues za funkcije koje nedostaju, spoljne reference i komponente kružnih zavisnosti

Pregled makro radnih listova

TXLSSheetKind razlikuje radni list, makro list, list grafikona, VBA modul i nepoznate zapise radnih listova kroz TXLSWorksheet.SheetKind; TXLSMacroRisk, TXLSMacroCommandInfoi TXLSMacroCommandArray opisuju tipizirane rezultate iz TXLSWorksheet.ScanMacroCommands

Objedinjeni tipovi AutoFit i sortiranja

TXLSMergedAutoFitStrategy i TXLSXMergedAutoFitStrategy biraju prvi, poslednji ili uravnoteženi rast za spojene raspone, dok TXLSSortOrientation, TXLSSortFormulaModei TXLSSortCompareEvent kontrolišu vertikalno ili horizontalno stabilno sortiranje i pomeranje formula

Vidi takođe