Documentație HotXLS

Tokenuri de formulă și funcții de utilizator

HotXLS expune fluxuri de tokenuri de formulă deținute de apelant pentru inspecție fără pierderi și rescriere protejată în ambele motoare de registru, plus registre ierarhice de funcții de utilizator pentru calcul personalizat

Modelul tokenurilor

TXLSFormulaTokenClass, TXLSFormulaTokenKind și TXLSFormulaTokenSource clasifică fiecare TXLSFormulaToken și înregistrează dacă acesta provine din text analizat, din octeți BIFF clasici sau din altă sursă acceptată

TXLSFormulaTokenKind, Opcode, BaseOpcode, TokenClass, RawBytes, TextValue, NumberValue, IntegerValue, ArgumentCount, ExternSheetIndex, Row1, Col1, Row2, Col2, Row1Relative, Col1Relative, Row2Relative, Col2Relative, ReferenceUsesOffsets, Supported, ArrayRows, ArrayCols, ArrayValueCount și ArrayValues
TXLSFormulaTokenStreamDecodeBiff, Clone, CloneSyntaxTree, BindContext, CanCompileFor, CanWriteBiffAt, ReplaceReference, Count, Items, Rgce, RgbExtra, BiffWritable și BiffVersion
TXLSCompiledFormulaCreateTokenStream returnează o clonă deținută de apelant a fluxului de tokenuri al formulei compilate

Puncte de intrare în registrul de lucru

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 și SetFormulaTokens păstrează proprietatea explicită și validează contextul, versiunea BIFF, suportul tokenurilor, proprietatea array-urilor și limitele referințelor înainte de a fi modificată o celulă

Registre de funcții de utilizator

TXLSUserFunctionResolver și TXLSUserFunctionRegistry oferă căutare după nume prin RegisterHandler, UnregisterHandler, Clear, Contains, TryGetHandler și Count

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

IXLSWorkbook, TXLSWorkbook și TXLSXWorkbook expun RegisterUserFunction, UnregisterUserFunction, ClearUserFunctions, RegisteredUserFunctionCount, RegisterGlobalUserFunction, UnregisterGlobalUserFunction, ClearGlobalUserFunctions și RegisteredGlobalUserFunctionCount

Punctele de intrare echivalente la nivel de unitate sunt XLSRegisterGlobalUserFunction, XLSUnregisterGlobalUserFunction, XLSClearGlobalUserFunctions, XLSRegisteredGlobalUserFunctionCount și XLSGlobalUserFunctionRegistered

TXLSCalculator.OnUserFunctionResolve participă înainte de rezerva de evenimente moștenită, iar handler-ele din registru sunt invocate în afara blocării registrului, astfel încât un handler se poate dezînregistra în siguranță pe sine

Diagnosticare formulă

TXLSXFormulaIssueKind, TXLSXFormulaLocation și TXLSXFormulaIssue sunt returnate de TXLSXWorkbook.AnalyzeFormulaIssues pentru funcții lipsă, referințe externe și componente de dependențe circulare

Inspectarea foilor de macro

TXLSSheetKind distinge foaia de lucru, foaia de macro, foaia de diagramă, modulul VBA și înregistrările de foaie necunoscute prin TXLSWorksheet.SheetKind; TXLSMacroRisk, TXLSMacroCommandInfo și TXLSMacroCommandArray descriu rezultatele tipizate de la TXLSWorksheet.ScanMacroCommands

Tipuri AutoFit îmbinate și de sortare

TXLSMergedAutoFitStrategy și TXLSXMergedAutoFitStrategy aleg creșterea pentru prima, ultima sau echilibrată pentru intervalele îmbinate, în timp ce TXLSSortOrientation, TXLSSortFormulaMode și TXLSSortCompareEvent controlează sortarea stabilă verticală sau orizontală și mutarea formulelor

Consultați și