HotXLS Docs

Additional library API members

This page completes the reference for public types that support the primary workbook, worksheet, rendering, import, diagnostics, and viewer APIs but do not require a separate task-oriented guide

Filtering and conditional formatting

TXLSAutofilterAdd, AddAutofilterData, AssignFrom, Clear, and ParseAutofilterData edit or import the filter definition; Defined, FirstRow, FirstCol, LastCol, LastRow, and FieldCount expose its active bounds and filtered-column count
TXLSAutofilterItemShape exposes the filter-button drawing associated with the item, and the loaded filter criterion is available as a TXLSAutofilterDOPER operand record — DataType selects the operand form and grbitSgn carries the sign and flag bits — for inspection or round-trip editing
TXLSDataBarSpecAxisColor, AxisIsThemeColor, AxisThemeColorId, AxisThemeColorTint, and ClearAxisThemeColor control the axis; Direction, GradientFill, NegativeBarBorderColorSameAsPositive, NegativeBarColor, NegativeBarColorSameAsPositive, and NegativeBorderColor control bar appearance; IsIndexedColor, IndexedColorIndex, and ClearIndexedColor manage the palette-index bar color
TXLSIconSetSpecThresholdEqualsInclude selects inclusive or exclusive comparison for each icon threshold
TXLSCfValueIsIndexedColor and IndexedColorIndex report a threshold color stored as a legacy palette index, ClearIndexedColor removes that form again, and theme or literal colors remain available through the existing accessors

TXLSCfValue, TXLSDataBarSpec, TXLSColorScaleSpec, TXLSIconSetSpec, and TXLSDxfStyle accept AttachWriteGuardOwner, linking the rule object to its owning workbook so edits acquire a write guard automatically; the owner implements TXLSCondFormatWriteGuardOwner, whose single AcquireWriteGuard method hands the rule the workbook's write guard. TXLSDxfStyle adds FontColorIndex with FontColorIsIndexed plus the FillFgColorIndex / FillFgColorIsIndexed and FillBgColorIndex / FillBgColorIsIndexed pairs for palette-index rule colors, and the differential-font overrides FontName, FontSize, and FontScheme (empty string, a point size, or a theme font slot such as major / minor) alongside the existing bold, italic, underline, and color members; each assignment acquires the write guard and marks the rule dirty for re-emission

TXLSConnections, TXLSDataTables, and TXLSQueryTables expose OnAcquireWriteGuard (type TXLSConnectionAcquireWriteGuard, TXLSDataTableAcquireWriteGuard, and TXLSQueryTableAcquireWriteGuard), the hook their edit paths use to obtain the owning workbook's IXLSWorkbookWriteGuard before mutating and to advance the workbook generation afterwards; the guard records StartGeneration, and Complete marks the write finished so dependent caches can rebuild

Preserved data connections carry a typed description: TXLSConnectionKind (xlckUnknown, xlckOdbc, xlckDao, xlckFile, xlckWeb, xlckOleDb, xlckText, xlckAdo) classifies the connection, TXLSConnectionCredentials (xlccIntegrated, xlccNone, xlccStored, xlccPrompt) records its authentication mode, and each connection parameter value is tagged with TXLSConnectionParameterValueKind (xlcpvNone, xlcpvBoolean, xlcpvDouble, xlcpvInteger, xlcpvString, xlcpvCell). What-if data tables report their stored definition kind through TXLSDataTableKind

What-if data tables and pivot grouping

TXLSDataTableAssign, ContainsCell, and IsRoot copy and inspect a table; Kind, FirstRow, FirstCol, LastCol, LastRow, AlwaysCalculate, ColumnInputCol, ColumnInputRow, ColumnInputDeleted, RowInputCol, RowInputRow, and RowInputDeleted expose the stored calculation definition
TXLSDataTablesAdd, AddExisting, Delete, Clear, Assign, AdjustForShift, and Offset maintain the collection; FindByCell and FindRoot locate the table containing or rooted at a given cell; Count, Items, and OnChange expose collection state
TXLSPivotCacheFieldGroupBaseField and GroupParentField expose the relationships between a grouped field and its source or parent field

Icon-set thresholds can be rendered or validated programmatically: XLSCfIconSetCount reports how many icons a TXLSIconSetType defines, and XLSBuildCfIconGeometry fills a TXLSCfIconGeometry with the primitives (TXLSCfIconPrimitive, kind TXLSCfIconPrimitiveKind: cfipPolygon, cfipEllipse, cfipRect, cfipLine) and points (TXLSCfIconPoint) that draw one icon, so custom renderers match Excel's built-in icon shapes

