Skip to content

Worksheet

Worksheet holds the sparse cell store and every feature engine for one sheet.

Members

MemberDescription
id: stringStable sheet id
name: stringName (setter validates; renames rewrite cross-sheet refs)
workbook: WorkbookOwning workbook
cells: SparseCellStorePaged sparse cell store
rowSizes / columnSizes: SizeIndexFenwick size indexes
rowCount / columnCount: numberDimensions
rowIds: Map<number, string>Stable row identities
merges: MergeStoreMerged cells
tables: TableStoreStructured tables
numberFormats: Map<string, string>Range → mask
validations: ValidationServiceValidation rules
conditionalFormats: ConditionalFormatEngineConditional styles
charts: ChartEngineCharts
pivots: PivotEnginePivot aggregations
media: MediaStoreImages and shapes
filters: Map<number, (value) => boolean>Column predicates
hiddenRows / hiddenColumns: Set<number>Manually hidden indexes
freezeRows / freezeColumns: numberFrozen pane counts

Values

ts
setValue(row, column, value: unknown, options?: { literal?: boolean }): Operation | null;
getValue(row, column): unknown;
getAddress(row, column): string;          // A1 address
loadFormulaCell(row, column, formula): void;
refreshFormulas(): void;                  // full recalculation pass

Styles, formats, notes, editors

ts
setStyle(range: string, style: CellStyle): void;
clearStyle(range: string): void;
getStyle(row, column): CellStyle | undefined;

setNumberFormat(range: string, mask: string): void;
getNumberFormat(row, column): string | undefined;

setNote(range: string, text: string): void;
getNote(row, column): string | undefined;
clearNote(range: string): void;

setCellEditor(range: string, type: string, options?: unknown): void;
getEditorFor(row, column): EditorAssignment | undefined;

Structure

ts
setRowHeight(index: number, height: number): void;
setColumnWidth(index: number, width: number): void;

insertRows(index: number, count?: number): void;   // default count 1
deleteRows(index: number, count?: number): void;
insertColumns(index: number, count?: number): void;
deleteColumns(index: number, count?: number): void;

merge(range: string): void;
unmerge(range: string): void;

hideRows(index: number, count?: number): void;
hideColumns(index: number, count?: number): void;
showRows(index: number, count?: number): void;
showColumns(index: number, count?: number): void;
isRowHidden(row: number): boolean;
isColumnHidden(column: number): boolean;

Sizing methods use zero-based indexes and unscaled pixels. Sizes must be finite and non-negative; invalid sizes or indexes throw RangeError. Each changed size emits a reversible rows.resize or columns.resize operation with { index, size } and refreshes mounted renderers. Unchanged sizes create no history entry. Sizes persist through workbook snapshots.

See Resizing rows and columns for header dragging and examples.

Groups, filters, headers

ts
groupRows(start: number, end: number): void;
ungroupRows(start: number): void;
collapseGroup(start: number): void;
expandGroup(start: number): void;
getGroups(): RowGroup[];

setFilter(column: number, predicate: (value) => boolean): void;
clearFilter(column?: number): void;
refreshFilters(): void;

setNestedHeaders(levels: (string | { title: string; span: number })[][]): void;
get nestedHeaders(): NestedHeaderLevel[] | undefined;

Rich content & data

ts
addChart(spec: ChartSpec): ChartSpec;
addPivot(spec: PivotSpec): void;
addImage(image: ImageMediaInput): ImageMedia;
addShape(shape: ShapeMediaInput): ShapeMedia;

addTable(definition: { name: string; range: string; headerRow?: boolean; totalRow?: boolean }): TableDefinition;
getTable(name: string): TableDefinition | undefined;

addValidation(rule: Omit<ValidationRule, 'id'>): ValidationRule;
removeValidation(id: string): void;

toCsv(options?): string;
fromCsv(text: string, options?): void;

Released under the MIT License.