Formeltokener og brukerfunksjoner
HotXLS eksponerer formeltokenstrømmer eid av den som kaller, for tapsfri inspeksjon og beskyttet tilbakeskriving i begge arbeidsbokmotorene, pluss hierarkiske brukerfunksjonsregistre for egendefinert beregning
Tokenmodell
TXLSFormulaTokenClass, TXLSFormulaTokenKind og TXLSFormulaTokenSource klassifiserer hver TXLSFormulaToken og registrerer om den kom fra tolket tekst, klassiske BIFF-bytes eller en annen støttet kilde
| TXLSFormulaToken | Kind, Opcode, BaseOpcode, TokenClass, RawBytes, TextValue, NumberValue, IntegerValue, ArgumentCount, FunctionIndex, ExternSheetIndex, Row1, Col1, Row2, Col2, Row1Relative, Col1Relative, Row2Relative, Col2Relative, ReferenceUsesOffsets, Supported, ArrayRows, ArrayCols, ArrayValueCount og ArrayValues |
| TXLSFormulaTokenStream | DecodeBiff, Clone, CloneSyntaxTree, BindContext, CanCompileFor, CanWriteBiffAt, ReplaceReference, Count, Items, Source, FormulaText, FullyDecoded, Rgce, RgbExtra, BiffWritable og BiffVersion |
| TXLSCompiledFormula | CreateTokenStream returnerer en klon eid av den som kaller, av den kompilerte formeltokenstrømmen |
Syntakstre
CloneSyntaxTree returnerer et tolket tre eid av den som kaller, med TXLSSyntaxItem-noder for strukturell inspeksjon: hver node rapporterer sin ItemType, literalnyttelast (Value, IntValue, DecValue), ledende Spaces, trelenker (Parent, Child, ChildCount), referansebladet som en TXLSRangeItem via Range, og data fra matrisekonstanter (ArrayRows, ArrayCols, ArrayValueCount og TXLSArraySerVal-oppføringene i ArrayValues). Treet er en frakoblet kopi, så en gjennomløping kommer aldri borti arbeidsbokens kompilerte formler, og mutasjonsmedlemmene (AddChild, PushChild, CopyObject, OffsetCopyReferences, AdjustForShift og TXLSRangeItem.CopyObject / AdjustForShift) finnes for verktøy som omskriver et klonet tre før rekompilering
Inngangspunkter i arbeidsboken
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 og SetFormulaTokens holder eierskapet eksplisitt og validerer kontekst, BIFF-versjon, tokenstøtte, matriseeierskap og referansegrenser før en celle endres
Brukerfunksjonsregistre
TXLSUserFunctionResolver og TXLSUserFunctionRegistry gir oppslag etter navn gjennom RegisterHandler, UnregisterHandler, Clear, Contains, TryGetHandler og Count
Workbook.RegisterUserFunction('NETMARGIN', CalculateNetMargin);
Workbook.RegisterGlobalUserFunction('FISCALYEAR', CalculateFiscalYear);
try
Workbook.Calculate;
finally
Workbook.UnregisterUserFunction('NETMARGIN');
Workbook.UnregisterGlobalUserFunction('FISCALYEAR');
end;
IXLSWorkbook, TXLSWorkbook og TXLSXWorkbook eksponerer RegisterUserFunction, UnregisterUserFunction, ClearUserFunctions, RegisteredUserFunctionCount, RegisterGlobalUserFunction, UnregisterGlobalUserFunction, ClearGlobalUserFunctions og RegisteredGlobalUserFunctionCount
De tilsvarende enhetsnivå-inngangspunktene er XLSRegisterGlobalUserFunction, XLSUnregisterGlobalUserFunction, XLSClearGlobalUserFunctions, XLSRegisteredGlobalUserFunctionCount og XLSGlobalUserFunctionRegistered
TXLSCalculator.OnUserFunctionResolve deltar før den eldre hendelsesfallbacken, og registerbehandlere kalles utenfor registerlåsen slik at en behandler trygt kan avregistrere seg selv
Farlige eksterne og makrostilte funksjonsnavn blokkeres før argumentene evalueres og før behandlerslag utføres, med mindre AllowUnsafeFormulaCallbacks er eksplisitt aktivert for arbeidsboken eller den enkelte kontekstuelle evalueringen; vanlige brukerfunksjonsnavn forblir tilgjengelige som standard
Formeldiagnostikk
TXLSXFormulaIssueKind, TXLSXFormulaLocation og TXLSXFormulaIssue returneres av TXLSXWorkbook.AnalyzeFormulaIssues for manglende funksjoner, eksterne referanser og sirkulære avhengighetskomponenter
Inspeksjon av makroark
TXLSSheetKind skiller regneark, makroark, diagramark, VBA-moduler og ukjente arkposter gjennom TXLSWorksheet.SheetKind; TXLSMacroRisk, TXLSMacroCommandInfo og TXLSMacroCommandArray beskriver de typede resultatene fra TXLSWorksheet.ScanMacroCommands
Typer for sammenslått autotilpasning og sortering
TXLSMergedAutoFitStrategy og TXLSXMergedAutoFitStrategy velger første, siste eller balansert vekst for sammenslåtte spenn, mens TXLSSortOrientation, TXLSSortFormulaMode og TXLSSortCompareEvent styrer vertikal eller horisontal stabil sortering og formelflytting