Diagnostics, formula tracing, and validation

TXLSDiagnosticCode, NativeCode, Message, Severity, ExceptionClass, PartName, RecordId, SheetIndex, SheetName, and StreamOffset identify one parser, writer, or package diagnostic
TXLSDiagnosticsAdd appends a diagnostic, Clear resets the collection, and Count plus Items enumerate its entries
TXLSDiagnosticSeverity and TXLSDiagnosticOperationTXLSDiagnosticSeverity (xlsDiagnosticInfo, xlsDiagnosticWarning, xlsDiagnosticError, xlsDiagnosticFatal) classifies one diagnostic and TXLSDiagnosticOperation (xlsOperationNone, xlsOperationOpen, xlsOperationSave, xlsOperationCalculate, xlsOperationExport) names the phase that produced it; OnDiagnostic handlers read both from the delivered TXLSDiagnostic
TXLSFormulaDebugSessionCurrentStep, DependencyCount, NodeCount, and StepCount expose the current debugger snapshot and its trace sizes
TXLSFormulaTracerStepCount reports the number of recorded evaluation steps
TXLSImportCheckAddRule, Annotate, KeepOnlyViolations, and Violation configure and run import validation; HeaderRow, FirstRow, LastRow, OnVerifyCell, and ViolationCount expose its bounds, callback, and result count. Rules are TlxImportColumnRule objects whose TlxImportRuleFlags select the checks for one 1-based worksheet column, and each TlxImportViolation reports the row, column, offending text, and error message
TXLSExternalLinkUpdateMode = (xluPromptUser, xluNever, xluAlways);

property IXLSWorkbook.SaveExternalLinkValues: Boolean;
property IXLSWorkbook.UpdateLinks: TXLSExternalLinkUpdateMode;
property TXLSXWorkbook.SaveExternalLinkValues: Boolean;
property TXLSXWorkbook.UpdateLinks: TXLSExternalLinkUpdateMode;
      
Both engines default to saving cached values and to xluPromptUser; xluNever and xluAlways only change the update preference stored in the workbook and never authorize or initiate external file or network access

Calculation audit and workbook hints

function TXLSWorkbook.RecalcAndVerify(MaxIssues: Integer = 10000): TXLSCalculationAuditReport;
function TXLSXWorkbook.RecalcAndVerify(MaxIssues: Integer = 10000): TXLSCalculationAuditReport;
function TXLSWorkbook.RecalcAndVerifyEx(const Options: TXLSRecalcAuditOptions): TXLSCalculationAuditReport;
function TXLSXWorkbook.RecalcAndVerifyEx(const Options: TXLSRecalcAuditOptions): TXLSCalculationAuditReport;
function TXLSWorkbook.RunCalculationAudit(const Options: TXLSRecalcAuditOptions): TXLSCalculationAuditReport;
function TXLSWorkbook.FormulaIsVolatile(Formula: WideString): Boolean;

function TXLSWorkbook.AuditOverlayHash(SheetIndex, Row, Col: Integer): Integer;
function TXLSWorkbook.AuditOverlayRead(SheetIndex, Row, Col: Integer; var Value: Variant): Boolean;
procedure TXLSWorkbook.AuditOverlayWrite(SheetIndex, Row, Col: Integer; const Value: Variant);
procedure TXLSWorkbook.AuditOverlayClear;

TXLSCalculationAuditIssueKind = (xlcaiCacheMismatch, xlcaiParseFailure,
  xlcaiMissingFunction, xlcaiMissingName, xlcaiUnsupportedArguments,
  xlcaiCircularReference, xlcaiExternalReferenceDenied,
  xlcaiExternalReferenceMissing, xlcaiDataTableSkipped, xlcaiCancelled,
  xlcaiInternalFailure);

TXLSCalculationAuditIssue = record
  Kind: TXLSCalculationAuditIssueKind;
  SheetIndex: Integer;
  SheetName: WideString;
  Row: Integer;
  Col: Integer;
  Formula: WideString;
  Symbol: WideString;
  Expected: Variant;
  Actual: Variant;
  ResultCode: Integer;
  Stack: WideString;
  ExternalTarget: WideString;
end;
TXLSCalculationAuditIssues = array of TXLSCalculationAuditIssue;

TXLSRecalcAuditProgress = procedure(ASender: TObject;
  ACurrent, ATotal: Integer; var ACancel: Boolean) of object;

