HotXLS Docs

TXLSXWorksheet class

Single worksheet inside a TXLSXWorkbook Owns the cell collection together with the merged-cell, hyperlink, and comment collections. Declared in lxHandleX

Declaration

type
  TXLSXTextBox = class
    constructor Create(const AText: WideString; AFromRow, AFromCol, AToRow, AToCol: Integer);
    property Text: WideString;
    property FromRow, FromCol, ToRow, ToCol: Integer;
  end;

  TXLSXIgnoredError = class
    constructor Create(const ASqRef: WideString);
    procedure Assign(Source: TXLSXIgnoredError);
    property SqRef: WideString;
    property EvalError: Boolean;
    property TwoDigitTextYear: Boolean;
    property NumberStoredAsText: Boolean;
    property Formula: Boolean;
    property FormulaRange: Boolean;
    property UnlockedFormula: Boolean;
    property EmptyCellReference: Boolean;
    property ListDataValidation: Boolean;
    property CalculatedColumn: Boolean;
  end;

  TXLSXIgnoredErrors = class
    function Add(const ASqRef: WideString): TXLSXIgnoredError;
    function AddExisting(Source: TXLSXIgnoredError): TXLSXIgnoredError;
    procedure Delete(Index: Integer);
    procedure Clear;
    property Count: Integer;
    property Items[Index: Integer]: TXLSXIgnoredError; default;
  end;

  TXLSXScenarioInputCell = class
    property Ref: WideString;
    property Value: WideString;
    property NumberFormatId: Integer;
    property Deleted: Boolean;
    property Undone: Boolean;
  end;

  TXLSXScenarioInputCells = class
    function Add(const ARef, AValue: WideString): TXLSXScenarioInputCell;
    procedure Delete(Index: Integer);
    procedure Clear;
    property Count: Integer;
    property Items[Index: Integer]: TXLSXScenarioInputCell; default;
  end;

  TXLSXScenario = class
    property Name: WideString;
    property Locked: Boolean;
    property Hidden: Boolean;
    property User: WideString;
    property Comment: WideString;
    property InputCells: TXLSXScenarioInputCells;
  end;

  TXLSXScenarios = class
    function Add(const AName: WideString): TXLSXScenario;
    function FindByName(const AName: WideString): TXLSXScenario;
    procedure Delete(Index: Integer);
    procedure Clear;
    property Count: Integer;
    property Items[Index: Integer]: TXLSXScenario; default;
    property CurrentIndex: Integer;
    property ShownIndex: Integer;
    property SqRef: WideString;
  end;

  TXLSXWorksheet = class
    constructor Create(const AName: WideString);
    destructor Destroy; override;
    procedure SetWorkbook(AWorkbook: TXLSXWorkbook);
    function MergeCells(ARow1, ACol1, ARow2, ACol2: Integer): Integer;
    function FillMergedCellValues: Integer;
    property FormControls: TXLSXFormControls;
    function AddHyperlink(ARow, ACol: Integer; const AUrl: WideString): Integer; overload;
    function AddHyperlink(ARow, ACol: Integer; const AUrl, ADisplay: WideString): Integer; overload;
    function AddHyperlink(ARow, ACol: Integer; const AUrl, ADisplay, ATooltip: WideString): Integer; overload;
    function AddComment(ARow, ACol: Integer; const AText: WideString): Integer; overload;
    function AddComment(ARow, ACol: Integer; const AText, AAuthor: WideString): Integer; overload;
    function AddImage(ARow, ACol: Integer; const AData: AnsiString; AFormat: TXLSXImageFormat): Integer;
    function AddImageFromFile(ARow, ACol: Integer; const AFileName: WideString): Integer;
    function AddConditionalFormat(const ARange: WideString; AOp: TXLSXCfOperator; const AFormula1: WideString): Integer; overload;
    function AddConditionalFormat(const ARange: WideString; AOp: TXLSXCfOperator; const AFormula1, AFormula2: WideString): Integer; overload;
    // Excel 2007+ extension rules (v2.36.0+) — mirror the BIFF8 TXLSWorksheet API.
    // Their colors are BGR ($00BBGGRR, like a VCL TColor), not the ARGB used by fonts and fills
    function AddCondFormatDataBar(const ARange: WideString; AColor: LongWord;
      AMinKind: TXLSCfValueKind = cfvMinOfRange; const AMinValue: WideString = '';
      AMaxKind: TXLSCfValueKind = cfvMaxOfRange; const AMaxValue: WideString = ''): Integer;
    function AddCondFormatColorScale2(const ARange: WideString;
      AMinColor, AMaxColor: LongWord;
      AMinKind: TXLSCfValueKind = cfvMinOfRange; const AMinValue: WideString = '';
      AMaxKind: TXLSCfValueKind = cfvMaxOfRange; const AMaxValue: WideString = ''): Integer;
    function AddCondFormatColorScale3(const ARange: WideString;
      AMinColor, AMidColor, AMaxColor: LongWord;
      AMinKind: TXLSCfValueKind = cfvMinOfRange; const AMinValue: WideString = '';
      AMidKind: TXLSCfValueKind = cfvPercentile; const AMidValue: WideString = '50';
      AMaxKind: TXLSCfValueKind = cfvMaxOfRange; const AMaxValue: WideString = ''): Integer;
    function AddCondFormatIconSet(const ARange: WideString;
      ASetType: TXLSIconSetType): Integer;
    function AddCondFormatExpression(const ARange: WideString;
      const AFormula: WideString): Integer;
    function AddCondFormatContainsText(const ARange, AText: WideString): Integer;
    function AddCondFormatNotContainsText(const ARange, AText: WideString): Integer;
    function AddCondFormatBeginsWith(const ARange, AText: WideString): Integer;
    function AddCondFormatEndsWith(const ARange, AText: WideString): Integer;
    function AddCondFormatTop10(const ARange: WideString; ARank: Integer;
      ABottom: Boolean = False; APercent: Boolean = False): Integer;
    function AddCondFormatAboveAverage(const ARange: WideString;
      AAbove: Boolean = True): Integer;
    function AddCondFormatDuplicateValues(const ARange: WideString): Integer;
    function AddCondFormatUniqueValues(const ARange: WideString): Integer;
    function AddCondFormatContainsBlanks(const ARange: WideString): Integer;
    function AddCondFormatNotContainsBlanks(const ARange: WideString): Integer;
    function AddCondFormatContainsErrors(const ARange: WideString): Integer;
    function AddCondFormatNotContainsErrors(const ARange: WideString): Integer;
    function AddDataValidation(const ARange: WideString; AType: TXLSXDataValidationType; AOp: TXLSXDvOperator; const AFormula1: WideString): Integer; overload;
    function AddDataValidation(const ARange: WideString; AType: TXLSXDataValidationType; AOp: TXLSXDvOperator; const AFormula1, AFormula2: WideString): Integer; overload;
    function AddListValidation(const ARange, AItems: WideString): Integer;
    function AddWholeNumberValidation(const ARange: WideString; AOp: TXLSXDvOperator; const AFormula1: WideString): Integer; overload;
    function AddWholeNumberValidation(const ARange: WideString; AOp: TXLSXDvOperator; const AFormula1, AFormula2: WideString): Integer; overload;
    function AddDecimalValidation(const ARange: WideString; AOp: TXLSXDvOperator; const AFormula1: WideString): Integer; overload;
    function AddDecimalValidation(const ARange: WideString; AOp: TXLSXDvOperator; const AFormula1, AFormula2: WideString): Integer; overload;
    function AddDateValidation(const ARange: WideString; AOp: TXLSXDvOperator; const AFormula1: WideString): Integer; overload;
    function AddDateValidation(const ARange: WideString; AOp: TXLSXDvOperator; const AFormula1, AFormula2: WideString): Integer; overload;
    function AddTimeValidation(const ARange: WideString; AOp: TXLSXDvOperator; const AFormula1: WideString): Integer; overload;
    function AddTimeValidation(const ARange: WideString; AOp: TXLSXDvOperator; const AFormula1, AFormula2: WideString): Integer; overload;
    function AddTextLengthValidation(const ARange: WideString; AOp: TXLSXDvOperator; const AFormula1: WideString): Integer; overload;
    function AddTextLengthValidation(const ARange: WideString; AOp: TXLSXDvOperator; const AFormula1, AFormula2: WideString): Integer; overload;
    function AddCustomValidation(const ARange, AFormula: WideString): Integer;
    function CheckDataValidation(ARow, ACol: Integer; const AValue: Variant;
      SetIfValid: Boolean = False): Integer;
    // Excel-style table (insert table) — see TXLSXTable.
    function AddTable(const AName, ARange: WideString; AColumns: TStrings): Integer;
    // Chart helpers — anchored or full-page (via AddChartSheet on workbook).
    function AddChart(AChartType: TXLSXChartType; const ATitle: WideString;
      AFromRow, AFromCol, AToRow, AToCol: Integer): TXLSXChart;
    // Standalone drawing text boxes.
    function AddTextBox(const AText: WideString;
      AFromRow, AFromCol, AToRow, AToCol: Integer): TXLSXTextBox;
    function TextBoxCount: Integer;
    function TextBox(Index: Integer): TXLSXTextBox;
    function IndexOfTextBoxAt(ARow, ACol: Integer): Integer;
    function FindTextBoxAt(ARow, ACol: Integer): TXLSXTextBox;
    procedure DeleteTextBox(Index: Integer);
    function DeleteTextBoxAt(ARow, ACol: Integer): Boolean;
    function DeleteTextBoxesInRange(ARow1, ACol1, ARow2, ACol2: Integer): Integer;
    procedure ClearTextBoxes;
    // Internal Sheet!Cell hyperlink (no rels relationship needed).
    function AddHyperlinkToCell(ARow, ACol: Integer; const ALocation: WideString): Integer; overload;
    function AddHyperlinkToCell(ARow, ACol: Integer; const ALocation, ADisplay: WideString): Integer; overload;
    function AddHyperlinkToCell(ARow, ACol: Integer; const ALocation, ADisplay, ATooltip: WideString): Integer; overload;
    // Sheet visibility and selection state.
    property Visibility: TXLSXSheetVisibility;
    property Visible: Boolean;
    property IsSelected: Boolean;
    procedure SetIsSelected(Value: Boolean);
    // Auto-fit column width / row height from cell content.
    procedure AutoFitColumn(ACol: Integer; AMinWidth: Double = 0; AMaxWidth: Double = 0);
    procedure AutoFitColumns(AColMin, AColMax: Integer; AMinWidth: Double = 0; AMaxWidth: Double = 0);
    procedure AutoFitRow(ARow: Integer; AMinHeight: Double = 0; AMaxHeight: Double = 0);
    procedure AutoFitRows(ARowMin, ARowMax: Integer; AMinHeight: Double = 0; AMaxHeight: Double = 0);
    // Row / column insert and delete with cascade shift.
    procedure InsertRows(BeforeRow, Count: Integer);
    procedure DeleteRows(StartRow, Count: Integer);
    procedure InsertCols(BeforeCol, Count: Integer);
    procedure DeleteCols(StartCol, Count: Integer);
    // Manual page breaks.
    procedure AddRowBreak(BeforeRow: Integer);
    procedure AddColBreak(BeforeCol: Integer);
    function  HasRowBreak(BeforeRow: Integer): Boolean;
    function  HasColBreak(BeforeCol: Integer): Boolean;
    function  IndexOfRowBreak(BeforeRow: Integer): Integer;
    function  IndexOfColBreak(BeforeCol: Integer): Integer;
    procedure RemoveRowBreak(BeforeRow: Integer);
    procedure RemoveColBreak(BeforeCol: Integer);
    function  RemoveRowBreaksInRange(FirstRow, LastRow: Integer): Integer;
    function  RemoveColBreaksInRange(FirstCol, LastCol: Integer): Integer;
    procedure ClearRowBreaks;
    procedure ClearColBreaks;
    procedure ClearAllPageBreaks;
    function  RowBreakCount: Integer;
    function  ColBreakCount: Integer;
    function  RowBreaks(Index: Integer): Integer;
    function  ColBreaks(Index: Integer): Integer;
    function  KeepRowLinkLevel(AfterRow: Integer): Integer;
    function  KeepColLinkLevel(AfterCol: Integer): Integer;
    function Calculate(const Formula: WideString): Variant;
    function ForEachCell(Callback: TXLSXCellReadEvent): Integer;
    function ForEachFormattedCell(Callback: TXLSXCellTextEvent): Integer;
    function ForEachRow(Callback: TXLSXRowReadEvent): Integer;
    function FindText(const SearchText: WideString; out Row, Col: Integer): Boolean; overload;
    function FindText(const SearchText: WideString; out Row, Col: Integer; MatchCase: Boolean): Boolean; overload;
    function ReplaceText(const SearchText, ReplacementText: WideString): Integer; overload;
    function ReplaceText(const SearchText, ReplacementText: WideString; MatchCase: Boolean): Integer; overload;
    function FindText(const SearchText: WideString; out Row, Col: Integer; Options: TXLSXFindOptions; StartRow, StartCol: Integer): Boolean; overload;
    function FindTextIn(const SearchText: WideString; out Row, Col: Integer; Options: TXLSXFindOptions; FirstRow, FirstCol, LastRow, LastCol, StartRow, StartCol: Integer): Boolean;
    function ReplaceText(const SearchText, ReplacementText: WideString; Options: TXLSXFindOptions): Integer; overload;
    function ReplaceText(const SearchText, ReplacementText: WideString; Options: TXLSXFindOptions; Callback: TXLSXReplaceEvent): Integer; overload;
    function ReplaceTextIn(const SearchText, ReplacementText: WideString; Options: TXLSXFindOptions; FirstRow, FirstCol, LastRow, LastCol: Integer; Callback: TXLSXReplaceEvent): Integer;
    function WriteCells(const ARange: WideString; Callback: TXLSXCellWriteEvent): Integer; overload;
    function WriteCells(ARow1, ACol1, ARow2, ACol2: Integer; Callback: TXLSXCellWriteEvent): Integer; overload;
    function WriteRows(const ARange: WideString; Callback: TXLSXRowWriteEvent): Integer; overload;
    function WriteRows(ARow1, ACol1, ARow2, ACol2: Integer; Callback: TXLSXRowWriteEvent): Integer; overload;
    function WriteFloatRowValues(ARow, ACol: Integer; const AValues: array of Double): Integer;
    function WriteStringRowValues(ARow, ACol: Integer; const AValues: array of WideString): Integer;
    function WriteRowValues(ARow, ACol: Integer; const AValues: array of Variant): Integer;
    function WriteFloatColumnValues(ARow, ACol: Integer; const AValues: array of Double): Integer;
    function WriteStringColumnValues(ARow, ACol: Integer; const AValues: array of WideString): Integer;
    function WriteColumnValues(ARow, ACol: Integer; const AValues: array of Variant): Integer;
    // Column / row metadata.
    procedure SetColWidth(ACol: Integer; AWidth: Double);
    function HasColWidth(ACol: Integer): Boolean;
    procedure ClearColWidths;
    procedure SetRowHeight(ARow: Integer; AHeight: Double);
    function HasRowHeight(ARow: Integer): Boolean;
    procedure ClearRowHeights;
    procedure SetRowOutlineLevel(ARow, ALevel: Integer);
    function HasRowOutlineLevel(ARow: Integer): Boolean;
    procedure ClearRowOutlineLevels;
    procedure SetColOutlineLevel(ACol, ALevel: Integer);
    function HasColOutlineLevel(ACol: Integer): Boolean;
    procedure ClearColOutlineLevels;
    procedure SetRowHidden(ARow: Integer; AHidden: Boolean);
    procedure SetColHidden(ACol: Integer; AHidden: Boolean);
    procedure ClearRowHidden;
    procedure ClearColHidden;
    procedure SetRowCollapsed(ARow: Integer; ACollapsed: Boolean);
    procedure SetColCollapsed(ACol: Integer; ACollapsed: Boolean);
    procedure ClearRowCollapsed;
    procedure ClearColCollapsed;
    function TryGetOutlineNode(AAxis: TXLSOutlineAxis; ANodeIndex: Integer; out ANode: TXLSOutlineNode): Boolean;
    function SetOutlineNodeCollapsed(AAxis: TXLSOutlineAxis; ANodeIndex: Integer; ACollapsed: Boolean; AChildMode: TXLSOutlineChildMode = xocPreserve): Boolean;
    procedure SetOutlineDisplayLevel(AAxis: TXLSOutlineAxis; ADisplayLevel: Integer; AChildMode: TXLSOutlineChildMode = xocPreserve);
    // Range copy / move / clear API.
    procedure ClearRangeValues(const ARange: WideString); overload;
    procedure ClearRangeValues(ARow1, ACol1, ARow2, ACol2: Integer); overload;
    procedure ClearRange(ARow1, ACol1, ARow2, ACol2: Integer);
    procedure CopyRange(ASrcRow1, ASrcCol1, ASrcRow2, ASrcCol2, ADstRow, ADstCol: Integer);
    procedure CopyRangeTo(ASrcRow1, ASrcCol1, ASrcRow2, ASrcCol2: Integer;
      ATargetSheet: TXLSXWorksheet; ADstRow, ADstCol: Integer);
    procedure CopyFrom(ASource: TXLSXWorksheet);
    procedure MoveRange(ASrcRow1, ASrcCol1, ASrcRow2, ASrcCol2, ADstRow, ADstCol: Integer);
    procedure SortRange(ARow1, ACol1, ARow2, ACol2: Integer;
      const AKeyCols: array of Integer; const ADescending: array of Boolean);
    function GetCellVisibleFormat(ARow, ACol: Integer): TXLSXCellStyleState;
    function Subtotal(ARow1, ACol1, ARow2, ACol2, AChangeColumn,
      AFunction: Integer; const ASubtotalColumns: array of Integer): Integer; overload;
    function Subtotal(ARow1, ACol1, ARow2, ACol2, AChangeColumn,
      AFunction: Integer; const ASubtotalColumns: array of Integer;
      const AGrandTotalText: WideString): Integer; overload;
    function SubtotalDefaultEnglishString(AFunction: Integer): WideString;
    // Frozen panes (top rows / left columns).
    procedure FreezePanes(ARow, ACol: Integer);
    procedure UnfreezePane;
    property FreezeCol, FreezeRow: Integer;
    // Page setup.
    procedure SetPageMargins(ALeft, ARight, ATop, ABottom: Double); overload;
    procedure SetPageMargins(ALeft, ARight, ATop, ABottom, AHeader, AFooter: Double); overload;
    property MarginLeft, MarginRight, MarginTop, MarginBottom,
             MarginHeader, MarginFooter: Double;
    property MarginLeftCM, MarginRightCM, MarginTopCM, MarginBottomCM,
             MarginHeaderCM, MarginFooterCM: Double;
    property PageLandscape: Boolean;
    property PaperSize, PageScale, FitToWidth, FitToHeight: Integer;
    property HeaderText, FooterText: WideString;
    property LeftHeader, CenterHeader, RightHeader: WideString;
    property LeftFooter, CenterFooter, RightFooter: WideString;
    property CenterHorizontally, CenterVertically: Boolean;
    property PrintGridlines: Boolean;
    property PrintHeadings: Boolean;
    property BlackAndWhite: Boolean;
    property Draft: Boolean;
    property PrintNotes: Boolean;
    property PrintOverThenDown: Boolean;
    property PrintArea: WideString;
    property PrintTitleRows: WideString;
    property PrintTitleCols: WideString;
    // Auto-filter range (e.g. "A1:C100"). Empty = no filter.
    procedure SetAutoFilter(ARow1, ACol1, ARow2, ACol2: Integer); overload;
    procedure SetAutoFilter(const ARange: WideString); overload;
    procedure ClearAutoFilter;
    property AutoFilterRange: WideString;
    property AutoFilterColumns: TXLSXAutoFilterColumns;
    function AddAutoFilterColumn(AColId: Integer; AOp1: TXLSXAutoFilterOp; const ACriteria1: WideString): TXLSXAutoFilterColumn; overload;
    function AddAutoFilterColumn(AColId: Integer; AOp1: TXLSXAutoFilterOp; const ACriteria1: WideString; AOp2: TXLSXAutoFilterOp; const ACriteria2: WideString; AAndConnector: Boolean): TXLSXAutoFilterColumn; overload;
    procedure ClearAutoFilterColumns;
    function AutoFilterRowVisible(ARow: Integer): Boolean;
    function PreviewAutoFilterRows(Callback: TXLSXAutoFilterRowEvent): Integer;
    function ApplyAutoFilter(const ARange: WideString): Boolean;
    // Sheet protection (16-bit legacy hash).
    procedure Protect; overload;
    procedure Protect(const APassword: WideString); overload;
    procedure UnProtect;
    property IsProtected: Boolean;
    property AllowOption[Option: TXLSXSheetProtectionOption]: Boolean;
    property SheetProtectionOptions: TXLSXSheetProtectionOptions;
    property PageSetupTouched: Boolean;
    property SheetProtectHash: WideString;
    // Sheet tab color + chart-sheet flag.
    property TabColor: LongWord;
    property TabColorIsAuto: Boolean;
    property IsChartSheet: Boolean;
    property Name: WideString;
    property Workbook: TXLSXWorkbook;
    property AlignWithMargins: Boolean;
    property CodeName: WideString;
    property ConsolidateXml: WideString;
    property DifferentFirst: Boolean;
    property DifferentOddEven: Boolean;
    property EvenFooterText: WideString;
    property EvenHeaderText: WideString;
    property FirstFooterText: WideString;
    property FirstHeaderText: WideString;
    property FirstPageNumber: Integer;
    property GridColor: LongWord;
    property HorizontalDpi: Integer;
    property OutlineLevelCol: Integer;
    property OutlineLevelRow: Integer;
    property PaneState: WideString;
    property PhoneticAlignment: WideString;
    property PhoneticFontId: Integer;
    property PhoneticType: WideString;
    property PrintErrors: Integer;
    property ScaleWithDoc: Boolean;
    property ScenariosXml: WideString;
    property SheetProtectAlgorithmName: WideString;
    property SheetProtectHashValue: WideString;
    property SheetProtectSaltValue: WideString;
    property SheetProtectSpinCount: Integer;
    property ShowFormulas: Boolean;
    property ShowOutlineSymbols: Boolean;
    property SortState: TXLSXSortState;
    property SortStateXml: WideString;
    property SummaryBelow: Boolean;
    property SummaryRight: Boolean;
    property UseFirstPageNumber: Boolean;
    property UsePrinterDefaults: Boolean;
    property VerticalDpi: Integer;
    property ZeroHeight: Boolean;
    property ZoomNormal: Integer;
    property ZoomPageLayout: Integer;
    property ZoomSheetLayout: Integer;
    // Sheet view display options.
    property View: TXLSXWindowView;
    property Zoom: Integer;
    property DisplayGridLines: Boolean;
    property DisplayZeros: Boolean;
    property DisplayRightToLeft: Boolean;
    property StandardWidth: Double;
    property StandardHeight: Double;
    // Collections owned by the worksheet.
    property Cells: TXLSXCells;
    property MergedCells: TXLSXMergedCells;
    property Hyperlinks: TXLSXHyperlinks;
    property Comments: TXLSXComments;
    property Images: TXLSXImages;
    property ConditionalFormats: TXLSXConditionalFormats;
    property DataValidations: TXLSXDataValidations;
    property IgnoredErrors: TXLSXIgnoredErrors;
    property Scenarios: TXLSXScenarios;
    property Tables: TXLSXTables;
    property Charts: TXLSXCharts;
    property PivotTables: TXLSPivotTables;
    function AddPivotTable(const SourceRangeA1: WideString; DestRow, DestCol: Integer; const Name: WideString): TXLSPivotTable;
    function AddPivotTableCopy(SourcePivot: TXLSPivotTable; DestRow, DestCol: Integer; const NewName: WideString): TXLSPivotTable;
    function PivotSetDataFieldFormat(DataField: TXLSPivotDataField; const FormatStr: WideString): Word;
    property ColWidth[ACol: Integer]: Double;
    property RowHeight[ARow: Integer]: Double;
    property RowOutlineLevel[ARow: Integer]: Integer;
    property ColOutlineLevel[ACol: Integer]: Integer;
    property RowHidden[ARow: Integer]: Boolean;
    property ColHidden[ACol: Integer]: Boolean;
    property RowCollapsed[ARow: Integer]: Boolean;
    property ColCollapsed[ACol: Integer]: Boolean;
    property Range[const Ref: WideString]: TXLSXRange;
    property RCRange[R1, C1, R2, C2: Integer]: TXLSXRange;
    property UsedRange: TXLSXRange;
    function EntireRow(ARow: Integer): TXLSXRange;
    function EntireColumn(ACol: Integer): TXLSXRange;
    property ProtectedRanges: TXLSXProtectedRanges;
    property RawWorksheetExts: TXLSXRawWorksheetExts;
    property SparklineGroups: TXLSXSparklineGroups;
    property ThreadedComments: TXLSXThreadedComments;
    function AddAreaChart(AChartType: TXLSXChartType; const ATitle: WideString; AFromRow, AFromCol, AToRow, AToCol: Integer): TXLSXChart;
    function AddBarChart(AChartType: TXLSXChartType; const ATitle: WideString; AFromRow, AFromCol, AToRow, AToCol: Integer): TXLSXChart;
    function AddChartFromRange(const ARange: WideString; AChartType: TXLSXChartType): TXLSXChart;
    function AddColumnChart(AChartType: TXLSXChartType; const ATitle: WideString; AFromRow, AFromCol, AToRow, AToCol: Integer): TXLSXChart;
    function AddLineChart(AChartType: TXLSXChartType; const ATitle: WideString; AFromRow, AFromCol, AToRow, AToCol: Integer): TXLSXChart;
    function AddPieChart(AChartType: TXLSXChartType; const ATitle: WideString; AFromRow, AFromCol, AToRow, AToCol: Integer): TXLSXChart;
    function AddSparklineGroup(const ARange, ALocation: WideString; AType: TXLSXSparklineType): TXLSXSparklineGroup;
    function AddThreadedComment(ARow, ACol: Integer; const AText, AAuthor: WideString): TXLSXThreadedComment;
    function AddThreadedReply(AParentComment: TXLSXThreadedComment; const AText, AAuthor: WideString): TXLSXThreadedComment;
    function GetSheetProtectOption(Option: TXLSXSheetProtectionOption): Boolean;
    procedure SetSheetProtectOption(Option: TXLSXSheetProtectionOption; Value: Boolean);
    procedure PasteFromClipboard(StartRow, StartCol: Integer);
    function AddWordArt(const AText, APreset: WideString; AFromRow, AFromCol, AToRow, AToCol: Integer): TXLSXTextBox;
    procedure BuildRowMajorCellOrder;
    procedure ClearRawDrawingAnchors;
    function CreateConditionalFormatEvaluator: TXLSXConditionalFormatEvaluator;
    function RawDrawingAnchor(Index: Integer): WideString;
    function RawDrawingAnchorCount: Integer;
    function AddRawDrawingAnchor(const AXml: WideString): TXLSXDrawingObject;
    procedure BringToFront(AObject: TXLSXDrawingObject);
    procedure SendToBack(AObject: TXLSXDrawingObject);
    procedure BringForward(AObject: TXLSXDrawingObject);
    procedure SendBackward(AObject: TXLSXDrawingObject);
    function SaveAsPDF(const FileName: WideString): Integer; overload;
    function SaveAsPDF(Stream: TStream): Integer; overload;
    procedure ToggleColGrouped(ACol: Integer);
    procedure ToggleRowGrouped(ARow: Integer);
  end;

  TXLSXBuiltinCellStyle = (
    xbsNormal, xbsGood, xbsBad, xbsNeutral,
    xbsCalculation, xbsCheckCell, xbsExplanatoryText, xbsInput,
    xbsLinkedCell, xbsNote, xbsOutput, xbsWarningText,
    xbsHeading1, xbsHeading2, xbsHeading3, xbsHeading4, xbsTitle, xbsTotal,
    xbsAccent1, xbsAccent2, xbsAccent3, xbsAccent4, xbsAccent5, xbsAccent6);

  TXLSXRange = class
    function RefA1: WideString;
    function SaveAsHTML(const FileName: WideString): Integer; overload;
    function SaveAsHTML(const FileName: WideString; Options: TXLSXHtmlExportOptions): Integer; overload;
    function SaveAsHTML(Stream: TStream): Integer; overload;
    function SaveAsHTML(Stream: TStream; Options: TXLSXHtmlExportOptions): Integer; overload;
    procedure SetValue(const V: Variant);
    procedure SetFormula(const F: WideString);
    procedure ClearValues;
    procedure Clear;
    procedure ClearAll;
    procedure SetFontIndex(AIdx: Integer);
    procedure SetFillIndex(AIdx: Integer);
    procedure SetBorderIndex(AIdx: Integer);
    procedure SetNumberFormatIndex(AIdx: Integer);
    procedure SetAlignmentIndex(AIdx: Integer);
    procedure SetNumberFormat(const Fmt: WideString);
    procedure SetBorders(Kind: TXLSXBorderEdgeKind; Style: TXLSXBorderStyle); overload;
    procedure SetBorders(Kind: TXLSXBorderEdgeKind; Style: TXLSXBorderStyle; Color: LongWord); overload;
    procedure SetLocked(ALocked: Boolean);
    procedure SetFormulaHidden(AHidden: Boolean);
    procedure AutoFitColumns(AMinWidth: Double = 0; AMaxWidth: Double = 0);
    procedure AutoFitRows(AMinHeight: Double = 0; AMaxHeight: Double = 0);
    procedure Merge; overload;
    procedure Merge(Across: OleVariant); overload;
    procedure Unmerge;
    function Offset(DRow, DCol: Integer): TXLSXRange;
    function Resize(NewRowCount, NewColCount: Integer): TXLSXRange;
    procedure Sort(AKeyColumn: Integer; ADescending: Boolean = False); overload;
    procedure Sort(const AKeyColumns: array of Integer; const ADescending: array of Boolean); overload;
    procedure ApplyBuiltinStyle(AStyle: TXLSXBuiltinCellStyle);
    procedure CopyTo(ADestRow, ADestCol: Integer);
    procedure MoveTo(ADestRow, ADestCol: Integer);
    procedure InsertRows;
    procedure DeleteRows;
    procedure InsertCols;
    procedure DeleteCols;
  end;
      

