These public members back integrations that inspect I/O, implement serialisers or coordinate calculation across workbooks, with the workbook members declared in lxHandleX and the workspace graph declared in lxDepGraph
Ordinary applications should reach for cell formatting, SaveAs, Recalculate and the external-workbook workspace APIs first; style-pool registration and graph scheduling demand the same index and lifetime conventions as the library's serialisers and calculation engine
TXLSXWorkbook.OnReadCell receives the sheet index, row, column, stored value and formula for each materialised cell during XLSX parsing, along with a writable Cancel flag; TXLSXWorkbook.OnWriteCell receives a writable output value plus Skip and Cancel flags before a cell is serialised, so a host can transform or omit output without replacing the workbook API with the direct stream API
Both callbacks work with 1-based worksheet and cell coordinates, and their declared types are TXLSXCellReadEvent and TXLSXCellWriteEvent; callbacks run inside the active I/O operation, so never start another operation on the same workbook from within a callback
TXLSXWorkbook.RecoveryMode defaults to False and lets supported worksheet-XML parsing failures turn into warning diagnostics whilst opening continues, potentially leaving only partially recovered worksheet contents; it offers no guarantee of recovery from an unreadable ZIP package, so inspect the diagnostics and recovered data before saving
TXLSXWorkbook.FireProgress dispatches a phase, state, current count and total count to the assigned progress handlers, the legacy handler receiving work notifications and the extended handler receiving all states; an extended handler can request cancellation, except that the writing-end notification cannot reverse output already committed
TXLSXWorkbook.AddDiagnostic appends and returns a diagnostic owned by the workbook, records the supplied code, severity, operation, message, native code, sheet context and package-part name, copies the exception class name where an exception is supplied, and invokes OnDiagnostic; it takes no ownership of the exception and never raises it
function TXLSXWorkbook.AddDiagnostic(ACode: Integer; ASeverity: TXLSDiagnosticSeverity; AOperation: TXLSDiagnosticOperation; const AMessage: WideString; ANativeCode, ASheetIndex: Integer; const ASheetName, APartName: WideString; AException: Exception): TXLSDiagnostic;
TXLSXWorkbook.CSVEmitFormulas defaults to False and switches CSV output from formula results to formula text for formula cells; result output attempts formula evaluation and falls back on stored cell text or value when evaluation fails; TXLSXWorkbook.CSVQuoteAllStrings likewise defaults to False and forces quotes around text fields whilst numbers, dates, Booleans, Null and Empty keep the normal quoting rules
TXLSXWorkbook.LastSaveUsedStreaming reports whether the most recent prepared save used worksheet streaming, TXLSXWorkbook.LastSavePeakRowXmlChars reports the largest buffered row XML fragment, TXLSXWorkbook.LastSaveBufferedWorksheetXmlChars reports the combined buffered worksheet XML, and TXLSXWorkbook.LastSavePeakAuxiliaryXmlChars reports the largest tracked auxiliary XML fragment; these are character counts from serialiser instrumentation, not total process-memory measurements, and ODS output never uses the XLSX worksheet-streaming path
TXLSXWorkbook.TryCopyPreservedPart attempts to copy an eligible preserved source part, compressed representation included, into a caller-supplied destination TZipArchive, returning True when copied or False when normal serialisation is needed; the source must stay available from a file-backed open, and missing or explicitly discarded parts cannot be copied
The caller owns the destination archive and must finish it normally; a compressed-copy rollback failure can still raise an exception, and this helper neither builds a complete workbook package nor updates its relationships or content types
TXLSXWorkbook.SaveAsEncryptedAgile accepts a file name and nonempty password, serialises the XLSX package in memory and writes the Agile encrypted container, returning 1 on success or -1 on a reported failure; the optional VerifyEncryptedSave performs a reopen check after writing, and the method needs memory for the unencrypted package as well as its serialised bytes
TXLSXWorkbook.VerifyEncryptedFile opens the supplied file and password in a temporary workbook and returns True only where that open succeeds, converting exceptions to False; this checks readability rather than comparing every cell with the current workbook, and follows the normal OpenEncrypted behaviour for an unencrypted XLSX input
TXLSXWorkbook.DocSecurity stores the extended document-property bit field: 1 means password protection, 2 read-only recommendation, 4 enforced read-only status and 8 annotation locking; these metadata bits apply no encryption or access restrictions themselves
TXLSXWorkbook.DocPropsTouched is the read-only flag the document-property writers consult to decide whether tracked properties have been configured; tracked property setters such as Title set it, whereas directly assigned extended metadata does not set it automatically
TXLSXWorkbook.WorkbookProtectHash exposes the loaded or generated legacy workbook-protection hash, normally four hexadecimal digits or an empty string where no password hash exists; use the workbook protection methods to change protection rather than assigning this read-only value, and keep workbook-structure protection apart from encrypted file storage
TXLSXWorkbook.ThemeMajorFont and TXLSXWorkbook.ThemeMinorFont expose the heading and body typefaces loaded from the theme and override the names whenever the default Office theme is generated; a verbatim preserved theme outranks these font-name settings
TXLSXWorkbook.DefaultTableStyleName and TXLSXWorkbook.DefaultPivotStyleName round-trip the default names kept in the style table for newly inserted Excel tables and PivotTables; assigning them does not on its own reformat every existing object
TXLSXWorkbook.ResolveTableStyle returns a workbook-owned custom style by name, otherwise resolves and caches the supported built-in TableStyleLight1 through TableStyleLight21, TableStyleMedium1 through TableStyleMedium28 or TableStyleDark1 through TableStyleDark11, and returns nil for an unknown name; never free the returned style
TXLSXWorkbook.FastStyleAppend defaults to False and lets bulk creation skip the deduplication scans in the style pools and ordinary composite-style registration, trading a larger style table for faster insertion when many distinct styles are being created
function TXLSXWorkbook.RegisterCompositeXf( AFont, AFill, ABorder, ANumFmt, AAlign, AProt: Integer): Integer; overload; function TXLSXWorkbook.RegisterCompositeXf( AFont, AFill, ABorder, ANumFmt, AAlign, AProt, ABuiltinNumFmt: Integer): Integer; overload; function TXLSXWorkbook.RegisterLinkedCompositeXf( AFont, AFill, ABorder, ANumFmt, AAlign, AProt, AParentXfId: Integer; ALinkedParts: TXLSXFormatParts): Integer;
TXLSXWorkbook.RegisterCompositeXf registers the combined font, fill, border, number-format, alignment and protection indices and returns the absolute cellXfs index, not a composite-pool slot; the seven-argument overload takes a built-in number-format ID that outranks the supplied custom format index, zero meaning no override
TXLSXWorkbook.RegisterLinkedCompositeXf additionally records the parent style-XF ID and the format parts linked to that parent, keeping separate entries for different parent or linkage combinations; it likewise returns an absolute cellXfs index
TXLSXWorkbook.CompositeXfBase returns the first absolute composite index, worked out from the current single-dimension style pools, whilst TXLSXWorkbook.CompositeXfCount counts the registered composite entries; a pool slot used by GetCompositeXf is the absolute index minus the base, and the base can move when those pools grow, so these values belong to the current serialisation state
TXLSXWorkbook.RegisterCondDxf registers a borrowed TXLSDxfStyle reference and returns its zero-based differential-style ID, reusing an existing ID for the same object reference; keep the object alive for as long as serialisation uses it
TXLSXWorkbook.ResetCondDxfs clears the active registry count without freeing borrowed styles, and TXLSXWorkbook.CondDxfCount reports that count; save preparation rebuilds this registry, so never persist these IDs independently of the package being written
TXLSXWorkbook.PivotCaches is the workbook-owned TXLSPivotCaches collection shared by worksheet PivotTables; AddPivotTable reuses a matching source cache or creates one, and RefreshPivotCache refreshes the identified cache whilst preserving supported member identities
TXLSXWorkbook.RecalcThreads defaults to zero, zero or one meaning serial recalculation and larger values enabling worker evaluation of independent formula frontiers; workbooks with dynamic arrays use a serial pass whatever this setting says, what-if data-table nodes stay serial, and user-function handlers used by workers must be thread-safe
TXLSXWorkbook.SolveCycleIteratively is an advanced entry point normally invoked by Recalculate when iteration is enabled, consuming node indices from that workbook's current dependency graph and evaluating the cycle nodes in the supplied TList; indices from a workspace graph or another workbook are not interchangeable
The solver works from IterateCount and IterateDelta, keeps the final values even where the iteration limit is reached and returns lxOk without certifying convergence; dynamic-array cycle members return lxErrorCircumRef, and the signature's CycleCount argument does not stand in for cycle classification on the graph nodes
TXLSWorkspaceDepGraph stores formula dependencies across caller-supplied workbook identities and sheet identities without opening workbooks or evaluating formulas; build a graph from the current formulas and resolved references, then rebuild it after structural or formula changes invalidate those references
function TXLSWorkspaceDepGraph.AddNode( const AWorkbookIdentity, ASheetName: WideString; ASheetIndex, ARow, ACol, AOutRow2, AOutCol2: Integer; AVolatile: Boolean; AReferences: TXLSWorkspaceDepReferenceList; ARefUnstable: Boolean = False): Integer; procedure TXLSWorkspaceDepGraph.DirtyTopoOrder(AOrder: TList; out ACycleNodeCount, ABlockedNodeCount: Integer);
TXLSWorkspaceDepGraph.AddNode appends a formula node and returns its zero-based node index, copying the supplied references rather than owning their list; sheet indices are 1-based, whilst row and column coordinates, the inclusive output rectangle's bottom-right corner included, are zero-based calculator coordinates
TXLSWorkspaceDepReferenceList.Add appends a resolved cell, range or defined-name reference record, TXLSWorkspaceDepReferenceList.Items reads those records by zero-based index, and TXLSWorkspaceDepReferenceList.Clear resets the list for reuse; the caller owns this input list and may clear or free it once AddNode has copied its entries
TXLSWorkspaceDepGraph.BuildEdges resolves stored cell and range references against formula output rectangles; references flagged LookupScan propagate dirtiness but impose no evaluation order and take no part in cycle detection
TXLSWorkspaceDepGraph.NodeIndexOf resolves a workbook, sheet, row and column to a zero-based node index, or -1 when absent, using the sheet name where available and the declared sheet index as a fallback
TXLSWorkspaceDepGraph.FindDependentsOfDefinedName clears a supplied non-nil TList and fills it with the node indices directly referring to the named symbol in the specified workbook and scope, a negative scope index matching all scopes; entries are encoded as Pointer(NativeInt(NodeIndex)), so a nil list entry can stand for node zero
TXLSWorkspaceDepGraph.BeginDirtyGeneration starts a fresh generation, resets the active dirty-node count and cycle-blocked flags and makes earlier dirty stamps inactive; call it before marking the nodes for a new recalculation pass
TXLSWorkspaceDepGraph.MarkAllDirty marks every node in the current generation; TXLSWorkspaceDepGraph.MarkWorkbookDirty seeds the nodes belonging to the identified workbook and the nodes referring to it, then propagates to dependents, whilst TXLSWorkspaceDepGraph.MarkVolatileDirty seeds volatile nodes and TXLSWorkspaceDepGraph.MarkCyclesDirty seeds detected cycle components, propagating their dirtiness too
TXLSWorkspaceDepGraph.IsNodeDirty reports whether a valid node carries the current generation stamp and gives False for an invalid index; TXLSWorkspaceDepGraph.DirtyGeneration exposes that stamp, and TXLSWorkspaceDepGraph.DirtyNodeCount counts the nodes marked in the active generation
TXLSWorkspaceDepGraph.DirtyTopoOrder requires a non-nil caller-owned TList, clears it and fills it with dirty node indices in dependency order, leaving out dirty cycle nodes and nodes blocked by those cycles; its two output counts tell cycle members apart from blocked downstream nodes, and list entries use the same pointer-encoded zero-based index convention
TXLSWorkspaceDepGraph.HasRefUnstable reports whether any node was added with the reference-unstable flag, letting the caller avoid leaning on a stale static schedule when formula references can change at evaluation time; the graph resolves none of those changing references by itself
TXLSWorkspaceDepGraph.NodeCount counts formula nodes, TXLSWorkspaceDepGraph.ReferenceCount counts copied references and TXLSWorkspaceDepGraph.EdgeCount reports the built dependency edges; call BuildEdges before consuming edge statistics
TXLSWorkspaceDepGraph.WorkbookCount counts interned workbook identities, identities introduced by references included, and TXLSWorkspaceDepGraph.WorkbookIdentities enumerates them by zero-based index; these identity strings are graph keys, not evidence that an external file was loaded
TXLSWorkspaceDepGraph.ComponentCount reports the number of strongly connected components after component construction, triggered by MarkCyclesDirty, DirtyTopoOrder or component access; each Components record supplies NodeStart, NodeCount and IsCycle
TXLSWorkspaceDepGraph.ComponentNodes exposes the flattened zero-based node-index array for those components, indexed from each component's NodeStart through NodeStart + NodeCount - 1; the counts and indexed records describe the current graph and should be reacquired after graph reconstruction
Carry on with additional XLSX facade members and the XLSX facade overview for the ordinary workbook entry points