property WorkbookCodeName: WideString;
property CalculationThreadMode: TXLSCalculationThreadMode;
property ForceFullCalculationState: TXLSOptionalBooleanState;
property RefreshAllOnLoadState: TXLSOptionalBooleanState;
      
RecalcAndVerify combines formula-symbol failures and cached-value mismatches into stable structured categories with worksheet coordinates, formulas, symbols, expected and actual values, and bounded truncation while leaving caches and workbook semantics unchanged. RecalcAndVerifyEx runs the deep audit: it evaluates every formula once through the dependency graph into an isolated result overlay so dependent cells read this pass instead of stale caches, classifies evaluation failures (unsupported arguments, circular references, denied or missing external references, data tables skipped, cancellation, internal failures) with result codes, records a bounded call stack per failure, honours an issue budget and a progress/cancel sink, and stays read-only unless ApplyResults commits the recomputed values atomically after a fully successful pass over an unchanged workbook structure
AbsoluteTolerance and RelativeTolerance control mismatch reporting, not intermediate calculation values or explicit cache application For numeric results, a mismatch requires an absolute difference above AbsoluteTolerance and, when relative tolerance is enabled, above RelativeTolerance * max(abs(Expected), abs(Actual)) Equality at either threshold is tolerated; changed values still enter the audit overlay so dependent formulas see the current calculation, and ApplyResults commits those values even when their differences are not reportable A read-only audit never changes stored caches
Each element of TXLSCalculationAuditReport.Issues is a TXLSCalculationAuditIssue; Kind selects one of the xlcai* categories, Expected / Actual carry the compared values for cache mismatches, Stack is the bounded evaluation call chain rendered as Sheet!A1 > Sheet!B2 (outermost frame first), and ExternalTarget describes the external workbook for external-reference issues. TXLSRecalcAuditOptions.OnProgress is a TXLSRecalcAuditProgress sink that receives ACurrent / ATotal node progress and can set ACancel to stop the audit at the next node boundary with a single xlcaiCancelled issue
RunCalculationAudit is the engine entry the workbook-level audit wrappers delegate to and accepts the same options record. FormulaIsVolatile reports whether a formula would force a recalculation on every pass (calls such as NOW, RAND, TODAY, OFFSET, INDIRECT, or an unresolvable reference)
The audit overlay is a what-if layer on top of the cell caches: AuditOverlayWrite stores a replacement value for one cell (1-based sheet index, 0-based row and column matching the calculator convention), AuditOverlayRead and AuditOverlayHash query it, and AuditOverlayClear empties the layer. Overlaid values are returned by the normal cell-value getters, so recalculation and the deep audit observe them without mutating worksheet cells; clearing the overlay restores the stored values
The workbook hint properties retain missing, false, true, disabled, automatic, and manual states where the source format supports them; they never start calculation, refresh, file-system, network, or database work on open

Table formula and IME state

property TXLSXTable.ColumnCalculatedFormulaArrayStates[Index: Integer]: TXLSTableFormulaArrayState;
property TXLSXTable.ColumnTotalsFormulaArrayStates[Index: Integer]: TXLSTableFormulaArrayState;
property TDataValidation.ImeMode: TXLSDataValidationImeMode;
property TXLSXDataValidation.ImeModeKind: TXLSDataValidationImeMode;
      
Calculated-column and totals-row formulas keep independent absent, false, true, or unknown array states, including untouched source lexical values and column structural edits; array formulas are rejected by scalar row expansion instead of being silently changed
IME modes use explicit BIFF and OOXML mappings, preserve unknown source values, and reject the OOXML-only disabled value when authored for Classic XLS
Setting SaveExternalLinkValues to False omits Classic XCT and CRN records or the XLSX external-book sheetDataSet subtree, while retaining link targets, sheet names, external defined names, relationships, formula references, unknown XML, and the in-memory cache; restoring the property to True on the same workbook can serialize that retained cache again
Untouched unsupported source tokens remain byte-for-byte or lexically preserved, explicit assignments emit only legal values, unchanged XLSX parts keep the compressed-copy path, and XLS/XLSX conversion transfers both policies; ODS and text workbooks have no equivalent declaration and open with the defaults, while preserved DDE and OLE link parts are not treated as external-workbook cell caches

Web Add-in task pane inspection and removal