Members

Name Worksheet tab name as shown by Excel
SetWorkbook / Workbook Sets and exposes the workbook back-reference used by cell and workbook-shared helpers such as shared number formats, fills, borders, and shared-string reads
Cells Cell collection. Use Cells.Item[Row, Col].Value See TXLSXCells / TXLSXCell
Calculate Compiles and evaluates an Excel formula string within this worksheet context A leading = is accepted, and worksheet-local references, referenced formula cells, cross-sheet references, defined-name ranges, and supported text, date, workday, engineering/base-conversion, bitwise, statistical, aggregate, and math functions are resolved by the workbook's shared formula evaluator
GetCellVisibleFormat / Subtotal / SubtotalDefaultEnglishString / CheckDataValidation GetCellVisibleFormat resolves the effective style at a coordinate without creating an empty cell. Subtotal groups a sorted rectangle by changes in one absolute worksheet column, accepts Excel SUBTOTAL function numbers 1 through 11 or 101 through 111, inserts formula and outline rows, and gives back the number of inserted rows. SubtotalDefaultEnglishString maps a SUBTOTAL function number to its English name (for example 1 to Average and 9 to Total). CheckDataValidation returns -1 for a valid candidate or the 1-based first failing rule and commits only when SetIfValid is true and all applicable rules pass
ForEachCell / ForEachFormattedCell / ForEachRow / FindText / ReplaceText / WriteCells / WriteRows Helpers for loaded-cell and loaded-row walking, text search, text replacement, and range filling. ForEachCell walks existing cells in row order with value and formula text. ForEachFormattedCell walks populated cells in row/column order delivering each cell's display text with the number format applied and returns the visited count whilst honouring callback cancellation. ForEachRow walks existing rows in row order and reports each row's first and last loaded column indexes. FindText and ReplaceText scan loaded text cells in row order, skip formulas and non-text values, and can match case sensitively; option overloads add Excel Find-dialog semantics (wildcards, whole-cell match, case sensitivity, formula-text search, backward scan, column-major ordering) and FindTextIn / ReplaceTextIn confine the scan to a rectangular window with an optional per-match replacement callback. WriteCells requests values for a numeric or A1-style range and supports per-cell skipping and cancellation. WriteRows requests a Variant array for each row and supports whole-row skip and cancellation
MergedCells Merged-range collection. See TXLSXMergedCells
Hyperlinks Hyperlink collection. See TXLSXHyperlinks
Comments Cell-comment collection. See TXLSXComments
Tables / AddTable Excel-style table band on the worksheet. See TXLSXTable / TXLSXTables
Charts / AddChart Anchored chart collection. See TXLSXChart / TXLSXCharts The chart type enum supports column, bar, line, pie, area, doughnut, scatter, bubble, and radar charts For a full-page chart, take Workbook.AddChartSheet(...)
AddTextBox / TextBoxCount / TextBox / FindTextBoxAt Creates, enumerates, locates, deletes, and clears standalone drawing text boxes anchored over cell rectangles IndexOfTextBoxAt and FindTextBoxAt locate the first text box containing a cell, while DeleteTextBoxAt, DeleteTextBoxesInRange, DeleteTextBox, and ClearTextBoxes remove individual or grouped text boxes without touching cell comments
AddHyperlinkToCell overloads Internal anchor hyperlink — jumps to a Sheet!Cell location elsewhere in the workbook. No rels relationship is generated. See TXLSXHyperlink.Location
RowOutlineLevel / ColOutlineLevel Group nesting level (0..7) for the matching row or column. SaveAs emits outlineLevel="N" on the row / col entry
RowHidden / ColHidden Boolean — drops the row or column from view (hidden="1")
RowCollapsed / ColCollapsed Boolean — marks a row / column whose grouping parent is collapsed (collapsed="1")
FreezePanes(Row, Col) / UnfreezePane Sets a frozen split — the top Row rows and left Col columns stay visible whilst the remainder scrolls. FreezeCol and FreezeRow are read-only properties exposing the current split
SetPageMargins / Page setup properties All six margins plus PageLandscape, PaperSize, PageScale, FitToWidth, FitToHeight, HeaderText, FooterText, LeftHeader, CenterHeader, RightHeader, LeftFooter, CenterFooter, RightFooter, CenterHorizontally, and CenterVertically. Setting any one triggers the corresponding <pageMargins>, <pageSetup>, and <headerFooter> blocks on SaveAs. Use the named xlsxPaper* constants such as xlsxPaperLetter, xlsxPaperA4, xlsxPaperA3, and xlsxPaperLegal instead of raw Excel paper-size codes when possible
Visibility Sheet visibility: xlsxSheetVisible (default), xlsxSheetHidden (hidden but unhideable in Excel UI), or xlsxSheetVeryHidden (requires VBA or code to unhide). SaveAs emits a state attribute on the <sheet> element in xl/workbook.xml Visible is a Boolean convenience alias for common show or hide operations
SetIsSelected / IsSelected When True, the sheet tab appears selected (highlighted). Several sheets may be selected simultaneously. SaveAs emits tabSelected="1" on the matching <sheetView>
AutoFitColumn / AutoFitColumns AutoFitColumn(Col, MinWidth, MaxWidth) measures every cell in the column and sets ColWidth[Col] to the widest content (ASCII = 1 ch, CJK = 2 ch, Calibri 11pt scale), then applies optional minimum and maximum width caps AutoFitColumns(Min, Max, MinWidth, MaxWidth) iterates the column range, clamped to the last cell-bearing column
AutoFitRow / AutoFitRows AutoFitRow(Row, MinHeight, MaxHeight) sets RowHeight[Row] to the tallest cell content in that row (in points), then applies optional minimum and maximum height caps AutoFitRows(Min, Max, MinHeight, MaxHeight) iterates the row range, clamped to the last cell-bearing row
InsertRows / DeleteRows InsertRows(BeforeRow, Count) shifts every row at BeforeRow or below down by Count. DeleteRows(StartRow, Count) removes rows [StartRow, StartRow+Count-1] and pulls the remainder up. Both cascade via cells, merged ranges, row heights, outline levels, hidden flags, hyperlinks, comments, freeze pane, and auto-filter / conditional-format / data-validation references, tables, cell formulas, conditional-format / data-validation formulas, internal hyperlink targets, print setup references, manual page breaks, auto-filter column criteria, chart series ranges, and defined names that point at the edited worksheet, image anchors, and chart anchors
InsertCols / DeleteCols Same as InsertRows / DeleteRows but operating on columns. Column widths, outline levels, and hidden flags get updated as well
AddRowBreak / AddColBreak AddRowBreak(N) inserts a manual page break before row N (i.e. row N starts a new printed page). AddColBreak(N) breaks before column N. SaveAs writes <rowBreaks> / <colBreaks> in the sheet XML
HasRowBreak / HasColBreak / IndexOfRowBreak / IndexOfColBreak Query or locate a single manual break by its "before" index
RemoveRowBreak / RemoveColBreak / RemoveRowBreaksInRange / RemoveColBreaksInRange Remove one manual break or all breaks in an inclusive row / column interval; range helpers take reversed coordinates and return the number of removed breaks
ClearRowBreaks / ClearColBreaks / ClearAllPageBreaks Remove all row breaks, all column breaks, or both
RowBreakCount / ColBreakCount / RowBreaks[i] / ColBreaks[i] Iterate stored break indices (1-based "Before" values)
KeepRowLinkLevel / KeepColLinkLevel Return the strongest keep-together level linking the row (or column) after the given index to the block above (or to the left), or 0 when the position is not inside a keep-together block
PrintGridlines / PrintHeadings When True, SaveAs emits printGridLines="1" / printRowColHeadings="1" inside <printOptions> so row/column grid lines or headings appear on the printed page
BlackAndWhite / Draft / PrintNotes / PrintOverThenDown Print options in <pageSetup>: BlackAndWhite renders in B&W; Draft suppresses graphics for faster preview; PrintNotes prints cell comments as displayed; PrintOverThenDown switches page order to left-to-right-first instead of top-to-bottom-first
PrintArea The rectangular region Excel prints (e.g "$A$1:$D$10"). Written as a workbook-level <definedName name="_xlnm.Print_Area"> scoped to this sheet. Empty string = not set
PrintTitleRows / PrintTitleCols Row or column ranges that repeat on every printed page (e.g. "$1:$3" or "$A:$B"). Written as <definedName name="_xlnm.Print_Titles">
SetAutoFilter / AutoFilterRange Sets the filter range (e.g "A1:C100"); SaveAs writes <autoFilter ref="..."/>
AutoFilterColumns / AddAutoFilterColumn / ClearAutoFilterColumns Per-column filter criteria attached to the auto-filter range. AddAutoFilterColumn(ColId, Op, Criteria) adds a single-criterion filter; the two-criteria overload adds an AND/OR pair AutoFilterColumns.FindByColId(ColId) returns an existing criteria object, and AutoFilterColumns.DeleteByColId(ColId) removes one without scanning Items manually, and AutoFilterColumns.ClearCriteria clears all column criteria whilst preserving the filter range ColId is the 0-based offset within the auto-filter range (not the worksheet column). SaveAs writes <filterColumn> children inside <autoFilter>
AutoFilterRowVisible / PreviewAutoFilterRows / ApplyAutoFilter AutoFilterRowVisible(Row) evaluates the stored XLSX AutoFilter criteria for one data row. PreviewAutoFilterRows walks the data rows in AutoFilterRange, reports each row's visible state through a callback, returns the number of visible rows visited, and leaves row hidden flags unchanged. ApplyAutoFilter applies the autofilter criteria, hides rows that do not match, and reports whether it succeeded
Protect / UnProtect / IsProtected Sheet-level protection toggle with an optional 16-bit legacy password hash. Mirrored as <sheetProtection>
AllowOption / SheetProtectionOptions 15 fine-grained protection permission options (such as formatting cells, inserting rows/columns, sorting, auto-filtering, selecting locked/unlocked cells, etc.), corresponding to the "Protect Sheet" permissions list in Excel
PageSetupTouched / SheetProtectHash Use PageSetupTouched to inspect whether page setup values were explicitly modified, and SheetProtectHash to read/write the legacy 16-bit sheet protection hash text used by older XLS file formats
AddPivotTable / AddPivotTableCopy / PivotSetDataFieldFormat Methods to create, copy and format pivot tables. AddPivotTable builds a pivot table from an A1 source range such as 'Data!A1:C9' and anchors it at the 1-based cell DestRow, DestCol; it returns nil for a malformed source or an anchor outside the sheet. AddPivotTableCopy deep-copies an existing pivot table, from this or another workbook, onto a new 1-based anchor on this worksheet (an empty NewName gives '<source> (2)'). PivotSetDataFieldFormat registers a number format for a data field and returns its number-format index
PivotTables Collection of pivot tables defined on this worksheet
MarginLeftCM / MarginRightCM / MarginTopCM / MarginBottomCM / MarginHeaderCM / MarginFooterCM Page setup margins represented in centimeters
TabColor / TabColorIsAuto ARGB colour for the worksheet tab in Excel; assigning TabColor sets TabColorIsAuto to False TabColorIsAuto = True (default) suppresses the <tabColor> child of <sheetPr>
IsChartSheet When True, SaveAs writes the sheet to xl/chartsheets/sheetN.xml instead of xl/worksheets/sheetN.xml and hosts Charts[0] full-page. Use the Workbook.AddChartSheet(...) helper for the typical setup
View Worksheet view mode. Values are xlsxNormalView, xlsxPageBreakPreview, and xlsxPageLayoutView. SaveAs writes the corresponding view attribute on <sheetView>; Open reads it back
Zoom Sheet view zoom percentage (10–400; default 100, clamped on assignment). Emits zoomScale="N" inside <sheetView>; default is suppressed so untouched sheets stay clean
DisplayGridLines When False, hides the cell grid lines in the sheet view. Default True. Emits showGridLines="0" when False
DisplayZeros When False, cells with a zero value render as blank instead of "0". Default True. Emits showZeros="0" when False
DisplayRightToLeft When True, the sheet is shown in right-to-left layout (column A on the right), suitable for Arabic or Hebrew text. Emits rightToLeft="1"
StandardWidth Default column width in Excel character units (e.g. 8.43 = built-in default). Setting a value above 0 emits <sheetFormatPr defaultColWidth="..."/> 0 = unset (element suppressed)
StandardHeight Default row height in points (e.g. 15 = built-in default). Setting a value above 0 emits defaultRowHeight="..." on <sheetFormatPr> 0 = unset
ClearRangeValues / CopyRange / CopyRangeTo / CopyFrom / MoveRange / SortRange / ClearRange Cell-range operations. CopyRange and CopyRangeTo duplicate values, formulas, style indexes, and rich-text payloads; CopyFrom duplicates the entire worksheet's content and settings (including merged cells, page setup, view state, auto-filters, etc.); these three copy cell content only, so comments are left behind, and CloneRangeTo or Sheets.AddCopy carries comments with their rich-text runs; MoveRange skips destination overlap; SortRange sorts whole rows inside a rectangle by one or more absolute key columns; ClearRange removes cells; ClearRangeValues clears values and formulas whilst preserving style indexes
Range / RCRange / UsedRange Return sheet-owned TXLSXRange wrappers for A1 references, 1-based numeric coordinates, or the fully populated worksheet closure. TXLSXRange.SaveAsHTML(FileName) and TXLSXRange.SaveAsHTML(Stream) export only the selected range as a UTF-8 HTML table. Range wrappers also offer batch values, formulas, style indexes, number formats, borders, protection flags, auto-fit, merge, offset, resize, multi-key sorting, built-in cell styles, copy/move, and whole-row or whole-column insert/delete helpers
EntireRow / EntireColumn Return full-row or full-column ranges for a given index suitable for structural operations or style propagation
MergeCells(R1, C1, R2, C2) Adds a merged rectangle and returns the new entry index. Coordinates are 1-based and inclusive on both ends. Equivalent to MergedCells.Add(R1, C1, R2, C2). For range-style code, Range['A1:C3'].Merge(True) writes one merged range per row, matching Excel's merge-across command
FillMergedCellValues Copies each merged range's anchor value into every covered member cell so report-style sheets read like one flat grid afterwards. Empty or null anchors are skipped, so pre-filled merges keep their own content, and the number of filled cells is returned
FormControls Collection of worksheet form controls (buttons, tick boxes, radio buttons, combo boxes, list boxes) created by the AddFormButton / AddFormCheckBox / AddFormRadioButton / AddFormComboBox / AddFormListBox helper family. Each entry exposes the anchor rectangle, the linked cell, and the control type
AddHyperlink overloads Adds an external URL hyperlink to a single cell Display and Tooltip are optional. Equivalent to Hyperlinks.Add(...)
AddComment overloads Adds a comment to a single cell. Author is optional. Equivalent to Comments.Add(...)
ColWidth[Col] Column width in Excel units (the same scale used by the Excel column-width dialog). Reading an unset column returns 0; assigning a value sets the width for that 1-based column. SaveAs emits one <col> entry per customised column; Open replays the <cols> block back into the map
RowHeight[Row] Row height in points (the same scale used by the Excel row-height dialog). Reading an unset row returns 0; assigning a value sets the height for that 1-based row. SaveAs writes the ht and customHeight="1" attributes on each <row> with a custom height, even rows that carry only a height with no cell data
SetColWidth / SetRowHeight Direct setters used by the indexed properties above Provided as named methods for callers who prefer not to use the property syntax
HasColWidth / HasRowHeight Returns True when the worksheet has a customised width or height for the given index. Use this to distinguish "unset" from a deliberate 0 value
ClearColWidths / ClearRowHeights Drops every customised width or height back to the Excel default
ClearRowHidden / ClearColHidden / ClearRowCollapsed / ClearColCollapsed Drops every row or column hidden/collapsed override back to the default visible, expanded state
Images Image collection. Use AddImage / AddImageFromFile as the convenience entry points. See TXLSXImage / TXLSXImages
HeaderFooterImages Typed odd, even, and first-page header and footer image slots with independent position, size, margin, format, data, and title attributes See TXLSXHeaderFooterImage / TXLSXHeaderFooterImages
ConditionalFormats Conditional formatting rules for this worksheet Use AddConditionalFormat as the convenience entry See TXLSXConditionalFormat / TXLSXConditionalFormats
DataValidations Data-validation rules for this worksheet. Use AddDataValidation / AddListValidation as the convenience entries. See TXLSXDataValidation / TXLSXDataValidations
IgnoredErrors Typed worksheet error-suppression metadata Each TXLSXIgnoredError combines a whitespace-separated multi-area SqRef with the standard evaluation, date, stored-number, formula, unlocked-formula, empty-reference, data-validation, and calculated-column flags Entries survive worksheet copies and open/save round trips, and their ranges track row and column insertion or deletion
AddImage / AddImageFromFile Adds an image anchored to a cell. AddImage takes the raw bytes plus a TXLSXImageFormat; AddImageFromFile reads the file and works out the format from its extension. Equivalent to Images.Add on the collection
AddConditionalFormat overloads Adds a cellIs conditional-formatting rule Equivalent to ConditionalFormats.Add(...)
AddCondFormatExpression / text / rank / average / duplicate / blank / error helpers Adds specialised conditional-formatting rules for formulas, text matching, top/bottom ranks, above/below-average values, duplicate or unique values, blanks, non-blanks, errors, and non-errors. The returned index can then be used with ConditionalFormats[Index].Style to attach formatting
AddWholeNumberValidation / AddWholeNumberValidation overloads / Whole whole-number validations Adds entire wholesale whole number validations with range or criteria support
ProtectedRanges Collection of protected cell ranges that require password authentication in the sheet
RawWorksheetExts Exposes raw worksheet extension list data for direct XML injection
SparklineGroups / AddSparklineGroup Manage inline mini sparkline charts within cells. AddSparklineGroup creates a group referencing a data range
ThreadedComments / AddThreadedComment / AddThreadedReply Support modern threaded comment conversations (replies). AddThreadedComment creates a top-level threaded comment conversation, and AddThreadedReply appends a reply
AddAreaChart / AddBarChart / AddChartFromRange / AddColumnChart / AddLineChart / AddPieChart Excel charting shortcuts. AddChartFromRange creates an anchored chart directly from cell data
GetSheetProtectOption / SetSheetProtectOption Get or set specific sheet protection permission flags programmatically
PasteFromClipboard Pastes contents from the clipboard straight into the specified coordinates
AlignWithMargins Specifies whether page margins align with worksheet contents
CodeName Specifies the VBA sheet code name
ConsolidateXml Exposes raw consolidated XML data
DifferentFirst Enables separate first-page header/footer
DifferentOddEven Enables separate odd/even page headers/footers
EvenFooterText / EvenHeaderText Text strings for even-page headers and footers
FirstFooterText / FirstHeaderText Text strings for first-page headers and footers
FirstPageNumber First page print number
GridColor Sheet gridline colour
HorizontalDpi / VerticalDpi Print DPI resolutions for horizontal and vertical axes
OutlineLevelCol / OutlineLevelRow Default outline level for columns and rows
PaneState Pane frozen scroll state
PhoneticAlignment / PhoneticFontId / PhoneticType CJK phonetic ruby text alignment, font index, and phonetic type
PrintErrors Cell error printing behaviour
ScaleWithDoc Scales headers/footers with document scale
Scenarios Typed What-If Scenario Manager collection Each scenario owns one to 32 input cells and carries its name, locked and hidden states, user and comment metadata, stored values, number formats, and deleted or undone flags CurrentIndex, ShownIndex, and SqRef expose worksheet-level Scenario Manager state
ScenariosXml Legacy raw inner-XML fallback used only when the typed Scenarios collection is empty
SheetProtectAlgorithmName / SheetProtectHashValue / SheetProtectSaltValue / SheetProtectSpinCount Cryptographic properties for modern sheet-protection password hashes
ShowFormulas Shows formulas instead of values
ShowOutlineSymbols Shows outline group symbols
SortState / SortStateXml Typed sorting criteria and verbatim sort XML contents
SummaryBelow / SummaryRight Outlines summary row and column position
UseFirstPageNumber Uses explicit page numbering start
UsePrinterDefaults Uses printer-default DEVMODE settings
ZeroHeight Hides newly inserted rows by default
ZoomNormal / ZoomPageLayout / ZoomSheetLayout Zoom level values for normal, page layout, and page break views
AddWordArt Adds a WordArt text shape control to the worksheet
BuildRowMajorCellOrder Optimizes cell storage sequentially for row-major iteration
ClearRawDrawingAnchors Clears all raw unmapped drawing shape XML anchors
CreateConditionalFormatEvaluator Instantiates a conditional formatting evaluation utility engine
RawDrawingAnchor / RawDrawingAnchorCount / AddRawDrawingAnchor Manages raw unmapped drawing shape XML anchors AddRawDrawingAnchor appends a complete <xdr:...Anchor> block preserved verbatim for the round-trip and returns the new TXLSXDrawingObject
BringToFront / SendToBack / BringForward / SendBackward Reorder a drawing object in the sheet's z-order: BringToFront moves it above all other drawings, SendToBack below all others, and the Forward / Backward variants step it one position
SaveAsPDF Exports the worksheet to a PDF file or stream
TryGetOutlineNode / SetOutlineNodeCollapsed / SetOutlineDisplayLevel Query or idempotently change direction-aware row and column summary nodes via the shared sparse outline model; see Sparse outline geometry
ToggleColGrouped / ToggleRowGrouped Compatibility wrappers that take the first detail column or row and toggle its resolved summary node

