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
TXLSAutofilter | Add, 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 |
TXLSAutofilterItem | Shape 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 |
TXLSDataBarSpec | AxisColor, 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 |
TXLSIconSetSpec | ThresholdEqualsInclude selects inclusive or exclusive comparison for each icon threshold |
TXLSCfValue | IsIndexedColor 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
TXLSDataTable | Assign, 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 |
TXLSDataTables | Add, 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 |
TXLSPivotCacheField | GroupBaseField 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
TXLSDiagnostic | Code, NativeCode, Message, Severity, ExceptionClass, PartName, RecordId, SheetIndex, SheetName, and StreamOffset identify one parser, writer, or package diagnostic |
TXLSDiagnostics | Add appends a diagnostic, Clear resets the collection, and Count plus Items enumerate its entries |
TXLSDiagnosticSeverity and TXLSDiagnosticOperation | TXLSDiagnosticSeverity (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 |
TXLSFormulaDebugSession | CurrentStep, DependencyCount, NodeCount, and StepCount expose the current debugger snapshot and its trace sizes |
TXLSFormulaTracer | StepCount reports the number of recorded evaluation steps |
TXLSImportCheck | AddRule, 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 |
External link save policies
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
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
TXLSHTMLImport | LoadFromHTML overloads import HTML table content from a stream or file into a worksheet, with optional start coordinates, table selection, and decimal separator |
TXLSCodeGen | Language (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) |
TXLSXWorkbookCompare | LeftName and RightName label the inputs, Compare performs comparison, and Diff exposes the resulting TlxCompareDiff entries classified by TlxCompareKind |
TXLSFileMonitor | IntervalMs 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 TXLSCSVSaver | The 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
TXLSXOpaquePackage | LoadWorkbookXmlMetadata 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 |
TXLSFileStorage | Load, 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 |
TXLSBlob | Add 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 |
TXLSBlobList | Append, AppendList, CopyData, and Write combine or emit entries; Entries and TotalSize expose list state |
TXLSWideStringBuilder | AddString appends text and Length reports the accumulated character count |
Drawing and workbook viewer additions
TXLSFillFormat | PictureFill configures a picture-backed shape fill, while FillType selects the fill kind (solid, gradient, picture, or preset texture) that the writer emits |
TXLSShapes | AddScrollBar 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 |
TXLSWorkbookViewer | CanUndo and CanRedo report edit-history availability, while ReferencePickMode enables interactive cell or range reference selection |
Pagination, image output, and printing
TXLSGraphicsBackend | DrawTiledImage paints a sheet background repeatedly across the clipped page region |
TXLSPaginationModel | CompactRangeMode, IncludeDrawings, IncludeGridlines, IncludeCellBorders, and PaintPageBackground control page content; RenderDPI, RenderColorMode, and RenderSession expose output resolution, color handling, and the active render session |
TXLSCellImageExporter | Measure 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 |
TXLSPageImageExporter | BeforePaint, AfterPaint, MaxPixels, MaxBytes, BackgroundColor, and TransparentBackground apply the same paint hooks and output safety limits to paged image export |
TXLSPrintDocument | PrintWorksheet, 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
TXLSChartSeries | AddTrendline and AddErrorBars create typed series annotations, while TrendlineCount and ErrorBarCount report their collection sizes |
TXLSChartAxis | HasAxcExtFlag tests one raw AXCEXT flag without requiring callers to decode the bit mask |
TXLSChartModel | AxisGroupCount reports the number of primary and secondary axis groups decoded from the chart |
TXLSCustomChart | AddAreaData appends a pre-built area item for save-time formula rebinding and ApplyDateAxisModel applies a typed date-axis model to the raw chart records |
TXLSWorksheet | AddChartObject anchors a chart frame on the worksheet and connects it to the shared chart builder |
TXLSXChartLayoutResolver | TryResolve 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
IXLSPDFAttachmentSource | WriteTo streams attachment bytes into the PDF export without requiring the exporter to own the source data |
TXLSPDFExport | AttachmentDuplicatePolicy selects duplicate-name handling, AttachmentSpoolThreshold controls attachment spooling, and DocumentLanguage writes the document language metadata |
TXLSPDFSignature | TextAlign, TextSize, TextColor, TextBold, and TextItalic configure the visible signature appearance |
TXLSHTMLExport | ViewMode (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 |
TXLSXHtmlExportOptions | ViewMode, HotTrackTargets, and HotTrackColor provide the equivalent XLSX HTML export controls |
Calculation audit and workbook controls
TXLSCalculationAuditReport | Truncated reports an issue-limit truncation, StackTruncated reports call-stack frame truncation, and Issues indexes the recorded calculation issues |
TXLSUserFunctionRegistry | Generation changes whenever the registered user-function set changes, allowing cached formula bindings to be invalidated |
EXLSReportRecoverableData | Category identifies the recoverable report-data category presented to the caller |
IXLSWorkBook | ManualCalculationThreadCount limits the worker count used by manual calculation |
TXLSXDataValidation | HasUnknownImeMode reports an IME mode value that HotXLS preserved but does not recognize |
TXLSXTable | ColumnCalculatedFormulaArrayRaw and ColumnTotalsFormulaArrayRaw expose the original array-formula text for table columns |
Legacy PivotCache framing compatibility
TXLSPivotCache | RawBucketIndex 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 |
TXLSPivotCache | StreamId 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 |
TXLSWorkbook | UpgradeLegacyPivotCacheFraming 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