function IXLSWorkbook.HasWebAddinTaskPanes: Boolean;
function IXLSWorkbook.WebAddinTaskPaneCount: Integer;
function IXLSWorkbook.RemoveWebAddinTaskPanes: Integer;
function TXLSXWorkbook.HasWebAddinTaskPanes: Boolean;
function TXLSXWorkbook.WebAddinTaskPaneCount: Integer;
function TXLSXWorkbook.RemoveWebAddinTaskPanes: Integer;
      
The inspection methods recognize only internal package-root relationships whose type exactly matches the Web Add-in task pane relationship type; external relationships, differently cased types, worksheet relationships, and similarly named parts are ignored
Removal first validates the complete relationship graph, including normalized targets, package-root confinement, cycles, missing parts, and resource limits; it then removes all matching root relationships and only the reachable parts not shared by another retained relationship, together with relationship parts owned by deleted sources
The operation is atomic and idempotent, removed source parts cannot reappear through compressed-copy saving, and content types are rebuilt from the remaining package; malformed graphs add diagnostic code 1303 and raise an exception before mutation, while Classic XLS and ODS return False, 0, and -1 without package scanning

Workbook object display policy

TXLSObjectDisplayMode = (xlsodmShowAll, xlsodmShowPlaceholders,
  xlsodmHideAll);

property IXLSWorkbook.ObjectDisplayMode: TXLSObjectDisplayMode;
property TXLSWorkbook.ObjectDisplayMode: TXLSObjectDisplayMode;
property TXLSXWorkbook.ObjectDisplayMode: TXLSObjectDisplayMode;
property TXLSPaginationModel.ExportObjectPlaceholders: Boolean;
property TXLSPDFExport.ExportObjectPlaceholders: Boolean;
property TXLSSvgExport.ExportObjectPlaceholders: Boolean;
property TXLSPageImageExporter.ExportObjectPlaceholders: Boolean;
property TXLSPrintDocument.ExportObjectPlaceholders: Boolean;
property TXLSXHtmlExportOptions.ExportObjectPlaceholders: Boolean;
      
Classic XLS maps the three states to its workbook object-display record and XLSX maps them to workbookPr.showObjects; missing values default to xlsodmShowAll, untouched reserved Classic payloads and unsupported XLSX tokens remain lossless, and explicit assignments emit only canonical values
The viewer renders placeholder mode as lightweight boxes carrying available object type, name, text, and alternative text; exporters retain full objects by default, while setting ExportObjectPlaceholders requests the same low-cost policy without decoding image payloads or constructing chart scenes
xlsodmHideAll prevents drawing collection and object-driven range expansion before rendering begins; workbook conversion carries all three states, ODS writes complete drawings for placeholder mode and omits drawing and media output for hide-all mode, and worksheet backgrounds remain independent

Render calibration values and snapshots

TXLSRenderCalibration = record
  WidthCorrection: Double;
  HeightCorrection: Double;
  LineSpacing: Double;
  CellMarginFactor: Double;
  ScreenScaling: Integer;
  MeasurementDpi: Integer;
end;

function XLSDefaultRenderCalibration: TXLSRenderCalibration;
function XLSValidateRenderCalibration(const AValue: TXLSRenderCalibration;
  out AInvalidField: TXLSRenderCalibrationField): Boolean;
      
The default values are 1, 1, 1, 1, 100, and 96; width and height corrections must be greater than zero and less than two, line spacing is bounded to (0, 4], cell margins to [0, 4], screen scaling to [100, 500] percent, and measurement DPI to [36, 2400]
Classic XLS and XLSX workbooks expose the same RenderCalibration, CaptureRenderCalibration, and ResetRenderCalibration members; whole-record assignment validates before mutation, and each capture returns an independent immutable-by-convention value snapshot for one rendering operation

Render geometry and font measurement

TXLSRenderGeometryBackend = (xlsrgbAutoFit, xlsrgbPagination, xlsrgbPdf,
  xlsrgbSvg, xlsrgbBitmap, xlsrgbPrintPreview, xlsrgbViewer, xlsrgbHtml);

TXLSRenderFont = record
  Name: WideString;
  Size: Double;
  Styles: TXLSRenderFontStyles;
  Charset: Byte;
end;

function CreateXLSRenderGeometry(
  const ACalibration: TXLSRenderCalibration;
  AWorkbookGeneration: UInt64;
  ABackend: TXLSRenderGeometryBackend;
  ACacheCapacity: Integer = 4096): IXLSRenderGeometry;

property TXLSHTMLExport.RenderGeometry: IXLSRenderGeometry;
property TXLSXHtmlExportSession.RenderGeometry: IXLSRenderGeometry;
      