Full-axis rule edits and range copies

As of 2.384.77, conditional-format and data-validation target areas accept whole rows and columns during structural edits and dependency cloning; edits normalise valid areas, retain complete grid extents, and drop targets whose rows or columns are removed
Whole-row, whole-column and whole-sheet cell copies visit stored cells, retain sparse destination clearing, and capture source contents before clearing an overlapping destination; copying a blank full-axis range does not materialise its empty coordinates
Cross-workbook copies still remap formatting and rich text by value, and complete versus partial CSE-array copies keep their existing formula contracts
As of 2.384.78, cell-range copies also capture intersecting virtual style overlays before mutation, clip explicit destination overlays to the copied rectangle, and remap every copied formatting part across workbooks, including explicit resets to index zero
Whole-axis destination defaults remain compact and are masked inside the copied rectangle before the source layers are applied; copying a blank source clears prior explicit overlay formatting inside that rectangle, keeps formatting outside it, and does not create a cell for each covered coordinate
Cloned conditional and validation rules require all target areas to be contained in the source rectangle; rules that only intersect it are passed over, and a destination extending beyond the worksheet grid is rejected before copying
Finite repeated blank styles imported from ODS contribute both endpoints to the used range; whole-row, whole-column and whole-sheet default style overlays do not stretch it merely because they cover empty coordinates

Example

var
  ws: TXLSXWorksheet;
  scenario: TXLSXScenario;
begin
  ws := Workbook.Sheets.Add('Demo');

  ws.Cells.Item[1, 1].Value := 'Title';
  ws.MergeCells(1, 1, 1, 3);

  ws.ColWidth[1] := 24;          // widen column A
  ws.RowHeight[1] := 28;         // taller title row

  ws.Cells.Item[3, 1].Value := 'Visit losLab';
  ws.AddHyperlink(3, 1, 'https://www.loslab.com', 'losLab');

  ws.AddComment(3, 1, 'Vendor home page', 'Kevin');
  ws.AddTextBox('Standalone note', 2, 5, 5, 9);
  if ws.FindTextBoxAt(3, 6) <> nil then
    ws.DeleteTextBoxesInRange(2, 5, 5, 9);

  scenario := ws.Scenarios.Add('Baseline');
  scenario.User := 'Analyst';
  scenario.Comment := 'Approved assumptions';
  scenario.InputCells.Add('B2', '1250').NumberFormatId := 4;
  scenario.InputCells.Add('B3', '0.18');
  ws.Scenarios.SqRef := 'B2:B3';
end;
    

See also