IXLSRenderGeometry owns one immutable calibration, workbook generation, backend identity, GDI measurement surface, and bounded operation-local metric cache; MeasureText returns pixel width, height, line height, ascent, descent, and line count while MaximumDigitWidthPixels, ColumnWidthToPixels, PixelsToColumnWidth, PointsToPixels, PixelsToPoints, and UsableCellWidthPixels provide the shared geometry conversions
Cache identity includes backend, workbook generation, all calibration values, font name, exact size, styles, charset, wrap width, and text; width and height correction are applied once during text measurement, line spacing affects only multi-line height, cell-margin correction affects only usable text width, and screen scaling affects only maximum-digit-width emulation for implicit column widths
Classic XLS and XLSX AutoFit capture one service for each public operation, including merged-range and two-phase MarkSheet measurement, while TXLSPaginationModel.Build captures one service for the selected RenderBackend; PDF, SVG, bitmap, print-preview, workbook-viewer, and HTML entry points select their own backend before output, changing workbook calibration cannot mutate an existing snapshot, and output does not write worksheet dimensions
Direct HTML workbook, worksheet, and range calls capture a fresh xlsrgbHtml service, while an incremental TXLSXHtmlExportSession captures once in BeginExport and reuses that snapshot for all sheets; both exporters expose the retained service through RenderGeometry for calibration and cache diagnostics
The read-only IXLSRenderGeometry properties WorkbookGeneration, CacheCapacity, and CacheEntryCount report the bound generation and cache fill for diagnostics, and ImplicitWidthMaximumDigitWidthPixels returns the digit-width measurement behind implicit column-width emulation
MeasureText fills a TXLSRenderTextMetrics record (pixel width, height, line height, ascent, descent, and line count) from a TXLSRenderFont whose Styles member is a set of TXLSRenderFontStyle flags (bold, italic, underline, strikethrough)

Import, code generation, comparison, and monitoring

TXLSHTMLImportLoadFromHTML overloads import HTML table content from a stream or file into a worksheet, with optional start coordinates, table selection, and decimal separator
TXLSCodeGenLanguage (type TlxCodeGenLanguage: lcgDelphi or lcgCppBuilder) selects the source dialect of the generated statements, GenerateToList writes generated workbook code to a string list, and TlxCodeGenOptions widens the output with merges, column widths, or number formats (cgoMerges, cgoColumnWidths, cgoNumberFormats; sheets and cells are always emitted)
TXLSXWorkbookCompareLeftName and RightName label the inputs, Compare performs comparison, and Diff exposes the resulting TlxCompareDiff entries classified by TlxCompareKind
TXLSFileMonitorIntervalMs selects the polling interval and SynchronizeEvent selects synchronized callback delivery; an OnFileChanged handler may deactivate or destroy the monitor, or change FileName to start watching another file
TXLSCSVLoader and TXLSCSVSaverThe loader parses delimited text into an in-memory grid of Variants — ParseFile and ParseStream fill the grid, CellValue, RowCount, and ColCount read it back — with auto-detected separator (ValueSeparator) and encoding (TXLSCsvEncoding: system ANSI, UTF-16, UTF-8) and optional type promotion controlled by DetectTypes and per-column ColumnTypes entries (TXLSCsvColumnType: auto, text, number, date, boolean, skip); SkipRows, AutoTrim, LocaleTolerantNumbers, and FieldWidths refine fixed-width and locale handling. TXLSCSVSaver.SaveAs writes the grid back with RFC 4180 quoting, and QuoteAllStrings forces quoting; TXLSTSVSaver derives from the saver for tab-separated output

Package and binary storage helpers

TXLSXOpaquePackageLoadWorkbookXmlMetadata captures workbook-level XML state, MarkAllPartsClean resets dirty flags, and WorkbookExtLstXml plus WorkbookRootAttributesXml expose preserved workbook XML fragments; IsDiscardedPart reports whether a part name was removed by a discard operation such as web-add-in cleanup
TXLSFileStorageLoad, LoadFolder, Write, and WriteFolder transfer compound-file content; Child and Count enumerate child entries, each a TXLSFileItem — a named storage node whose TXLSFileStream subclass carries the stored bytes as a TXLSBlob with DataSize reporting the payload length
TXLSBlobAdd appends another blob, while AddByte, AddWord, AddLong, AddDouble, AddString, and AddWideString append typed values; CopyData, CopyMem, FillByte, Write, Clear, Reset, and Dump manage content; Buff and DataLength expose storage
TXLSBlobListAppend, AppendList, CopyData, and Write combine or emit entries; Entries and TotalSize expose list state
TXLSWideStringBuilderAddString appends text and Length reports the accumulated character count

Drawing and workbook viewer additions

TXLSFillFormatPictureFill configures a picture-backed shape fill, while FillType selects the fill kind (solid, gradient, picture, or preset texture) that the writer emits
TXLSShapesAddScrollBar and AddSpinner create form controls — the returned TXLSScrollBar and TXLSSpinner objects expose the control geometry and linked cell, and the spinner adds Min, Max, and Inc step limits — while RegisterScrollBar and RegisterSpinner register controls loaded from a workbook
TXLSWorkbookViewerCanUndo and CanRedo report edit-history availability, while ReferencePickMode enables interactive cell or range reference selection

Pagination, image output, and printing

TXLSGraphicsBackendDrawTiledImage paints a sheet background repeatedly across the clipped page region
TXLSPaginationModelCompactRangeMode, IncludeDrawings, IncludeGridlines, IncludeCellBorders, and PaintPageBackground control page content; RenderDPI, RenderColorMode, and RenderSession expose output resolution, color handling, and the active render session
TXLSCellImageExporterMeasure calculates pixel dimensions for classic or XLSX ranges; ImageFormat, JpegQuality, MaxPixels, MaxBytes, IncludeObjects, IncludeGridlines, IncludeCellBorders, BackgroundColor, TransparentBackground, BeforePaint, AfterPaint, and PaginationModel configure and observe the render
TXLSPageImageExporterBeforePaint, AfterPaint, MaxPixels, MaxBytes, BackgroundColor, and TransparentBackground apply the same paint hooks and output safety limits to paged image export
TXLSPrintDocumentPrintWorksheet, PrintWorkbook, and PrintAllVisibleSheets send classic or XLSX content to the VCL printer; FirstPage, PrintRangeOnly, Collate, Copies, OnBeforeNewPage, and OnAfterGeneratePage control the print job

Classic chart models and worksheet chart objects

TXLSChartSeriesAddTrendline and AddErrorBars create typed series annotations, while TrendlineCount and ErrorBarCount report their collection sizes
TXLSChartAxisHasAxcExtFlag tests one raw AXCEXT flag without requiring callers to decode the bit mask
TXLSChartModelAxisGroupCount reports the number of primary and secondary axis groups decoded from the chart
TXLSCustomChartAddAreaData appends a pre-built area item for save-time formula rebinding and ApplyDateAxisModel applies a typed date-axis model to the raw chart records
TXLSWorksheetAddChartObject anchors a chart frame on the worksheet and connects it to the shared chart builder
TXLSXChartLayoutResolverTryResolve resolves one layout rectangle with optional size validation and ResolveChart calculates chart, title, legend, plot, and axis rectangles

Typed chart decode model

The decoded chart state is exposed as plain records and enums so inspection code never has to walk raw BIFF records: TXLSChartInfo carries the decoded chart summary with TXLSChartTypeFamily (cfBar, cfLine, cfPie, cfArea, cfScatter, cfRadar, cfDoughnut, cfSurface, cfBubble), each series reports TXLSChartSeriesType, and TXLSChart3DState plus TXLSChart3DInfo describe three-dimensional views. TXLSChartAxisType (catCategory, catValue, catSeries, catDate) and TXLSChartLegendPosition classify axes and legends, while the date-axis model uses TXLSChartDateUnit (xcduDays, xcduMonths, xcduYears) and TXLSChartDateValues. TXLSCustomChart exposes the decoded model through TXLSChartInfo; trendline and error-bar annotations are typed objects (TXLSChartTrendline, TXLSChartErrorBars) reachable from each series

Chart authoring records

Chart-sheet and builder authoring accepts plain records instead of object graphs: TXLSChartTrendlineInfo, TXLSChartErrorBarsInfo, TXLSChartDataLabelsInfo, and TXLSChartSeriesStyleInfo fill the series entries passed to TXLSWorksheets.AddChartSheet and the shared chart builder, and TXLSPivotChartInfo describes the pivot-chart framing used when a chart is attached to a pivot table

PDF attachments, signatures, and HTML export

IXLSPDFAttachmentSourceWriteTo streams attachment bytes into the PDF export without requiring the exporter to own the source data
TXLSPDFExportAttachmentDuplicatePolicy selects duplicate-name handling, AttachmentSpoolThreshold controls attachment spooling, and DocumentLanguage writes the document language metadata
TXLSPDFSignatureTextAlign, TextSize, TextColor, TextBold, and TextItalic configure the visible signature appearance
TXLSHTMLExportViewMode (type TXLSHtmlViewMode: current view or full spreadsheet table) chooses the HTML presentation, while HotTrackTargets (set of TXLSHtmlHotTrackTarget) and HotTrackColor configure interactive cell and object highlighting
TXLSXHtmlExportOptionsViewMode, HotTrackTargets, and HotTrackColor provide the equivalent XLSX HTML export controls

Calculation audit and workbook controls

TXLSCalculationAuditReportTruncated reports an issue-limit truncation, StackTruncated reports call-stack frame truncation, and Issues indexes the recorded calculation issues
TXLSUserFunctionRegistryGeneration changes whenever the registered user-function set changes, allowing cached formula bindings to be invalidated
EXLSReportRecoverableDataCategory identifies the recoverable report-data category presented to the caller
IXLSWorkBookManualCalculationThreadCount limits the worker count used by manual calculation
TXLSXDataValidationHasUnknownImeMode reports an IME mode value that HotXLS preserved but does not recognize
TXLSXTableColumnCalculatedFormulaArrayRaw and ColumnTotalsFormulaArrayRaw expose the original array-formula text for table columns

Legacy PivotCache framing compatibility

TXLSPivotCacheRawBucketIndex identifies the source substream position, RawFramingIsLegacy identifies an old HotXLS framing, RawModelIsComplete reports whether the typed model represents every record, and CanUpgradeFraming reports whether opt-in typed re-emission is safe
TXLSPivotCacheStreamId exposes the classic cache stream identity, SourceDataType exposes the classic source-data type, and RawHasStorageStream reports whether a loaded cache came from an independent PivotCache storage stream
TXLSWorkbookUpgradeLegacyPivotCacheFraming opts in to rewriting only legacy HotXLS cache framings whose typed model is complete; ordinary raw cache replay remains the default

StreamId is written as the SXStreamID record ([MS-XLS] §2.4.303) and repeated as the SXDB header idstm field, which must equal it; SourceDataType is written as the SXVS record ([MS-XLS] §2.4.317: $0001 worksheet, $0002 external, $0004 consolidation, $0010 scenario) and repeated as the SXDB header vsType field, which must equal it. Caches built from a worksheet range start at the worksheet type, while caches read back from a file keep the value their substream carried, so the BIFF writer never leaves an SXDB field naming a record it did not emit; RawHasStorageStream marks a cache loaded from its own storage stream whose workbook-global descriptor precedes the cached records

Clipboard integration and paste options

TXLSPasteOption = (xlpoValuesOnly, xlpoInsertRows, xlpoInsertCols);
TXLSPasteOptions = set of TXLSPasteOption;

function XLSGetClipboardText: WideString;
function XLSSetClipboardText(const Text: WideString): Boolean;
function XLSSetClipboardTextAndHtml(const Text: WideString;
  const Html: AnsiString): Boolean;
function XLSBuildHtmlClipboard(const Html: AnsiString): AnsiString;
function XLSEncodeClipboardField(const Text: WideString): WideString;
function XLSClipboardHasText: Boolean;
function XLSParseClipboardGrid(const ClipboardText: WideString;
  Loader: TXLSCSVLoader): Boolean;
function XLSClipboardHasXmlSpreadsheet: Boolean;
function XLSGetClipboardXmlSpreadsheet: WideString;
function XLSClipboardHasBiff8: Boolean;
      
The paste options are shared by both facades' PasteFromClipboard overloads: xlpoValuesOnly keeps the cached values of formula cells and skips formats and merges, while xlpoInsertRows and xlpoInsertCols shift existing content before the block lands
The helpers wrap the Windows clipboard for spreadsheet interop: text helpers use CF_UNICODETEXT (falling back to CF_TEXT through the current ANSI code page), XLSSetClipboardTextAndHtml writes text and a styled HTML Format payload in one transaction, XLSBuildHtmlClipboard computes the CF_HTML byte offsets for a document or fragment, and XLSEncodeClipboardField quotes one tab-separated field. XLSParseClipboardGrid parses clipboard text as tab-separated rows with the same type sniffing TXLSCSVLoader uses for CSV, and the Biff8 helpers detect and read the native stream Excel itself places on the clipboard so pasted data keeps values, formulas, and formatting without text loss

Cell display text resolution

TXLSCellDisplayMode = (xcdmFormattedValue, xcdmFormulaText,
  xcdmSuppressedZero);

TXLSCellDisplayOptions = record
  ShowFormulas: Boolean;
  ShowZeros: Boolean;
  SheetProtected: Boolean;
  FormulaWidthFactor: Double;
  DateSerialZero: Double;
end;

TXLSCellDisplayInput = record
  HasFormula: Boolean;
  FormulaHidden: Boolean;
  IsNumericZero: Boolean;
  FormulaText: WideString;
  FormattedText: WideString;
end;

TXLSCellDisplayResult = record
  Mode: TXLSCellDisplayMode;
  Text: WideString;
  TreatAsText: Boolean;
  EffectiveWidthFactor: Double;
end;

function XLSDefaultCellDisplayOptions: TXLSCellDisplayOptions;
function XLSNormalizeFormulaDisplayText(const FormulaText: WideString): WideString;
function XLSResolveCellDisplay(const Options: TXLSCellDisplayOptions;
  const Input: TXLSCellDisplayInput): TXLSCellDisplayResult;
      
One shared resolver decides what a cell shows for a given view state: formulas instead of values, suppressed zeros, hidden formula text on protected sheets, and the doubled width factor Excel applies to formula display. The workbook viewer and the renderers call it through their display-options entry points, and applications can call XLSResolveCellDisplay directly with their own input records; XLSDefaultCellDisplayOptions returns the canonical defaults and XLSNormalizeFormulaDisplayText normalizes a formula string for display

Classic data validation objects

TXLSDataValidationType = (xlsDvAny, xlsDvWhole, xlsDvDecimal, xlsDvList,
  xlsDvDate, xlsDvTime, xlsDvTextLength, xlsDvCustom);
TXLSDvErrorStyle = (xlsDvErrStop, xlsDvErrWarning, xlsDvErrInformation);

TDVRange = class;             { one validation rule over one or more ranges }
TDVRangeList = class;         { the per-sheet rule collection }
TDataValidator = class;       { engine that checks edits against the rules }
      
The typed TXLSWorksheet.Add*Validation helpers create TDVRange rules in the sheet's TDVRangeList; each rule carries its TXLSDataValidationType, bounds, input and error messages, and TXLSDvErrorStyle. TDataValidator evaluates an edit against the rules and reports whether the value is acceptable, which is also the check behind Excel's own validation prompts

Indexed color scanning and resolution

TXLSIndexedColorKind = (xickPalette, xickAutomatic, xickSystem, xickInvalid);
TXLSSystemColorRole = (xscrNone, xscrWindowText, xscrWindowBackground,
  xscrChartText, xscrChartBackground, xscrChartNeutral, xscrToolTipText);

TXLSIndexedColorResolution = record
  Kind: TXLSIndexedColorKind;
  RawIndex: Int64;
  PaletteSlot: Integer;
  SystemColorRole: TXLSSystemColorRole;
  ARGB: LongWord;
  HasResolvedColor: Boolean;
end;

TXLSNearestIndexedColorMatch = record
  InputARGB: LongWord;
  ColorIndex: Integer;
  PaletteSlot: Integer;
  ARGB: LongWord;
  DistanceSquared: Double;
  ExactMatch: Boolean;
end;

TXLSIndexedColorUsageKind = (xicukFont, xicukFillForeground,
  xicukFillBackground, xicukGradient, xicukBorder, xicukConditionalFormat,
  xicukChart, xicukShape, xicukComment, xicukWorksheet, xicukOther);
      
These records back the workbook-level ResolveIndexedColor, NearestIndexedColor, and ScanIndexedColorUsage methods: a resolution reports which of the four TXLSIndexedColorKind sources an indexed token came from together with its palette slot, system-color role, and normalized ARGB, a nearest match adds the squared RGB distance and exact-match flag, and the usage scan tags every consumer category that locks a palette slot. The library keeps an internal TXLSIndexedColorMatcher cache keyed by palette generation — FindNearest answers nearest-color queries from it and UpdateSlot patches one palette slot — so repeated resolutions stay allocation-free

A1 reference helpers

function XLSA1CellRef(ARow, ACol: Integer): WideString;
function XLSTryParseA1CellRef(const ARef: WideString;
  out ARow, ACol: Integer): Boolean;
function XLSTryParseA1RangeRef(const ARef: WideString;
  out ARow1, ACol1, ARow2, ACol2: Integer): Boolean;
      
Standalone helpers for the same A1 notation the workbook APIs accept: they format zero-based coordinates as an A1 cell reference and parse cell or range references back, returning False for malformed input instead of raising

See also