# HyperFormula Documentation > Full documentation corpus for LLM consumption. > Each page below is also served as clean Markdown — append `.md` to a docs page URL. --- ## API Reference Overview URL: https://hyperformula.handsontable.com/docs/api/ # API Reference Overview Welcome to the HyperFormula `v3.4.0` API! The API reference documentation provides detailed information for methods, error types, event types, and all the configuration options available in HyperFormula. Current build: 13/08/2026 10:48:35 ### API reference index The following sections explain shortly what can be found in the left sidebar navigation menu. #### HyperFormula This section contains information about the class for creating HyperFormula instance. It enlists all available public methods alongside their descriptions, parameter types, and examples. The snippet shows an example how to use `buildFromArray` which is one of [three static methods](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.html#factories) for creating an instance of HyperFormula: ```javascript const sheetData = [ ['0', '=SUM(1, 2, 3)', '52'], ['=SUM(A1:C1)', '', '=A1'], ['2', '=SUM(A1:C1)', '91'], ]; const hfInstance = HyperFormula.buildFromArray(sheetData, options); ``` #### ConfigParams This section contains information about options that allow you to configure the instance of HyperFormula. An example set of options: ```javascript const options = { licenseKey: 'gpl-v3', nullDate: { year: 1900, month: 1, day: 1 }, functionArgSeparator: '.' }; ``` #### Listeners In this section, you can find information about all events you can subscribe to. For example, subscribing to `sheetAdded` event: ```javascript const hfInstance = HyperFormula.buildFromSheets({ MySheet1: [ ['1'] ], MySheet2: [ ['10'] ], }); const handler = ( ) => { console.log('baz') } hfInstance.on('sheetAdded', handler); const nameProvided = hfInstance.addSheet('MySheet3'); ``` --- ## AbsoluteColumnRange URL: https://hyperformula.handsontable.com/docs/api/classes/absolutecolumnrange # AbsoluteColumnRange ## Constructors ### constructor \+ **new AbsoluteColumnRange**(`sheet`: number, `columnStart`: number, `columnEnd`: number): *[AbsoluteColumnRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecolumnrange.md)* *Defined in [src/AbsoluteCellRange.ts:441](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L441)* **Parameters:** Name | Type | ------ | ------ | `sheet` | number | `columnStart` | number | `columnEnd` | number | **Returns:** *[AbsoluteColumnRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecolumnrange.md)* ## Properties ### end • **end**: *[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)* *Defined in [src/AbsoluteCellRange.ts:47](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L47)* ___ ### start • **start**: *[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)* *Defined in [src/AbsoluteCellRange.ts:46](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L46)* ## Accessors ### sheet • **get sheet**(): *number* *Defined in [src/AbsoluteCellRange.ts:60](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L60)* **Returns:** *number* ## Methods ### addressInRange ▸ **addressInRange**(`address`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *boolean* *Defined in [src/AbsoluteCellRange.ts:157](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L157)* **Parameters:** Name | Type | ------ | ------ | `address` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | **Returns:** *boolean* ___ ### addresses ▸ **addresses**(`dependencyGraph`: DependencyGraph): *[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)[]* *Defined in [src/AbsoluteCellRange.ts:315](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L315)* **Parameters:** Name | Type | ------ | ------ | `dependencyGraph` | DependencyGraph | **Returns:** *[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)[]* ___ ### addressesArrayMap ▸ **addressesArrayMap**‹**T**›(`dependencyGraph`: DependencyGraph, `op`: function): *T[][]* *Defined in [src/AbsoluteCellRange.ts:299](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L299)* **Type parameters:** ▪ **T** **Parameters:** ▪ **dependencyGraph**: *DependencyGraph* ▪ **op**: *function* ▸ (`arg`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *T* **Parameters:** Name | Type | ------ | ------ | `arg` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | **Returns:** *T[][]* ___ ### addressesWithDirection ▸ **addressesWithDirection**(`right`: number, `bottom`: number, `dependencyGraph`: DependencyGraph): *IterableIterator‹[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)›* *Defined in [src/AbsoluteCellRange.ts:331](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L331)* **Parameters:** Name | Type | ------ | ------ | `right` | number | `bottom` | number | `dependencyGraph` | DependencyGraph | **Returns:** *IterableIterator‹[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)›* ___ ### arrayOfAddressesInRange ▸ **arrayOfAddressesInRange**(): *[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)[][]* *Defined in [src/AbsoluteCellRange.ts:275](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L275)* **Returns:** *[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)[][]* ___ ### columnInRange ▸ **columnInRange**(`address`: [SimpleColumnAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecolumnaddress.md)): *boolean* *Defined in [src/AbsoluteCellRange.ts:168](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L168)* **Parameters:** Name | Type | ------ | ------ | `address` | [SimpleColumnAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecolumnaddress.md) | **Returns:** *boolean* ___ ### containsRange ▸ **containsRange**(`range`: [AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)): *boolean* *Defined in [src/AbsoluteCellRange.ts:182](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L182)* **Parameters:** Name | Type | ------ | ------ | `range` | [AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md) | **Returns:** *boolean* ___ ### doesOverlap ▸ **doesOverlap**(`other`: [AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)): *boolean* *Defined in [src/AbsoluteCellRange.ts:144](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L144)* **Parameters:** Name | Type | ------ | ------ | `other` | [AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md) | **Returns:** *boolean* ___ ### effectiveEndColumn ▸ **effectiveEndColumn**(`_dependencyGraph`: DependencyGraph): *number* *Defined in [src/AbsoluteCellRange.ts:390](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L390)* **Parameters:** Name | Type | ------ | ------ | `_dependencyGraph` | DependencyGraph | **Returns:** *number* ___ ### effectiveEndRow ▸ **effectiveEndRow**(`dependencyGraph`: DependencyGraph): *number* *Defined in [src/AbsoluteCellRange.ts:482](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L482)* **Parameters:** Name | Type | ------ | ------ | `dependencyGraph` | DependencyGraph | **Returns:** *number* ___ ### effectiveHeight ▸ **effectiveHeight**(`dependencyGraph`: DependencyGraph): *number* *Defined in [src/AbsoluteCellRange.ts:486](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L486)* **Parameters:** Name | Type | ------ | ------ | `dependencyGraph` | DependencyGraph | **Returns:** *number* ___ ### effectiveWidth ▸ **effectiveWidth**(`_dependencyGraph`: DependencyGraph): *number* *Defined in [src/AbsoluteCellRange.ts:398](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L398)* **Parameters:** Name | Type | ------ | ------ | `_dependencyGraph` | DependencyGraph | **Returns:** *number* ___ ### exceedsSheetSizeLimits ▸ **exceedsSheetSizeLimits**(`maxColumns`: number, `_maxRows`: number): *boolean* *Defined in [src/AbsoluteCellRange.ts:478](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L478)* **Parameters:** Name | Type | ------ | ------ | `maxColumns` | number | `_maxRows` | number | **Returns:** *boolean* ___ ### expandByColumns ▸ **expandByColumns**(`numberOfColumns`: number): *void* *Defined in [src/AbsoluteCellRange.ts:230](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L230)* **Parameters:** Name | Type | ------ | ------ | `numberOfColumns` | number | **Returns:** *void* ___ ### expandByRows ▸ **expandByRows**(`_numberOfRows`: number): *void* *Defined in [src/AbsoluteCellRange.ts:466](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L466)* **Parameters:** Name | Type | ------ | ------ | `_numberOfRows` | number | **Returns:** *void* ___ ### getAddress ▸ **getAddress**(`col`: number, `row`: number): *[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)* *Defined in [src/AbsoluteCellRange.ts:379](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L379)* **Parameters:** Name | Type | ------ | ------ | `col` | number | `row` | number | **Returns:** *[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)* ___ ### height ▸ **height**(): *number* *Defined in [src/AbsoluteCellRange.ts:267](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L267)* **Returns:** *number* ___ ### includesColumn ▸ **includesColumn**(`column`: number): *boolean* *Defined in [src/AbsoluteCellRange.ts:208](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L208)* **Parameters:** Name | Type | ------ | ------ | `column` | number | **Returns:** *boolean* ___ ### includesRow ▸ **includesRow**(`row`: number): *boolean* *Defined in [src/AbsoluteCellRange.ts:204](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L204)* **Parameters:** Name | Type | ------ | ------ | `row` | number | **Returns:** *boolean* ___ ### intersectionWith ▸ **intersectionWith**(`other`: [AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)): *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)›* *Defined in [src/AbsoluteCellRange.ts:186](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L186)* **Parameters:** Name | Type | ------ | ------ | `other` | [AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md) | **Returns:** *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)›* ___ ### isFinite ▸ **isFinite**(): *boolean* *Defined in [src/AbsoluteCellRange.ts:140](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L140)* **Returns:** *boolean* ___ ### moveToSheet ▸ **moveToSheet**(`toSheet`: number): *void* *Defined in [src/AbsoluteCellRange.ts:234](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L234)* **Parameters:** Name | Type | ------ | ------ | `toSheet` | number | **Returns:** *void* ___ ### rangeWithSameHeight ▸ **rangeWithSameHeight**(`startColumn`: number, `numberOfColumns`: number): *[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)* *Defined in [src/AbsoluteCellRange.ts:474](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L474)* **Parameters:** Name | Type | ------ | ------ | `startColumn` | number | `numberOfColumns` | number | **Returns:** *[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)* ___ ### rangeWithSameWidth ▸ **rangeWithSameWidth**(`startRow`: number, `numberOfRows`: number): *[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)* *Defined in [src/AbsoluteCellRange.ts:251](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L251)* **Parameters:** Name | Type | ------ | ------ | `startRow` | number | `numberOfRows` | number | **Returns:** *[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)* ___ ### removeSpan ▸ **removeSpan**(`span`: [Span](https://hyperformula.handsontable.com/docs/api/globals.md#span)): *void* *Defined in [src/AbsoluteCellRange.ts:239](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L239)* **Parameters:** Name | Type | ------ | ------ | `span` | [Span](https://hyperformula.handsontable.com/docs/api/globals.md#span) | **Returns:** *void* ___ ### rowInRange ▸ **rowInRange**(`address`: [SimpleRowAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplerowaddress.md)): *boolean* *Defined in [src/AbsoluteCellRange.ts:175](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L175)* **Parameters:** Name | Type | ------ | ------ | `address` | [SimpleRowAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplerowaddress.md) | **Returns:** *boolean* ___ ### sameAs ▸ **sameAs**(`other`: [AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)): *boolean* *Defined in [src/AbsoluteCellRange.ts:295](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L295)* **Parameters:** Name | Type | ------ | ------ | `other` | [AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md) | **Returns:** *boolean* ___ ### sameDimensionsAs ▸ **sameDimensionsAs**(`other`: [AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)): *boolean* *Defined in [src/AbsoluteCellRange.ts:291](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L291)* **Parameters:** Name | Type | ------ | ------ | `other` | [AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md) | **Returns:** *boolean* ___ ### shiftByColumns ▸ **shiftByColumns**(`numberOfColumns`: number): *void* *Defined in [src/AbsoluteCellRange.ts:221](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L221)* **Parameters:** Name | Type | ------ | ------ | `numberOfColumns` | number | **Returns:** *void* ___ ### shiftByRows ▸ **shiftByRows**(`_numberOfRows`: number): *void* *Defined in [src/AbsoluteCellRange.ts:462](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L462)* **Parameters:** Name | Type | ------ | ------ | `_numberOfRows` | number | **Returns:** *void* ___ ### shifted ▸ **shifted**(`byCols`: number, `_byRows`: number): *[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)* *Defined in [src/AbsoluteCellRange.ts:470](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L470)* **Parameters:** Name | Type | ------ | ------ | `byCols` | number | `_byRows` | number | **Returns:** *[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)* ___ ### shouldBeRemoved ▸ **shouldBeRemoved**(): *boolean* *Defined in [src/AbsoluteCellRange.ts:458](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L458)* **Returns:** *boolean* ___ ### size ▸ **size**(): *number* *Defined in [src/AbsoluteCellRange.ts:271](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L271)* **Returns:** *number* ___ ### toString ▸ **toString**(): *string* *Defined in [src/AbsoluteCellRange.ts:259](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L259)* **Returns:** *string* ___ ### width ▸ **width**(): *number* *Defined in [src/AbsoluteCellRange.ts:263](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L263)* **Returns:** *number* ___ ### withStart ▸ **withStart**(`newStart`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)* *Defined in [src/AbsoluteCellRange.ts:287](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L287)* **Parameters:** Name | Type | ------ | ------ | `newStart` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | **Returns:** *[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)* ___ ### fromAst ▸ **fromAst**(`ast`: CellRangeAst | ColumnRangeAst | RowRangeAst, `baseAddress`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)* *Defined in [src/AbsoluteCellRange.ts:83](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L83)* **Parameters:** Name | Type | ------ | ------ | `ast` | CellRangeAst | ColumnRangeAst | RowRangeAst | `baseAddress` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | **Returns:** *[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)* ___ ### fromAstOrUndef ▸ **fromAstOrUndef**(`ast`: CellRangeAst | ColumnRangeAst | RowRangeAst, `baseAddress`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)›* *Defined in [src/AbsoluteCellRange.ts:93](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L93)* **Parameters:** Name | Type | ------ | ------ | `ast` | CellRangeAst | ColumnRangeAst | RowRangeAst | `baseAddress` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | **Returns:** *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)›* ___ ### fromCellRange ▸ **fromCellRange**(`x`: [CellRange](https://hyperformula.handsontable.com/docs/api/interfaces/cellrange.md), `baseAddress`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)* *Defined in [src/AbsoluteCellRange.ts:101](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L101)* **Parameters:** Name | Type | ------ | ------ | `x` | [CellRange](https://hyperformula.handsontable.com/docs/api/interfaces/cellrange.md) | `baseAddress` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | **Returns:** *[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)* ___ ### fromColumnRange ▸ **fromColumnRange**(`x`: ColumnRangeAst, `baseAddress`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *[AbsoluteColumnRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecolumnrange.md)* *Defined in [src/AbsoluteCellRange.ts:449](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L449)* **Parameters:** Name | Type | ------ | ------ | `x` | ColumnRangeAst | `baseAddress` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | **Returns:** *[AbsoluteColumnRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecolumnrange.md)* ___ ### fromCoordinates ▸ **fromCoordinates**(`sheet`: number, `x1`: number, `y1`: number, `x2`: number, `y2`: number): *[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)* *Defined in [src/AbsoluteCellRange.ts:136](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L136)* **Parameters:** Name | Type | ------ | ------ | `sheet` | number | `x1` | number | `y1` | number | `x2` | number | `y2` | number | **Returns:** *[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)* ___ ### fromSimpleCellAddresses ▸ **fromSimpleCellAddresses**(`start`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), `end`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)* *Defined in [src/AbsoluteCellRange.ts:64](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L64)* **Parameters:** Name | Type | ------ | ------ | `start` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | `end` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | **Returns:** *[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)* ___ ### spanFrom ▸ **spanFrom**(`topLeftCorner`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), `width`: number, `height`: number): *[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)* *Defined in [src/AbsoluteCellRange.ts:108](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L108)* **Parameters:** Name | Type | ------ | ------ | `topLeftCorner` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | `width` | number | `height` | number | **Returns:** *[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)* ___ ### spanFromOrUndef ▸ **spanFromOrUndef**(`topLeftCorner`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), `width`: number, `height`: number): *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)›* *Defined in [src/AbsoluteCellRange.ts:116](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L116)* **Parameters:** Name | Type | ------ | ------ | `topLeftCorner` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | `width` | number | `height` | number | **Returns:** *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)›* --- ## /api-ref-readme.html URL: https://hyperformula.handsontable.com/docs/api-ref-readme Welcome to the HyperFormula `v3.4.0` API! The API reference documentation provides detailed information for methods, error types, event types, and all the configuration options available in HyperFormula. Current build: 13/08/2026 10:48:35 ### API reference index The following sections explain shortly what can be found in the left sidebar navigation menu. #### HyperFormula This section contains information about the class for creating HyperFormula instance. It enlists all available public methods alongside their descriptions, parameter types, and examples. The snippet shows an example how to use `buildFromArray` which is one of [three static methods](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.html#factories) for creating an instance of HyperFormula: ```javascript const sheetData = [ ['0', '=SUM(1, 2, 3)', '52'], ['=SUM(A1:C1)', '', '=A1'], ['2', '=SUM(A1:C1)', '91'], ]; const hfInstance = HyperFormula.buildFromArray(sheetData, options); ``` #### ConfigParams This section contains information about options that allow you to configure the instance of HyperFormula. An example set of options: ```javascript const options = { licenseKey: 'gpl-v3', nullDate: { year: 1900, month: 1, day: 1 }, functionArgSeparator: '.' }; ``` #### Listeners In this section, you can find information about all events you can subscribe to. For example, subscribing to `sheetAdded` event: ```javascript const hfInstance = HyperFormula.buildFromSheets({ MySheet1: [ ['1'] ], MySheet2: [ ['10'] ], }); const handler = ( ) => { console.log('baz') } hfInstance.on('sheetAdded', handler); const nameProvided = hfInstance.addSheet('MySheet3'); ``` --- ## AbsoluteRowRange URL: https://hyperformula.handsontable.com/docs/api/classes/absoluterowrange # AbsoluteRowRange ## Constructors ### constructor \+ **new AbsoluteRowRange**(`sheet`: number, `rowStart`: number, `rowEnd`: number): *[AbsoluteRowRange](https://hyperformula.handsontable.com/docs/api/classes/absoluterowrange.md)* *Defined in [src/AbsoluteCellRange.ts:495](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L495)* **Parameters:** Name | Type | ------ | ------ | `sheet` | number | `rowStart` | number | `rowEnd` | number | **Returns:** *[AbsoluteRowRange](https://hyperformula.handsontable.com/docs/api/classes/absoluterowrange.md)* ## Properties ### end • **end**: *[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)* *Defined in [src/AbsoluteCellRange.ts:47](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L47)* ___ ### start • **start**: *[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)* *Defined in [src/AbsoluteCellRange.ts:46](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L46)* ## Accessors ### sheet • **get sheet**(): *number* *Defined in [src/AbsoluteCellRange.ts:60](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L60)* **Returns:** *number* ## Methods ### addressInRange ▸ **addressInRange**(`address`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *boolean* *Defined in [src/AbsoluteCellRange.ts:157](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L157)* **Parameters:** Name | Type | ------ | ------ | `address` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | **Returns:** *boolean* ___ ### addresses ▸ **addresses**(`dependencyGraph`: DependencyGraph): *[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)[]* *Defined in [src/AbsoluteCellRange.ts:315](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L315)* **Parameters:** Name | Type | ------ | ------ | `dependencyGraph` | DependencyGraph | **Returns:** *[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)[]* ___ ### addressesArrayMap ▸ **addressesArrayMap**‹**T**›(`dependencyGraph`: DependencyGraph, `op`: function): *T[][]* *Defined in [src/AbsoluteCellRange.ts:299](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L299)* **Type parameters:** ▪ **T** **Parameters:** ▪ **dependencyGraph**: *DependencyGraph* ▪ **op**: *function* ▸ (`arg`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *T* **Parameters:** Name | Type | ------ | ------ | `arg` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | **Returns:** *T[][]* ___ ### addressesWithDirection ▸ **addressesWithDirection**(`right`: number, `bottom`: number, `dependencyGraph`: DependencyGraph): *IterableIterator‹[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)›* *Defined in [src/AbsoluteCellRange.ts:331](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L331)* **Parameters:** Name | Type | ------ | ------ | `right` | number | `bottom` | number | `dependencyGraph` | DependencyGraph | **Returns:** *IterableIterator‹[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)›* ___ ### arrayOfAddressesInRange ▸ **arrayOfAddressesInRange**(): *[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)[][]* *Defined in [src/AbsoluteCellRange.ts:275](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L275)* **Returns:** *[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)[][]* ___ ### columnInRange ▸ **columnInRange**(`address`: [SimpleColumnAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecolumnaddress.md)): *boolean* *Defined in [src/AbsoluteCellRange.ts:168](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L168)* **Parameters:** Name | Type | ------ | ------ | `address` | [SimpleColumnAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecolumnaddress.md) | **Returns:** *boolean* ___ ### containsRange ▸ **containsRange**(`range`: [AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)): *boolean* *Defined in [src/AbsoluteCellRange.ts:182](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L182)* **Parameters:** Name | Type | ------ | ------ | `range` | [AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md) | **Returns:** *boolean* ___ ### doesOverlap ▸ **doesOverlap**(`other`: [AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)): *boolean* *Defined in [src/AbsoluteCellRange.ts:144](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L144)* **Parameters:** Name | Type | ------ | ------ | `other` | [AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md) | **Returns:** *boolean* ___ ### effectiveEndColumn ▸ **effectiveEndColumn**(`dependencyGraph`: DependencyGraph): *number* *Defined in [src/AbsoluteCellRange.ts:536](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L536)* **Parameters:** Name | Type | ------ | ------ | `dependencyGraph` | DependencyGraph | **Returns:** *number* ___ ### effectiveEndRow ▸ **effectiveEndRow**(`_dependencyGraph`: DependencyGraph): *number* *Defined in [src/AbsoluteCellRange.ts:394](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L394)* **Parameters:** Name | Type | ------ | ------ | `_dependencyGraph` | DependencyGraph | **Returns:** *number* ___ ### effectiveHeight ▸ **effectiveHeight**(`_dependencyGraph`: DependencyGraph): *number* *Defined in [src/AbsoluteCellRange.ts:402](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L402)* **Parameters:** Name | Type | ------ | ------ | `_dependencyGraph` | DependencyGraph | **Returns:** *number* ___ ### effectiveWidth ▸ **effectiveWidth**(`dependencyGraph`: DependencyGraph): *number* *Defined in [src/AbsoluteCellRange.ts:540](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L540)* **Parameters:** Name | Type | ------ | ------ | `dependencyGraph` | DependencyGraph | **Returns:** *number* ___ ### exceedsSheetSizeLimits ▸ **exceedsSheetSizeLimits**(`_maxColumns`: number, `maxRows`: number): *boolean* *Defined in [src/AbsoluteCellRange.ts:532](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L532)* **Parameters:** Name | Type | ------ | ------ | `_maxColumns` | number | `maxRows` | number | **Returns:** *boolean* ___ ### expandByColumns ▸ **expandByColumns**(`_numberOfColumns`: number): *void* *Defined in [src/AbsoluteCellRange.ts:520](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L520)* **Parameters:** Name | Type | ------ | ------ | `_numberOfColumns` | number | **Returns:** *void* ___ ### expandByRows ▸ **expandByRows**(`numberOfRows`: number): *void* *Defined in [src/AbsoluteCellRange.ts:217](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L217)* **Parameters:** Name | Type | ------ | ------ | `numberOfRows` | number | **Returns:** *void* ___ ### getAddress ▸ **getAddress**(`col`: number, `row`: number): *[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)* *Defined in [src/AbsoluteCellRange.ts:379](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L379)* **Parameters:** Name | Type | ------ | ------ | `col` | number | `row` | number | **Returns:** *[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)* ___ ### height ▸ **height**(): *number* *Defined in [src/AbsoluteCellRange.ts:267](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L267)* **Returns:** *number* ___ ### includesColumn ▸ **includesColumn**(`column`: number): *boolean* *Defined in [src/AbsoluteCellRange.ts:208](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L208)* **Parameters:** Name | Type | ------ | ------ | `column` | number | **Returns:** *boolean* ___ ### includesRow ▸ **includesRow**(`row`: number): *boolean* *Defined in [src/AbsoluteCellRange.ts:204](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L204)* **Parameters:** Name | Type | ------ | ------ | `row` | number | **Returns:** *boolean* ___ ### intersectionWith ▸ **intersectionWith**(`other`: [AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)): *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)›* *Defined in [src/AbsoluteCellRange.ts:186](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L186)* **Parameters:** Name | Type | ------ | ------ | `other` | [AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md) | **Returns:** *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)›* ___ ### isFinite ▸ **isFinite**(): *boolean* *Defined in [src/AbsoluteCellRange.ts:140](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L140)* **Returns:** *boolean* ___ ### moveToSheet ▸ **moveToSheet**(`toSheet`: number): *void* *Defined in [src/AbsoluteCellRange.ts:234](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L234)* **Parameters:** Name | Type | ------ | ------ | `toSheet` | number | **Returns:** *void* ___ ### rangeWithSameHeight ▸ **rangeWithSameHeight**(`startColumn`: number, `numberOfColumns`: number): *[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)* *Defined in [src/AbsoluteCellRange.ts:255](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L255)* **Parameters:** Name | Type | ------ | ------ | `startColumn` | number | `numberOfColumns` | number | **Returns:** *[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)* ___ ### rangeWithSameWidth ▸ **rangeWithSameWidth**(`startRow`: number, `numberOfRows`: number): *[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)* *Defined in [src/AbsoluteCellRange.ts:528](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L528)* **Parameters:** Name | Type | ------ | ------ | `startRow` | number | `numberOfRows` | number | **Returns:** *[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)* ___ ### removeSpan ▸ **removeSpan**(`span`: [Span](https://hyperformula.handsontable.com/docs/api/globals.md#span)): *void* *Defined in [src/AbsoluteCellRange.ts:239](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L239)* **Parameters:** Name | Type | ------ | ------ | `span` | [Span](https://hyperformula.handsontable.com/docs/api/globals.md#span) | **Returns:** *void* ___ ### rowInRange ▸ **rowInRange**(`address`: [SimpleRowAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplerowaddress.md)): *boolean* *Defined in [src/AbsoluteCellRange.ts:175](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L175)* **Parameters:** Name | Type | ------ | ------ | `address` | [SimpleRowAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplerowaddress.md) | **Returns:** *boolean* ___ ### sameAs ▸ **sameAs**(`other`: [AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)): *boolean* *Defined in [src/AbsoluteCellRange.ts:295](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L295)* **Parameters:** Name | Type | ------ | ------ | `other` | [AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md) | **Returns:** *boolean* ___ ### sameDimensionsAs ▸ **sameDimensionsAs**(`other`: [AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)): *boolean* *Defined in [src/AbsoluteCellRange.ts:291](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L291)* **Parameters:** Name | Type | ------ | ------ | `other` | [AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md) | **Returns:** *boolean* ___ ### shiftByColumns ▸ **shiftByColumns**(`_numberOfColumns`: number): *void* *Defined in [src/AbsoluteCellRange.ts:516](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L516)* **Parameters:** Name | Type | ------ | ------ | `_numberOfColumns` | number | **Returns:** *void* ___ ### shiftByRows ▸ **shiftByRows**(`numberOfRows`: number): *void* *Defined in [src/AbsoluteCellRange.ts:212](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L212)* **Parameters:** Name | Type | ------ | ------ | `numberOfRows` | number | **Returns:** *void* ___ ### shifted ▸ **shifted**(`byCols`: number, `byRows`: number): *[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)* *Defined in [src/AbsoluteCellRange.ts:524](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L524)* **Parameters:** Name | Type | ------ | ------ | `byCols` | number | `byRows` | number | **Returns:** *[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)* ___ ### shouldBeRemoved ▸ **shouldBeRemoved**(): *boolean* *Defined in [src/AbsoluteCellRange.ts:512](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L512)* **Returns:** *boolean* ___ ### size ▸ **size**(): *number* *Defined in [src/AbsoluteCellRange.ts:271](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L271)* **Returns:** *number* ___ ### toString ▸ **toString**(): *string* *Defined in [src/AbsoluteCellRange.ts:259](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L259)* **Returns:** *string* ___ ### width ▸ **width**(): *number* *Defined in [src/AbsoluteCellRange.ts:263](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L263)* **Returns:** *number* ___ ### withStart ▸ **withStart**(`newStart`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)* *Defined in [src/AbsoluteCellRange.ts:287](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L287)* **Parameters:** Name | Type | ------ | ------ | `newStart` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | **Returns:** *[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)* ___ ### fromAst ▸ **fromAst**(`ast`: CellRangeAst | ColumnRangeAst | RowRangeAst, `baseAddress`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)* *Defined in [src/AbsoluteCellRange.ts:83](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L83)* **Parameters:** Name | Type | ------ | ------ | `ast` | CellRangeAst | ColumnRangeAst | RowRangeAst | `baseAddress` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | **Returns:** *[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)* ___ ### fromAstOrUndef ▸ **fromAstOrUndef**(`ast`: CellRangeAst | ColumnRangeAst | RowRangeAst, `baseAddress`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)›* *Defined in [src/AbsoluteCellRange.ts:93](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L93)* **Parameters:** Name | Type | ------ | ------ | `ast` | CellRangeAst | ColumnRangeAst | RowRangeAst | `baseAddress` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | **Returns:** *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)›* ___ ### fromCellRange ▸ **fromCellRange**(`x`: [CellRange](https://hyperformula.handsontable.com/docs/api/interfaces/cellrange.md), `baseAddress`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)* *Defined in [src/AbsoluteCellRange.ts:101](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L101)* **Parameters:** Name | Type | ------ | ------ | `x` | [CellRange](https://hyperformula.handsontable.com/docs/api/interfaces/cellrange.md) | `baseAddress` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | **Returns:** *[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)* ___ ### fromCoordinates ▸ **fromCoordinates**(`sheet`: number, `x1`: number, `y1`: number, `x2`: number, `y2`: number): *[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)* *Defined in [src/AbsoluteCellRange.ts:136](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L136)* **Parameters:** Name | Type | ------ | ------ | `sheet` | number | `x1` | number | `y1` | number | `x2` | number | `y2` | number | **Returns:** *[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)* ___ ### fromRowRangeAst ▸ **fromRowRangeAst**(`x`: RowRangeAst, `baseAddress`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *[AbsoluteRowRange](https://hyperformula.handsontable.com/docs/api/classes/absoluterowrange.md)* *Defined in [src/AbsoluteCellRange.ts:503](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L503)* **Parameters:** Name | Type | ------ | ------ | `x` | RowRangeAst | `baseAddress` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | **Returns:** *[AbsoluteRowRange](https://hyperformula.handsontable.com/docs/api/classes/absoluterowrange.md)* ___ ### fromSimpleCellAddresses ▸ **fromSimpleCellAddresses**(`start`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), `end`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)* *Defined in [src/AbsoluteCellRange.ts:64](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L64)* **Parameters:** Name | Type | ------ | ------ | `start` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | `end` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | **Returns:** *[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)* ___ ### spanFrom ▸ **spanFrom**(`topLeftCorner`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), `width`: number, `height`: number): *[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)* *Defined in [src/AbsoluteCellRange.ts:108](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L108)* **Parameters:** Name | Type | ------ | ------ | `topLeftCorner` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | `width` | number | `height` | number | **Returns:** *[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)* ___ ### spanFromOrUndef ▸ **spanFromOrUndef**(`topLeftCorner`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), `width`: number, `height`: number): *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)›* *Defined in [src/AbsoluteCellRange.ts:116](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L116)* **Parameters:** Name | Type | ------ | ------ | `topLeftCorner` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | `width` | number | `height` | number | **Returns:** *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)›* --- ## AddColumnsCommand URL: https://hyperformula.handsontable.com/docs/api/classes/addcolumnscommand # AddColumnsCommand ## Constructors ### constructor \+ **new AddColumnsCommand**(`sheet`: number, `indexes`: [ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[]): *[AddColumnsCommand](https://hyperformula.handsontable.com/docs/api/classes/addcolumnscommand.md)* *Defined in [src/Operations.ts:96](https://github.com/handsontable/hyperformula/blob/a18429c/src/Operations.ts#L96)* **Parameters:** Name | Type | ------ | ------ | `sheet` | number | `indexes` | [ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[] | **Returns:** *[AddColumnsCommand](https://hyperformula.handsontable.com/docs/api/classes/addcolumnscommand.md)* ## Properties ### indexes • **indexes**: *[ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[]* *Defined in [src/Operations.ts:99](https://github.com/handsontable/hyperformula/blob/a18429c/src/Operations.ts#L99)* ___ ### sheet • **sheet**: *number* *Defined in [src/Operations.ts:98](https://github.com/handsontable/hyperformula/blob/a18429c/src/Operations.ts#L98)* ## Methods ### columnsSpans ▸ **columnsSpans**(): *[ColumnsSpan](https://hyperformula.handsontable.com/docs/api/classes/columnsspan.md)[]* *Defined in [src/Operations.ts:107](https://github.com/handsontable/hyperformula/blob/a18429c/src/Operations.ts#L107)* **Returns:** *[ColumnsSpan](https://hyperformula.handsontable.com/docs/api/classes/columnsspan.md)[]* ___ ### normalizedIndexes ▸ **normalizedIndexes**(): *[ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[]* *Defined in [src/Operations.ts:103](https://github.com/handsontable/hyperformula/blob/a18429c/src/Operations.ts#L103)* **Returns:** *[ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[]* --- ## AbsoluteCellRange URL: https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange # AbsoluteCellRange ## Constructors ### constructor \+ **new AbsoluteCellRange**(`start`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), `end`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)* *Defined in [src/AbsoluteCellRange.ts:47](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L47)* **Parameters:** Name | Type | ------ | ------ | `start` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | `end` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | **Returns:** *[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)* ## Properties ### end • **end**: *[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)* *Defined in [src/AbsoluteCellRange.ts:47](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L47)* ___ ### start • **start**: *[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)* *Defined in [src/AbsoluteCellRange.ts:46](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L46)* ## Accessors ### sheet • **get sheet**(): *number* *Defined in [src/AbsoluteCellRange.ts:60](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L60)* **Returns:** *number* ## Methods ### addressInRange ▸ **addressInRange**(`address`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *boolean* *Defined in [src/AbsoluteCellRange.ts:157](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L157)* **Parameters:** Name | Type | ------ | ------ | `address` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | **Returns:** *boolean* ___ ### addresses ▸ **addresses**(`dependencyGraph`: DependencyGraph): *[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)[]* *Defined in [src/AbsoluteCellRange.ts:315](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L315)* **Parameters:** Name | Type | ------ | ------ | `dependencyGraph` | DependencyGraph | **Returns:** *[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)[]* ___ ### addressesArrayMap ▸ **addressesArrayMap**‹**T**›(`dependencyGraph`: DependencyGraph, `op`: function): *T[][]* *Defined in [src/AbsoluteCellRange.ts:299](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L299)* **Type parameters:** ▪ **T** **Parameters:** ▪ **dependencyGraph**: *DependencyGraph* ▪ **op**: *function* ▸ (`arg`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *T* **Parameters:** Name | Type | ------ | ------ | `arg` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | **Returns:** *T[][]* ___ ### addressesWithDirection ▸ **addressesWithDirection**(`right`: number, `bottom`: number, `dependencyGraph`: DependencyGraph): *IterableIterator‹[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)›* *Defined in [src/AbsoluteCellRange.ts:331](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L331)* **Parameters:** Name | Type | ------ | ------ | `right` | number | `bottom` | number | `dependencyGraph` | DependencyGraph | **Returns:** *IterableIterator‹[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)›* ___ ### arrayOfAddressesInRange ▸ **arrayOfAddressesInRange**(): *[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)[][]* *Defined in [src/AbsoluteCellRange.ts:275](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L275)* **Returns:** *[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)[][]* ___ ### columnInRange ▸ **columnInRange**(`address`: [SimpleColumnAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecolumnaddress.md)): *boolean* *Defined in [src/AbsoluteCellRange.ts:168](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L168)* **Parameters:** Name | Type | ------ | ------ | `address` | [SimpleColumnAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecolumnaddress.md) | **Returns:** *boolean* ___ ### containsRange ▸ **containsRange**(`range`: [AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)): *boolean* *Defined in [src/AbsoluteCellRange.ts:182](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L182)* **Parameters:** Name | Type | ------ | ------ | `range` | [AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md) | **Returns:** *boolean* ___ ### doesOverlap ▸ **doesOverlap**(`other`: [AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)): *boolean* *Defined in [src/AbsoluteCellRange.ts:144](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L144)* **Parameters:** Name | Type | ------ | ------ | `other` | [AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md) | **Returns:** *boolean* ___ ### effectiveEndColumn ▸ **effectiveEndColumn**(`_dependencyGraph`: DependencyGraph): *number* *Defined in [src/AbsoluteCellRange.ts:390](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L390)* **Parameters:** Name | Type | ------ | ------ | `_dependencyGraph` | DependencyGraph | **Returns:** *number* ___ ### effectiveEndRow ▸ **effectiveEndRow**(`_dependencyGraph`: DependencyGraph): *number* *Defined in [src/AbsoluteCellRange.ts:394](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L394)* **Parameters:** Name | Type | ------ | ------ | `_dependencyGraph` | DependencyGraph | **Returns:** *number* ___ ### effectiveHeight ▸ **effectiveHeight**(`_dependencyGraph`: DependencyGraph): *number* *Defined in [src/AbsoluteCellRange.ts:402](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L402)* **Parameters:** Name | Type | ------ | ------ | `_dependencyGraph` | DependencyGraph | **Returns:** *number* ___ ### effectiveWidth ▸ **effectiveWidth**(`_dependencyGraph`: DependencyGraph): *number* *Defined in [src/AbsoluteCellRange.ts:398](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L398)* **Parameters:** Name | Type | ------ | ------ | `_dependencyGraph` | DependencyGraph | **Returns:** *number* ___ ### exceedsSheetSizeLimits ▸ **exceedsSheetSizeLimits**(`maxColumns`: number, `maxRows`: number): *boolean* *Defined in [src/AbsoluteCellRange.ts:386](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L386)* **Parameters:** Name | Type | ------ | ------ | `maxColumns` | number | `maxRows` | number | **Returns:** *boolean* ___ ### expandByColumns ▸ **expandByColumns**(`numberOfColumns`: number): *void* *Defined in [src/AbsoluteCellRange.ts:230](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L230)* **Parameters:** Name | Type | ------ | ------ | `numberOfColumns` | number | **Returns:** *void* ___ ### expandByRows ▸ **expandByRows**(`numberOfRows`: number): *void* *Defined in [src/AbsoluteCellRange.ts:217](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L217)* **Parameters:** Name | Type | ------ | ------ | `numberOfRows` | number | **Returns:** *void* ___ ### getAddress ▸ **getAddress**(`col`: number, `row`: number): *[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)* *Defined in [src/AbsoluteCellRange.ts:379](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L379)* **Parameters:** Name | Type | ------ | ------ | `col` | number | `row` | number | **Returns:** *[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)* ___ ### height ▸ **height**(): *number* *Defined in [src/AbsoluteCellRange.ts:267](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L267)* **Returns:** *number* ___ ### includesColumn ▸ **includesColumn**(`column`: number): *boolean* *Defined in [src/AbsoluteCellRange.ts:208](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L208)* **Parameters:** Name | Type | ------ | ------ | `column` | number | **Returns:** *boolean* ___ ### includesRow ▸ **includesRow**(`row`: number): *boolean* *Defined in [src/AbsoluteCellRange.ts:204](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L204)* **Parameters:** Name | Type | ------ | ------ | `row` | number | **Returns:** *boolean* ___ ### intersectionWith ▸ **intersectionWith**(`other`: [AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)): *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)›* *Defined in [src/AbsoluteCellRange.ts:186](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L186)* **Parameters:** Name | Type | ------ | ------ | `other` | [AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md) | **Returns:** *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)›* ___ ### isFinite ▸ **isFinite**(): *boolean* *Defined in [src/AbsoluteCellRange.ts:140](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L140)* **Returns:** *boolean* ___ ### moveToSheet ▸ **moveToSheet**(`toSheet`: number): *void* *Defined in [src/AbsoluteCellRange.ts:234](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L234)* **Parameters:** Name | Type | ------ | ------ | `toSheet` | number | **Returns:** *void* ___ ### rangeWithSameHeight ▸ **rangeWithSameHeight**(`startColumn`: number, `numberOfColumns`: number): *[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)* *Defined in [src/AbsoluteCellRange.ts:255](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L255)* **Parameters:** Name | Type | ------ | ------ | `startColumn` | number | `numberOfColumns` | number | **Returns:** *[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)* ___ ### rangeWithSameWidth ▸ **rangeWithSameWidth**(`startRow`: number, `numberOfRows`: number): *[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)* *Defined in [src/AbsoluteCellRange.ts:251](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L251)* **Parameters:** Name | Type | ------ | ------ | `startRow` | number | `numberOfRows` | number | **Returns:** *[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)* ___ ### removeSpan ▸ **removeSpan**(`span`: [Span](https://hyperformula.handsontable.com/docs/api/globals.md#span)): *void* *Defined in [src/AbsoluteCellRange.ts:239](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L239)* **Parameters:** Name | Type | ------ | ------ | `span` | [Span](https://hyperformula.handsontable.com/docs/api/globals.md#span) | **Returns:** *void* ___ ### rowInRange ▸ **rowInRange**(`address`: [SimpleRowAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplerowaddress.md)): *boolean* *Defined in [src/AbsoluteCellRange.ts:175](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L175)* **Parameters:** Name | Type | ------ | ------ | `address` | [SimpleRowAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplerowaddress.md) | **Returns:** *boolean* ___ ### sameAs ▸ **sameAs**(`other`: [AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)): *boolean* *Defined in [src/AbsoluteCellRange.ts:295](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L295)* **Parameters:** Name | Type | ------ | ------ | `other` | [AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md) | **Returns:** *boolean* ___ ### sameDimensionsAs ▸ **sameDimensionsAs**(`other`: [AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)): *boolean* *Defined in [src/AbsoluteCellRange.ts:291](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L291)* **Parameters:** Name | Type | ------ | ------ | `other` | [AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md) | **Returns:** *boolean* ___ ### shiftByColumns ▸ **shiftByColumns**(`numberOfColumns`: number): *void* *Defined in [src/AbsoluteCellRange.ts:221](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L221)* **Parameters:** Name | Type | ------ | ------ | `numberOfColumns` | number | **Returns:** *void* ___ ### shiftByRows ▸ **shiftByRows**(`numberOfRows`: number): *void* *Defined in [src/AbsoluteCellRange.ts:212](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L212)* **Parameters:** Name | Type | ------ | ------ | `numberOfRows` | number | **Returns:** *void* ___ ### shifted ▸ **shifted**(`byCols`: number, `byRows`: number): *[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)* *Defined in [src/AbsoluteCellRange.ts:226](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L226)* **Parameters:** Name | Type | ------ | ------ | `byCols` | number | `byRows` | number | **Returns:** *[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)* ___ ### shouldBeRemoved ▸ **shouldBeRemoved**(): *boolean* *Defined in [src/AbsoluteCellRange.ts:247](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L247)* **Returns:** *boolean* ___ ### size ▸ **size**(): *number* *Defined in [src/AbsoluteCellRange.ts:271](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L271)* **Returns:** *number* ___ ### toString ▸ **toString**(): *string* *Defined in [src/AbsoluteCellRange.ts:259](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L259)* **Returns:** *string* ___ ### width ▸ **width**(): *number* *Defined in [src/AbsoluteCellRange.ts:263](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L263)* **Returns:** *number* ___ ### withStart ▸ **withStart**(`newStart`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)* *Defined in [src/AbsoluteCellRange.ts:287](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L287)* **Parameters:** Name | Type | ------ | ------ | `newStart` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | **Returns:** *[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)* ___ ### fromAst ▸ **fromAst**(`ast`: CellRangeAst | ColumnRangeAst | RowRangeAst, `baseAddress`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)* *Defined in [src/AbsoluteCellRange.ts:83](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L83)* **Parameters:** Name | Type | ------ | ------ | `ast` | CellRangeAst | ColumnRangeAst | RowRangeAst | `baseAddress` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | **Returns:** *[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)* ___ ### fromAstOrUndef ▸ **fromAstOrUndef**(`ast`: CellRangeAst | ColumnRangeAst | RowRangeAst, `baseAddress`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)›* *Defined in [src/AbsoluteCellRange.ts:93](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L93)* **Parameters:** Name | Type | ------ | ------ | `ast` | CellRangeAst | ColumnRangeAst | RowRangeAst | `baseAddress` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | **Returns:** *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)›* ___ ### fromCellRange ▸ **fromCellRange**(`x`: [CellRange](https://hyperformula.handsontable.com/docs/api/interfaces/cellrange.md), `baseAddress`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)* *Defined in [src/AbsoluteCellRange.ts:101](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L101)* **Parameters:** Name | Type | ------ | ------ | `x` | [CellRange](https://hyperformula.handsontable.com/docs/api/interfaces/cellrange.md) | `baseAddress` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | **Returns:** *[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)* ___ ### fromCoordinates ▸ **fromCoordinates**(`sheet`: number, `x1`: number, `y1`: number, `x2`: number, `y2`: number): *[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)* *Defined in [src/AbsoluteCellRange.ts:136](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L136)* **Parameters:** Name | Type | ------ | ------ | `sheet` | number | `x1` | number | `y1` | number | `x2` | number | `y2` | number | **Returns:** *[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)* ___ ### fromSimpleCellAddresses ▸ **fromSimpleCellAddresses**(`start`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), `end`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)* *Defined in [src/AbsoluteCellRange.ts:64](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L64)* **Parameters:** Name | Type | ------ | ------ | `start` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | `end` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | **Returns:** *[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)* ___ ### spanFrom ▸ **spanFrom**(`topLeftCorner`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), `width`: number, `height`: number): *[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)* *Defined in [src/AbsoluteCellRange.ts:108](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L108)* **Parameters:** Name | Type | ------ | ------ | `topLeftCorner` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | `width` | number | `height` | number | **Returns:** *[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)* ___ ### spanFromOrUndef ▸ **spanFromOrUndef**(`topLeftCorner`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), `width`: number, `height`: number): *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)›* *Defined in [src/AbsoluteCellRange.ts:116](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L116)* **Parameters:** Name | Type | ------ | ------ | `topLeftCorner` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | `width` | number | `height` | number | **Returns:** *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)›* --- ## / URL: https://hyperformula.handsontable.com/docs/

HyperFormula - A headless spreadsheet, a parser and evaluator of Excel formulas

An open-source headless spreadsheet for business web apps

npm total downloads npm monthly downloads GitHub contributors Known Vulnerabilities
FOSSA Status GitHub Workflow Status codecov

--- HyperFormula is a headless spreadsheet built in TypeScript, serving as both a parser and evaluator of spreadsheet formulas. It can be integrated into your browser or utilized as a service with Node.js as your back-end technology. ## What HyperFormula can be used for? HyperFormula doesn't assume any existing user interface, making it a general-purpose library that can be used in various business applications. Here are some examples: - Deterministic compute layer for AI & LLMs - Calculated fields in CRM and ERP software - Custom spreadsheet-like app - Business logic builder - Forms and form builder - Educational app - Online calculator ## Features - [Function syntax compatible with Microsoft Excel](https://hyperformula.handsontable.com/docs/guide/compatibility-with-microsoft-excel.md) and [Google Sheets](https://hyperformula.handsontable.com/docs/guide/compatibility-with-google-sheets.md) - High-speed parsing and evaluation of spreadsheet formulas - [A library of ~400 built-in functions](https://hyperformula.handsontable.com/docs/guide/built-in-functions.md) - [Support for custom functions](https://hyperformula.handsontable.com/docs/guide/custom-functions.md) - [Support for Node.js](https://hyperformula.handsontable.com/docs/guide/server-side-installation.md#install-with-npm-or-yarn) - [Support for undo/redo](https://hyperformula.handsontable.com/docs/guide/undo-redo.md) - [Support for CRUD operations](https://hyperformula.handsontable.com/docs/guide/basic-operations.md) - [Support for clipboard](https://hyperformula.handsontable.com/docs/guide/clipboard-operations.md) - [Support for named expressions](https://hyperformula.handsontable.com/docs/guide/named-expressions.md) - [Support for data sorting](https://hyperformula.handsontable.com/docs/guide/sorting-data.md) - [Support for formula localization with 17 built-in languages](https://hyperformula.handsontable.com/docs/guide/i18n-features.md) - Easy integration with any front-end or back-end application - GPLv3 or a [commercial license](https://handsontable.com/get-a-quote) - Maintained by the team that stands behind the [Handsontable](https://handsontable.com/) data grid ## Documentation - [Client-side installation](https://hyperformula.handsontable.com/docs/guide/client-side-installation.md) - [Server-side installation](https://hyperformula.handsontable.com/docs/guide/server-side-installation.md) - [Basic usage](https://hyperformula.handsontable.com/docs/guide/basic-usage.md) - [Configuration options](https://hyperformula.handsontable.com/docs/guide/configuration-options.md) - [List of built-in functions](https://hyperformula.handsontable.com/docs/guide/built-in-functions.md) - [API Reference](https://hyperformula.handsontable.com/docs/api/) ## Integrations - [Integration with React](https://hyperformula.handsontable.com/docs/guide/integration-with-react.md#demo) - [Integration with Angular](https://hyperformula.handsontable.com/docs/guide/integration-with-angular.md#demo) - [Integration with Vue](https://hyperformula.handsontable.com/docs/guide/integration-with-vue.md#demo) - [Integration with Svelte](https://hyperformula.handsontable.com/docs/guide/integration-with-svelte.md#demo) ## Installation and usage Install the library from [npm](https://www.npmjs.com/package/hyperformula) like so: ```bash npm install hyperformula ``` Once installed, you can use it to develop applications tailored to your specific business needs. Here, we've used it to craft a form that calculates mortgage payments using the `PMT` formula. ```js import { HyperFormula } from 'hyperformula'; // Create a HyperFormula instance const hf = HyperFormula.buildEmpty({ licenseKey: 'gpl-v3' }); // Add an empty sheet const sheetName = hf.addSheet('Mortgage Calculator'); const sheetId = hf.getSheetId(sheetName); // Enter the mortgage parameters hf.addNamedExpression('AnnualInterestRate', '8%'); hf.addNamedExpression('NumberOfMonths', 360); hf.addNamedExpression('LoanAmount', 800000); // Use the PMT function to calculate the monthly payment hf.setCellContents({ sheet: sheetId, row: 0, col: 0 }, [['Monthly Payment', '=PMT(AnnualInterestRate/12, NumberOfMonths, -LoanAmount)']]); // Display the result console.log(`${hf.getCellValue({ sheet: sheetId, row: 0, col: 0 })}: ${hf.getCellValue({ sheet: sheetId, row: 0, col: 1 })}`); ``` [Run this code in StackBlitz](https://stackblitz.com/github/handsontable/hyperformula-demos/tree/3.4.x/mortgage-calculator) ## Contributing Contributions are welcome, but before you make them, please read the [Contributing Guide](https://hyperformula.handsontable.com/docs/guide/contributing.md) and accept the [Contributor License Agreement](https://goo.gl/forms/yuutGuN0RjsikVpM2). ## License HyperFormula is available under two different licenses: GPLv3 and proprietary. The proprietary license can be purchased by [contacting our team](https://handsontable.com/get-a-quote) at Handsontable. Copyright (c) Handsoncode --- ## AddColumnsUndoEntry URL: https://hyperformula.handsontable.com/docs/api/classes/addcolumnsundoentry # AddColumnsUndoEntry ## Constructors ### constructor \+ **new AddColumnsUndoEntry**(`command`: [AddColumnsCommand](https://hyperformula.handsontable.com/docs/api/classes/addcolumnscommand.md)): *[AddColumnsUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/addcolumnsundoentry.md)* *Defined in [src/UndoRedo.ts:222](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L222)* **Parameters:** Name | Type | ------ | ------ | `command` | [AddColumnsCommand](https://hyperformula.handsontable.com/docs/api/classes/addcolumnscommand.md) | **Returns:** *[AddColumnsUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/addcolumnsundoentry.md)* ## Properties ### command • **command**: *[AddColumnsCommand](https://hyperformula.handsontable.com/docs/api/classes/addcolumnscommand.md)* *Defined in [src/UndoRedo.ts:224](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L224)* ## Methods ### doRedo ▸ **doRedo**(`undoRedo`: [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md)): *void* *Defined in [src/UndoRedo.ts:233](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L233)* **Parameters:** Name | Type | ------ | ------ | `undoRedo` | [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md) | **Returns:** *void* ___ ### doUndo ▸ **doUndo**(`undoRedo`: [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md)): *void* *Defined in [src/UndoRedo.ts:229](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L229)* **Parameters:** Name | Type | ------ | ------ | `undoRedo` | [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md) | **Returns:** *void* ___ ### getReferencedOldDataVersions ▸ **getReferencedOldDataVersions**(): *number[]* *Defined in [src/UndoRedo.ts:42](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L42)* Returns LazilyTransformingAstService version keys referenced by this entry's oldData. Default implementation returns empty — override in entries that store oldData. **Returns:** *number[]* --- ## AddRowsCommand URL: https://hyperformula.handsontable.com/docs/api/classes/addrowscommand # AddRowsCommand ## Constructors ### constructor \+ **new AddRowsCommand**(`sheet`: number, `indexes`: [ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[]): *[AddRowsCommand](https://hyperformula.handsontable.com/docs/api/classes/addrowscommand.md)* *Defined in [src/Operations.ts:78](https://github.com/handsontable/hyperformula/blob/a18429c/src/Operations.ts#L78)* **Parameters:** Name | Type | ------ | ------ | `sheet` | number | `indexes` | [ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[] | **Returns:** *[AddRowsCommand](https://hyperformula.handsontable.com/docs/api/classes/addrowscommand.md)* ## Properties ### indexes • **indexes**: *[ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[]* *Defined in [src/Operations.ts:81](https://github.com/handsontable/hyperformula/blob/a18429c/src/Operations.ts#L81)* ___ ### sheet • **sheet**: *number* *Defined in [src/Operations.ts:80](https://github.com/handsontable/hyperformula/blob/a18429c/src/Operations.ts#L80)* ## Methods ### normalizedIndexes ▸ **normalizedIndexes**(): *[ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[]* *Defined in [src/Operations.ts:85](https://github.com/handsontable/hyperformula/blob/a18429c/src/Operations.ts#L85)* **Returns:** *[ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[]* ___ ### rowsSpans ▸ **rowsSpans**(): *[RowsSpan](https://hyperformula.handsontable.com/docs/api/classes/rowsspan.md)[]* *Defined in [src/Operations.ts:89](https://github.com/handsontable/hyperformula/blob/a18429c/src/Operations.ts#L89)* **Returns:** *[RowsSpan](https://hyperformula.handsontable.com/docs/api/classes/rowsspan.md)[]* --- ## AddSheetUndoEntry URL: https://hyperformula.handsontable.com/docs/api/classes/addsheetundoentry # AddSheetUndoEntry ## Constructors ### constructor \+ **new AddSheetUndoEntry**(`sheetName`: string, `sheetId`: number): *[AddSheetUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/addsheetundoentry.md)* *Defined in [src/UndoRedo.ts:259](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L259)* **Parameters:** Name | Type | ------ | ------ | `sheetName` | string | `sheetId` | number | **Returns:** *[AddSheetUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/addsheetundoentry.md)* ## Properties ### sheetId • **sheetId**: *number* *Defined in [src/UndoRedo.ts:262](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L262)* ___ ### sheetName • **sheetName**: *string* *Defined in [src/UndoRedo.ts:261](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L261)* ## Methods ### doRedo ▸ **doRedo**(`undoRedo`: [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md)): *void* *Defined in [src/UndoRedo.ts:271](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L271)* **Parameters:** Name | Type | ------ | ------ | `undoRedo` | [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md) | **Returns:** *void* ___ ### doUndo ▸ **doUndo**(`undoRedo`: [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md)): *void* *Defined in [src/UndoRedo.ts:267](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L267)* **Parameters:** Name | Type | ------ | ------ | `undoRedo` | [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md) | **Returns:** *void* ___ ### getReferencedOldDataVersions ▸ **getReferencedOldDataVersions**(): *number[]* *Defined in [src/UndoRedo.ts:42](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L42)* Returns LazilyTransformingAstService version keys referenced by this entry's oldData. Default implementation returns empty — override in entries that store oldData. **Returns:** *number[]* --- ## AddNamedExpressionUndoEntry URL: https://hyperformula.handsontable.com/docs/api/classes/addnamedexpressionundoentry # AddNamedExpressionUndoEntry ## Constructors ### constructor \+ **new AddNamedExpressionUndoEntry**(`name`: string, `newContent`: [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent), `scope?`: undefined | number, `options?`: [NamedExpressionOptions](https://hyperformula.handsontable.com/docs/api/globals.md#namedexpressionoptions)): *[AddNamedExpressionUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/addnamedexpressionundoentry.md)* *Defined in [src/UndoRedo.ts:385](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L385)* **Parameters:** Name | Type | ------ | ------ | `name` | string | `newContent` | [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent) | `scope?` | undefined | number | `options?` | [NamedExpressionOptions](https://hyperformula.handsontable.com/docs/api/globals.md#namedexpressionoptions) | **Returns:** *[AddNamedExpressionUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/addnamedexpressionundoentry.md)* ## Properties ### name • **name**: *string* *Defined in [src/UndoRedo.ts:387](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L387)* ___ ### newContent • **newContent**: *[RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent)* *Defined in [src/UndoRedo.ts:388](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L388)* ___ ### options • **options**? : *[NamedExpressionOptions](https://hyperformula.handsontable.com/docs/api/globals.md#namedexpressionoptions)* *Defined in [src/UndoRedo.ts:390](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L390)* ___ ### scope • **scope**? : *undefined | number* *Defined in [src/UndoRedo.ts:389](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L389)* ## Methods ### doRedo ▸ **doRedo**(`undoRedo`: [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md)): *void* *Defined in [src/UndoRedo.ts:399](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L399)* **Parameters:** Name | Type | ------ | ------ | `undoRedo` | [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md) | **Returns:** *void* ___ ### doUndo ▸ **doUndo**(`undoRedo`: [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md)): *void* *Defined in [src/UndoRedo.ts:395](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L395)* **Parameters:** Name | Type | ------ | ------ | `undoRedo` | [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md) | **Returns:** *void* ___ ### getReferencedOldDataVersions ▸ **getReferencedOldDataVersions**(): *number[]* *Defined in [src/UndoRedo.ts:42](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L42)* Returns LazilyTransformingAstService version keys referenced by this entry's oldData. Default implementation returns empty — override in entries that store oldData. **Returns:** *number[]* --- ## AddRowsUndoEntry URL: https://hyperformula.handsontable.com/docs/api/classes/addrowsundoentry # AddRowsUndoEntry ## Constructors ### constructor \+ **new AddRowsUndoEntry**(`command`: [AddRowsCommand](https://hyperformula.handsontable.com/docs/api/classes/addrowscommand.md)): *[AddRowsUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/addrowsundoentry.md)* *Defined in [src/UndoRedo.ts:94](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L94)* **Parameters:** Name | Type | ------ | ------ | `command` | [AddRowsCommand](https://hyperformula.handsontable.com/docs/api/classes/addrowscommand.md) | **Returns:** *[AddRowsUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/addrowsundoentry.md)* ## Properties ### command • **command**: *[AddRowsCommand](https://hyperformula.handsontable.com/docs/api/classes/addrowscommand.md)* *Defined in [src/UndoRedo.ts:96](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L96)* ## Methods ### doRedo ▸ **doRedo**(`undoRedo`: [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md)): *void* *Defined in [src/UndoRedo.ts:105](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L105)* **Parameters:** Name | Type | ------ | ------ | `undoRedo` | [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md) | **Returns:** *void* ___ ### doUndo ▸ **doUndo**(`undoRedo`: [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md)): *void* *Defined in [src/UndoRedo.ts:101](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L101)* **Parameters:** Name | Type | ------ | ------ | `undoRedo` | [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md) | **Returns:** *void* ___ ### getReferencedOldDataVersions ▸ **getReferencedOldDataVersions**(): *number[]* *Defined in [src/UndoRedo.ts:42](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L42)* Returns LazilyTransformingAstService version keys referenced by this entry's oldData. Default implementation returns empty — override in entries that store oldData. **Returns:** *number[]* --- ## ArraySize URL: https://hyperformula.handsontable.com/docs/api/classes/arraysize # ArraySize ## Constructors ### constructor \+ **new ArraySize**(`width`: number, `height`: number, `isRef`: boolean): *[ArraySize](https://hyperformula.handsontable.com/docs/api/classes/arraysize.md)* *Defined in [src/ArraySize.ts:14](https://github.com/handsontable/hyperformula/blob/a18429c/src/ArraySize.ts#L14)* **Parameters:** Name | Type | Default | ------ | ------ | ------ | `width` | number | - | `height` | number | - | `isRef` | boolean | false | **Returns:** *[ArraySize](https://hyperformula.handsontable.com/docs/api/classes/arraysize.md)* ## Properties ### height • **height**: *number* *Defined in [src/ArraySize.ts:17](https://github.com/handsontable/hyperformula/blob/a18429c/src/ArraySize.ts#L17)* ___ ### isRef • **isRef**: *boolean* *Defined in [src/ArraySize.ts:18](https://github.com/handsontable/hyperformula/blob/a18429c/src/ArraySize.ts#L18)* ___ ### width • **width**: *number* *Defined in [src/ArraySize.ts:16](https://github.com/handsontable/hyperformula/blob/a18429c/src/ArraySize.ts#L16)* ## Methods ### isScalar ▸ **isScalar**(): *boolean* *Defined in [src/ArraySize.ts:29](https://github.com/handsontable/hyperformula/blob/a18429c/src/ArraySize.ts#L29)* **Returns:** *boolean* ___ ### error ▸ **error**(): *[ArraySize](https://hyperformula.handsontable.com/docs/api/classes/arraysize.md)‹›* *Defined in [src/ArraySize.ts:21](https://github.com/handsontable/hyperformula/blob/a18429c/src/ArraySize.ts#L21)* **Returns:** *[ArraySize](https://hyperformula.handsontable.com/docs/api/classes/arraysize.md)‹›* ___ ### scalar ▸ **scalar**(): *[ArraySize](https://hyperformula.handsontable.com/docs/api/classes/arraysize.md)‹›* *Defined in [src/ArraySize.ts:25](https://github.com/handsontable/hyperformula/blob/a18429c/src/ArraySize.ts#L25)* **Returns:** *[ArraySize](https://hyperformula.handsontable.com/docs/api/classes/arraysize.md)‹›* --- ## AliasAlreadyExisting URL: https://hyperformula.handsontable.com/docs/api/classes/aliasalreadyexisting # AliasAlreadyExisting Error thrown when alias to a function is already defined. **`see`** [registerFunctionPlugin](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#static-registerfunctionplugin) **`see`** [registerFunction](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#static-registerfunction) ## Constructors ### constructor \+ **new AliasAlreadyExisting**(`name`: string, `pluginName`: string): *[AliasAlreadyExisting](https://hyperformula.handsontable.com/docs/api/classes/aliasalreadyexisting.md)* *Defined in [src/errors.ts:390](https://github.com/handsontable/hyperformula/blob/a18429c/src/errors.ts#L390)* **Parameters:** Name | Type | ------ | ------ | `name` | string | `pluginName` | string | **Returns:** *[AliasAlreadyExisting](https://hyperformula.handsontable.com/docs/api/classes/aliasalreadyexisting.md)* ## Properties ### message • **message**: *string* ___ ### name • **name**: *string* ___ ### stack • **stack**? : *undefined | string* ___ ### Error ▪ **Error**: *ErrorConstructor* --- ## AdvancedFind URL: https://hyperformula.handsontable.com/docs/api/classes/advancedfind # AdvancedFind ## Methods ### advancedFind ▸ **advancedFind**(`keyMatcher`: function, `rangeValue`: [SimpleRangeValue](https://hyperformula.handsontable.com/docs/api/classes/simplerangevalue.md), `__namedParameters`: object): *number* *Defined in [src/Lookup/AdvancedFind.ts:27](https://github.com/handsontable/hyperformula/blob/a18429c/src/Lookup/AdvancedFind.ts#L27)* **Parameters:** ▪ **keyMatcher**: *function* ▸ (`arg`: RawInterpreterValue): *boolean* **Parameters:** Name | Type | ------ | ------ | `arg` | RawInterpreterValue | ▪ **rangeValue**: *[SimpleRangeValue](https://hyperformula.handsontable.com/docs/api/classes/simplerangevalue.md)* ▪`Default value` **__namedParameters**: *object*= { returnOccurrence: 'first' } Name | Type | ------ | ------ | `returnOccurrence` | undefined | "first" | "last" | **Returns:** *number* --- ## ArraySizePredictor URL: https://hyperformula.handsontable.com/docs/api/classes/arraysizepredictor # ArraySizePredictor ## Constructors ### constructor \+ **new ArraySizePredictor**(`config`: [Config](https://hyperformula.handsontable.com/docs/api/classes/config.md), `functionRegistry`: FunctionRegistry): *[ArraySizePredictor](https://hyperformula.handsontable.com/docs/api/classes/arraysizepredictor.md)* *Defined in [src/ArraySize.ts:42](https://github.com/handsontable/hyperformula/blob/a18429c/src/ArraySize.ts#L42)* **Parameters:** Name | Type | ------ | ------ | `config` | [Config](https://hyperformula.handsontable.com/docs/api/classes/config.md) | `functionRegistry` | FunctionRegistry | **Returns:** *[ArraySizePredictor](https://hyperformula.handsontable.com/docs/api/classes/arraysizepredictor.md)* ## Methods ### checkArraySize ▸ **checkArraySize**(`ast`: Ast, `formulaAddress`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *[ArraySize](https://hyperformula.handsontable.com/docs/api/classes/arraysize.md)* *Defined in [src/ArraySize.ts:49](https://github.com/handsontable/hyperformula/blob/a18429c/src/ArraySize.ts#L49)* **Parameters:** Name | Type | ------ | ------ | `ast` | Ast | `formulaAddress` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | **Returns:** *[ArraySize](https://hyperformula.handsontable.com/docs/api/classes/arraysize.md)* ___ ### checkArraySizeForAst ▸ **checkArraySizeForAst**(`ast`: Ast, `state`: InterpreterState): *[ArraySize](https://hyperformula.handsontable.com/docs/api/classes/arraysize.md)* *Defined in [src/ArraySize.ts:53](https://github.com/handsontable/hyperformula/blob/a18429c/src/ArraySize.ts#L53)* **Parameters:** Name | Type | ------ | ------ | `ast` | Ast | `state` | InterpreterState | **Returns:** *[ArraySize](https://hyperformula.handsontable.com/docs/api/classes/arraysize.md)* --- ## ArrayValue URL: https://hyperformula.handsontable.com/docs/api/classes/arrayvalue # ArrayValue ## Constructors ### constructor \+ **new ArrayValue**(`array`: InternalScalarValue[][]): *[ArrayValue](https://hyperformula.handsontable.com/docs/api/classes/arrayvalue.md)* *Defined in [src/ArrayValue.ts:47](https://github.com/handsontable/hyperformula/blob/a18429c/src/ArrayValue.ts#L47)* **Parameters:** Name | Type | ------ | ------ | `array` | InternalScalarValue[][] | **Returns:** *[ArrayValue](https://hyperformula.handsontable.com/docs/api/classes/arrayvalue.md)* ## Properties ### size • **size**: *[ArraySize](https://hyperformula.handsontable.com/docs/api/classes/arraysize.md)* *Defined in [src/ArrayValue.ts:46](https://github.com/handsontable/hyperformula/blob/a18429c/src/ArrayValue.ts#L46)* ## Methods ### addColumns ▸ **addColumns**(`aboveColumn`: number, `numberOfColumns`: number): *void* *Defined in [src/ArrayValue.ts:75](https://github.com/handsontable/hyperformula/blob/a18429c/src/ArrayValue.ts#L75)* **Parameters:** Name | Type | ------ | ------ | `aboveColumn` | number | `numberOfColumns` | number | **Returns:** *void* ___ ### addRows ▸ **addRows**(`aboveRow`: number, `numberOfRows`: number): *void* *Defined in [src/ArrayValue.ts:70](https://github.com/handsontable/hyperformula/blob/a18429c/src/ArrayValue.ts#L70)* **Parameters:** Name | Type | ------ | ------ | `aboveRow` | number | `numberOfRows` | number | **Returns:** *void* ___ ### get ▸ **get**(`col`: number, `row`: number): *InternalScalarValue* *Defined in [src/ArrayValue.ts:110](https://github.com/handsontable/hyperformula/blob/a18429c/src/ArrayValue.ts#L110)* **Parameters:** Name | Type | ------ | ------ | `col` | number | `row` | number | **Returns:** *InternalScalarValue* ___ ### height ▸ **height**(): *number* *Defined in [src/ArrayValue.ts:128](https://github.com/handsontable/hyperformula/blob/a18429c/src/ArrayValue.ts#L128)* **Returns:** *number* ___ ### nullArrays ▸ **nullArrays**(`count`: number, `size`: number): *any[][]* *Defined in [src/ArrayValue.ts:102](https://github.com/handsontable/hyperformula/blob/a18429c/src/ArrayValue.ts#L102)* **Parameters:** Name | Type | ------ | ------ | `count` | number | `size` | number | **Returns:** *any[][]* ___ ### raw ▸ **raw**(): *InternalScalarValue[][]* *Defined in [src/ArrayValue.ts:132](https://github.com/handsontable/hyperformula/blob/a18429c/src/ArrayValue.ts#L132)* **Returns:** *InternalScalarValue[][]* ___ ### removeColumns ▸ **removeColumns**(`leftmostColumn`: number, `rightmostColumn`: number): *void* *Defined in [src/ArrayValue.ts:91](https://github.com/handsontable/hyperformula/blob/a18429c/src/ArrayValue.ts#L91)* **Parameters:** Name | Type | ------ | ------ | `leftmostColumn` | number | `rightmostColumn` | number | **Returns:** *void* ___ ### removeRows ▸ **removeRows**(`startRow`: number, `endRow`: number): *void* *Defined in [src/ArrayValue.ts:82](https://github.com/handsontable/hyperformula/blob/a18429c/src/ArrayValue.ts#L82)* **Parameters:** Name | Type | ------ | ------ | `startRow` | number | `endRow` | number | **Returns:** *void* ___ ### resize ▸ **resize**(`newSize`: [ArraySize](https://hyperformula.handsontable.com/docs/api/classes/arraysize.md)): *void* *Defined in [src/ArrayValue.ts:136](https://github.com/handsontable/hyperformula/blob/a18429c/src/ArrayValue.ts#L136)* **Parameters:** Name | Type | ------ | ------ | `newSize` | [ArraySize](https://hyperformula.handsontable.com/docs/api/classes/arraysize.md) | **Returns:** *void* ___ ### set ▸ **set**(`col`: number, `row`: number, `value`: number): *void* *Defined in [src/ArrayValue.ts:117](https://github.com/handsontable/hyperformula/blob/a18429c/src/ArrayValue.ts#L117)* **Parameters:** Name | Type | ------ | ------ | `col` | number | `row` | number | `value` | number | **Returns:** *void* ___ ### simpleRangeValue ▸ **simpleRangeValue**(): *[SimpleRangeValue](https://hyperformula.handsontable.com/docs/api/classes/simplerangevalue.md)* *Defined in [src/ArrayValue.ts:66](https://github.com/handsontable/hyperformula/blob/a18429c/src/ArrayValue.ts#L66)* **Returns:** *[SimpleRangeValue](https://hyperformula.handsontable.com/docs/api/classes/simplerangevalue.md)* ___ ### width ▸ **width**(): *number* *Defined in [src/ArrayValue.ts:124](https://github.com/handsontable/hyperformula/blob/a18429c/src/ArrayValue.ts#L124)* **Returns:** *number* ___ ### fromInterpreterValue ▸ **fromInterpreterValue**(`value`: InterpreterValue): *[ArrayValue](https://hyperformula.handsontable.com/docs/api/classes/arrayvalue.md)‹›* *Defined in [src/ArrayValue.ts:58](https://github.com/handsontable/hyperformula/blob/a18429c/src/ArrayValue.ts#L58)* **Parameters:** Name | Type | ------ | ------ | `value` | InterpreterValue | **Returns:** *[ArrayValue](https://hyperformula.handsontable.com/docs/api/classes/arrayvalue.md)‹›* --- ## BatchUndoEntry URL: https://hyperformula.handsontable.com/docs/api/classes/batchundoentry # BatchUndoEntry ## Properties ### operations • **operations**: *[UndoEntry](https://hyperformula.handsontable.com/docs/api/interfaces/undoentry.md)[]* = [] *Defined in [src/UndoRedo.ts:443](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L443)* ## Methods ### add ▸ **add**(`operation`: [UndoEntry](https://hyperformula.handsontable.com/docs/api/interfaces/undoentry.md)): *void* *Defined in [src/UndoRedo.ts:445](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L445)* **Parameters:** Name | Type | ------ | ------ | `operation` | [UndoEntry](https://hyperformula.handsontable.com/docs/api/interfaces/undoentry.md) | **Returns:** *void* ___ ### doRedo ▸ **doRedo**(`undoRedo`: [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md)): *void* *Defined in [src/UndoRedo.ts:459](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L459)* **Parameters:** Name | Type | ------ | ------ | `undoRedo` | [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md) | **Returns:** *void* ___ ### doUndo ▸ **doUndo**(`undoRedo`: [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md)): *void* *Defined in [src/UndoRedo.ts:455](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L455)* **Parameters:** Name | Type | ------ | ------ | `undoRedo` | [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md) | **Returns:** *void* ___ ### getReferencedOldDataVersions ▸ **getReferencedOldDataVersions**(): *number[]* *Defined in [src/UndoRedo.ts:463](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L463)* **Returns:** *number[]* ___ ### reversedOperations ▸ **reversedOperations**(): *Generator‹[UndoEntry](https://hyperformula.handsontable.com/docs/api/interfaces/undoentry.md), void, unknown›* *Defined in [src/UndoRedo.ts:449](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L449)* **Returns:** *Generator‹[UndoEntry](https://hyperformula.handsontable.com/docs/api/interfaces/undoentry.md), void, unknown›* --- ## BuildEngineFactory URL: https://hyperformula.handsontable.com/docs/api/classes/buildenginefactory # BuildEngineFactory ## Methods ### buildEmpty ▸ **buildEmpty**(`configInput`: Partial‹[ConfigParams](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md)›, `namedExpressions`: [SerializedNamedExpression](https://hyperformula.handsontable.com/docs/api/interfaces/serializednamedexpression.md)[]): *[EngineState](https://hyperformula.handsontable.com/docs/api/globals.md#enginestate)* *Defined in [src/BuildEngineFactory.ts:62](https://github.com/handsontable/hyperformula/blob/a18429c/src/BuildEngineFactory.ts#L62)* **Parameters:** Name | Type | Default | ------ | ------ | ------ | `configInput` | Partial‹[ConfigParams](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md)› | {} | `namedExpressions` | [SerializedNamedExpression](https://hyperformula.handsontable.com/docs/api/interfaces/serializednamedexpression.md)[] | [] | **Returns:** *[EngineState](https://hyperformula.handsontable.com/docs/api/globals.md#enginestate)* ___ ### buildFromSheet ▸ **buildFromSheet**(`sheet`: [Sheet](https://hyperformula.handsontable.com/docs/api/globals.md#sheet), `configInput`: Partial‹[ConfigParams](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md)›, `namedExpressions`: [SerializedNamedExpression](https://hyperformula.handsontable.com/docs/api/interfaces/serializednamedexpression.md)[]): *[EngineState](https://hyperformula.handsontable.com/docs/api/globals.md#enginestate)* *Defined in [src/BuildEngineFactory.ts:56](https://github.com/handsontable/hyperformula/blob/a18429c/src/BuildEngineFactory.ts#L56)* **Parameters:** Name | Type | Default | ------ | ------ | ------ | `sheet` | [Sheet](https://hyperformula.handsontable.com/docs/api/globals.md#sheet) | - | `configInput` | Partial‹[ConfigParams](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md)› | {} | `namedExpressions` | [SerializedNamedExpression](https://hyperformula.handsontable.com/docs/api/interfaces/serializednamedexpression.md)[] | [] | **Returns:** *[EngineState](https://hyperformula.handsontable.com/docs/api/globals.md#enginestate)* ___ ### buildFromSheets ▸ **buildFromSheets**(`sheets`: [Sheets](https://hyperformula.handsontable.com/docs/api/globals.md#sheets), `configInput`: Partial‹[ConfigParams](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md)›, `namedExpressions`: [SerializedNamedExpression](https://hyperformula.handsontable.com/docs/api/interfaces/serializednamedexpression.md)[]): *[EngineState](https://hyperformula.handsontable.com/docs/api/globals.md#enginestate)* *Defined in [src/BuildEngineFactory.ts:51](https://github.com/handsontable/hyperformula/blob/a18429c/src/BuildEngineFactory.ts#L51)* **Parameters:** Name | Type | Default | ------ | ------ | ------ | `sheets` | [Sheets](https://hyperformula.handsontable.com/docs/api/globals.md#sheets) | - | `configInput` | Partial‹[ConfigParams](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md)› | {} | `namedExpressions` | [SerializedNamedExpression](https://hyperformula.handsontable.com/docs/api/interfaces/serializednamedexpression.md)[] | [] | **Returns:** *[EngineState](https://hyperformula.handsontable.com/docs/api/globals.md#enginestate)* ___ ### rebuildWithConfig ▸ **rebuildWithConfig**(`config`: [Config](https://hyperformula.handsontable.com/docs/api/classes/config.md), `sheets`: [Sheets](https://hyperformula.handsontable.com/docs/api/globals.md#sheets), `namedExpressions`: [SerializedNamedExpression](https://hyperformula.handsontable.com/docs/api/interfaces/serializednamedexpression.md)[], `stats`: [Statistics](https://hyperformula.handsontable.com/docs/api/classes/statistics.md)): *[EngineState](https://hyperformula.handsontable.com/docs/api/globals.md#enginestate)* *Defined in [src/BuildEngineFactory.ts:66](https://github.com/handsontable/hyperformula/blob/a18429c/src/BuildEngineFactory.ts#L66)* **Parameters:** Name | Type | ------ | ------ | `config` | [Config](https://hyperformula.handsontable.com/docs/api/classes/config.md) | `sheets` | [Sheets](https://hyperformula.handsontable.com/docs/api/globals.md#sheets) | `namedExpressions` | [SerializedNamedExpression](https://hyperformula.handsontable.com/docs/api/interfaces/serializednamedexpression.md)[] | `stats` | [Statistics](https://hyperformula.handsontable.com/docs/api/classes/statistics.md) | **Returns:** *[EngineState](https://hyperformula.handsontable.com/docs/api/globals.md#enginestate)* --- ## Boolean URL: https://hyperformula.handsontable.com/docs/api/classes/cellcontent.boolean # Boolean ## Constructors ### constructor \+ **new Boolean**(`value`: boolean): *[Boolean](https://hyperformula.handsontable.com/docs/api/classes/cellcontent.boolean.md)* *Defined in [src/CellContentParser.ts:39](https://github.com/handsontable/hyperformula/blob/a18429c/src/CellContentParser.ts#L39)* **Parameters:** Name | Type | ------ | ------ | `value` | boolean | **Returns:** *[Boolean](https://hyperformula.handsontable.com/docs/api/classes/cellcontent.boolean.md)* ## Properties ### value • **value**: *boolean* *Defined in [src/CellContentParser.ts:40](https://github.com/handsontable/hyperformula/blob/a18429c/src/CellContentParser.ts#L40)* --- ## Empty URL: https://hyperformula.handsontable.com/docs/api/classes/cellcontent.empty # Empty ## Methods ### getSingletonInstance ▸ **getSingletonInstance**(): *[Empty](https://hyperformula.handsontable.com/docs/api/classes/cellcontent.empty.md)‹›* *Defined in [src/CellContentParser.ts:48](https://github.com/handsontable/hyperformula/blob/a18429c/src/CellContentParser.ts#L48)* **Returns:** *[Empty](https://hyperformula.handsontable.com/docs/api/classes/cellcontent.empty.md)‹›* --- ## Formula URL: https://hyperformula.handsontable.com/docs/api/classes/cellcontent.formula # Formula ## Constructors ### constructor \+ **new Formula**(`formula`: string): *[Formula](https://hyperformula.handsontable.com/docs/api/classes/cellcontent.formula.md)* *Defined in [src/CellContentParser.ts:56](https://github.com/handsontable/hyperformula/blob/a18429c/src/CellContentParser.ts#L56)* **Parameters:** Name | Type | ------ | ------ | `formula` | string | **Returns:** *[Formula](https://hyperformula.handsontable.com/docs/api/classes/cellcontent.formula.md)* ## Properties ### formula • **formula**: *string* *Defined in [src/CellContentParser.ts:57](https://github.com/handsontable/hyperformula/blob/a18429c/src/CellContentParser.ts#L57)* --- ## Number URL: https://hyperformula.handsontable.com/docs/api/classes/cellcontent.number # Number ## Constructors ### constructor \+ **new Number**(`value`: ExtendedNumber): *[Number](https://hyperformula.handsontable.com/docs/api/classes/cellcontent.number.md)* *Defined in [src/CellContentParser.ts:28](https://github.com/handsontable/hyperformula/blob/a18429c/src/CellContentParser.ts#L28)* **Parameters:** Name | Type | ------ | ------ | `value` | ExtendedNumber | **Returns:** *[Number](https://hyperformula.handsontable.com/docs/api/classes/cellcontent.number.md)* ## Properties ### value • **value**: *ExtendedNumber* *Defined in [src/CellContentParser.ts:29](https://github.com/handsontable/hyperformula/blob/a18429c/src/CellContentParser.ts#L29)* --- ## String URL: https://hyperformula.handsontable.com/docs/api/classes/cellcontent.string # String ## Constructors ### constructor \+ **new String**(`value`: string): *[String](https://hyperformula.handsontable.com/docs/api/classes/cellcontent.string.md)* *Defined in [src/CellContentParser.ts:34](https://github.com/handsontable/hyperformula/blob/a18429c/src/CellContentParser.ts#L34)* **Parameters:** Name | Type | ------ | ------ | `value` | string | **Returns:** *[String](https://hyperformula.handsontable.com/docs/api/classes/cellcontent.string.md)* ## Properties ### value • **value**: *string* *Defined in [src/CellContentParser.ts:35](https://github.com/handsontable/hyperformula/blob/a18429c/src/CellContentParser.ts#L35)* --- ## CellError URL: https://hyperformula.handsontable.com/docs/api/classes/cellerror # CellError ## Constructors ### constructor \+ **new CellError**(`type`: [ErrorType](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-errortype), `message?`: undefined | string, `root?`: FormulaVertex): *[CellError](https://hyperformula.handsontable.com/docs/api/classes/cellerror.md)* *Defined in [src/Cell.ts:149](https://github.com/handsontable/hyperformula/blob/a18429c/src/Cell.ts#L149)* **Parameters:** Name | Type | ------ | ------ | `type` | [ErrorType](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-errortype) | `message?` | undefined | string | `root?` | FormulaVertex | **Returns:** *[CellError](https://hyperformula.handsontable.com/docs/api/classes/cellerror.md)* ## Properties ### message • **message**? : *undefined | string* *Defined in [src/Cell.ts:152](https://github.com/handsontable/hyperformula/blob/a18429c/src/Cell.ts#L152)* ___ ### root • **root**? : *FormulaVertex* *Defined in [src/Cell.ts:153](https://github.com/handsontable/hyperformula/blob/a18429c/src/Cell.ts#L153)* ___ ### type • **type**: *[ErrorType](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-errortype)* *Defined in [src/Cell.ts:151](https://github.com/handsontable/hyperformula/blob/a18429c/src/Cell.ts#L151)* ## Methods ### attachRootVertex ▸ **attachRootVertex**(`vertex`: FormulaVertex): *[CellError](https://hyperformula.handsontable.com/docs/api/classes/cellerror.md)* *Defined in [src/Cell.ts:165](https://github.com/handsontable/hyperformula/blob/a18429c/src/Cell.ts#L165)* **Parameters:** Name | Type | ------ | ------ | `vertex` | FormulaVertex | **Returns:** *[CellError](https://hyperformula.handsontable.com/docs/api/classes/cellerror.md)* ___ ### parsingError ▸ **parsingError**(`detailedMessage?`: undefined | string): *[CellError](https://hyperformula.handsontable.com/docs/api/classes/cellerror.md)* *Defined in [src/Cell.ts:161](https://github.com/handsontable/hyperformula/blob/a18429c/src/Cell.ts#L161)* Returns a CellError with a given message. **Parameters:** Name | Type | Description | ------ | ------ | ------ | `detailedMessage?` | undefined | string | message to be displayed | **Returns:** *[CellError](https://hyperformula.handsontable.com/docs/api/classes/cellerror.md)* --- ## CellContentParser URL: https://hyperformula.handsontable.com/docs/api/classes/cellcontentparser # CellContentParser ## Constructors ### constructor \+ **new CellContentParser**(`config`: [Config](https://hyperformula.handsontable.com/docs/api/classes/config.md), `dateHelper`: [DateTimeHelper](https://hyperformula.handsontable.com/docs/api/classes/datetimehelper.md), `numberLiteralsHelper`: [NumberLiteralHelper](https://hyperformula.handsontable.com/docs/api/classes/numberliteralhelper.md)): *[CellContentParser](https://hyperformula.handsontable.com/docs/api/classes/cellcontentparser.md)* *Defined in [src/CellContentParser.ts:92](https://github.com/handsontable/hyperformula/blob/a18429c/src/CellContentParser.ts#L92)* **Parameters:** Name | Type | ------ | ------ | `config` | [Config](https://hyperformula.handsontable.com/docs/api/classes/config.md) | `dateHelper` | [DateTimeHelper](https://hyperformula.handsontable.com/docs/api/classes/datetimehelper.md) | `numberLiteralsHelper` | [NumberLiteralHelper](https://hyperformula.handsontable.com/docs/api/classes/numberliteralhelper.md) | **Returns:** *[CellContentParser](https://hyperformula.handsontable.com/docs/api/classes/cellcontentparser.md)* ## Methods ### parse ▸ **parse**(`content`: [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent)): *[Type](https://hyperformula.handsontable.com/docs/api/modules/cellcontent.md#type)* *Defined in [src/CellContentParser.ts:99](https://github.com/handsontable/hyperformula/blob/a18429c/src/CellContentParser.ts#L99)* **Parameters:** Name | Type | ------ | ------ | `content` | [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent) | **Returns:** *[Type](https://hyperformula.handsontable.com/docs/api/modules/cellcontent.md#type)* --- ## ClearSheetUndoEntry URL: https://hyperformula.handsontable.com/docs/api/classes/clearsheetundoentry # ClearSheetUndoEntry ## Constructors ### constructor \+ **new ClearSheetUndoEntry**(`sheetId`: number, `oldSheetContent`: [ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell)[][]): *[ClearSheetUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/clearsheetundoentry.md)* *Defined in [src/UndoRedo.ts:329](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L329)* **Parameters:** Name | Type | ------ | ------ | `sheetId` | number | `oldSheetContent` | [ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell)[][] | **Returns:** *[ClearSheetUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/clearsheetundoentry.md)* ## Properties ### oldSheetContent • **oldSheetContent**: *[ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell)[][]* *Defined in [src/UndoRedo.ts:332](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L332)* ___ ### sheetId • **sheetId**: *number* *Defined in [src/UndoRedo.ts:331](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L331)* ## Methods ### doRedo ▸ **doRedo**(`undoRedo`: [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md)): *void* *Defined in [src/UndoRedo.ts:341](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L341)* **Parameters:** Name | Type | ------ | ------ | `undoRedo` | [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md) | **Returns:** *void* ___ ### doUndo ▸ **doUndo**(`undoRedo`: [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md)): *void* *Defined in [src/UndoRedo.ts:337](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L337)* **Parameters:** Name | Type | ------ | ------ | `undoRedo` | [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md) | **Returns:** *void* ___ ### getReferencedOldDataVersions ▸ **getReferencedOldDataVersions**(): *number[]* *Defined in [src/UndoRedo.ts:42](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L42)* Returns LazilyTransformingAstService version keys referenced by this entry's oldData. Default implementation returns empty — override in entries that store oldData. **Returns:** *number[]* --- ## ChangeNamedExpressionUndoEntry URL: https://hyperformula.handsontable.com/docs/api/classes/changenamedexpressionundoentry # ChangeNamedExpressionUndoEntry ## Constructors ### constructor \+ **new ChangeNamedExpressionUndoEntry**(`namedExpression`: [InternalNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/internalnamedexpression.md), `newContent`: [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent), `oldContent`: [ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell), `scope?`: undefined | number, `options?`: [NamedExpressionOptions](https://hyperformula.handsontable.com/docs/api/globals.md#namedexpressionoptions)): *[ChangeNamedExpressionUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/changenamedexpressionundoentry.md)* *Defined in [src/UndoRedo.ts:422](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L422)* **Parameters:** Name | Type | ------ | ------ | `namedExpression` | [InternalNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/internalnamedexpression.md) | `newContent` | [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent) | `oldContent` | [ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell) | `scope?` | undefined | number | `options?` | [NamedExpressionOptions](https://hyperformula.handsontable.com/docs/api/globals.md#namedexpressionoptions) | **Returns:** *[ChangeNamedExpressionUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/changenamedexpressionundoentry.md)* ## Properties ### namedExpression • **namedExpression**: *[InternalNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/internalnamedexpression.md)* *Defined in [src/UndoRedo.ts:424](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L424)* ___ ### newContent • **newContent**: *[RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent)* *Defined in [src/UndoRedo.ts:425](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L425)* ___ ### oldContent • **oldContent**: *[ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell)* *Defined in [src/UndoRedo.ts:426](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L426)* ___ ### options • **options**? : *[NamedExpressionOptions](https://hyperformula.handsontable.com/docs/api/globals.md#namedexpressionoptions)* *Defined in [src/UndoRedo.ts:428](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L428)* ___ ### scope • **scope**? : *undefined | number* *Defined in [src/UndoRedo.ts:427](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L427)* ## Methods ### doRedo ▸ **doRedo**(`undoRedo`: [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md)): *void* *Defined in [src/UndoRedo.ts:437](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L437)* **Parameters:** Name | Type | ------ | ------ | `undoRedo` | [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md) | **Returns:** *void* ___ ### doUndo ▸ **doUndo**(`undoRedo`: [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md)): *void* *Defined in [src/UndoRedo.ts:433](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L433)* **Parameters:** Name | Type | ------ | ------ | `undoRedo` | [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md) | **Returns:** *void* ___ ### getReferencedOldDataVersions ▸ **getReferencedOldDataVersions**(): *number[]* *Defined in [src/UndoRedo.ts:42](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L42)* Returns LazilyTransformingAstService version keys referenced by this entry's oldData. Default implementation returns empty — override in entries that store oldData. **Returns:** *number[]* --- ## Clipboard URL: https://hyperformula.handsontable.com/docs/api/classes/clipboard # Clipboard ## Constructors ### constructor \+ **new Clipboard**(`sourceLeftCorner`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), `width`: number, `height`: number, `type`: [ClipboardOperationType](https://hyperformula.handsontable.com/docs/api/enums/clipboardoperationtype.md), `content?`: [ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell)[][]): *[Clipboard](https://hyperformula.handsontable.com/docs/api/classes/clipboard.md)* *Defined in [src/ClipboardOperations.ts:51](https://github.com/handsontable/hyperformula/blob/a18429c/src/ClipboardOperations.ts#L51)* **Parameters:** Name | Type | ------ | ------ | `sourceLeftCorner` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | `width` | number | `height` | number | `type` | [ClipboardOperationType](https://hyperformula.handsontable.com/docs/api/enums/clipboardoperationtype.md) | `content?` | [ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell)[][] | **Returns:** *[Clipboard](https://hyperformula.handsontable.com/docs/api/classes/clipboard.md)* ## Properties ### content • **content**? : *[ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell)[][]* *Defined in [src/ClipboardOperations.ts:57](https://github.com/handsontable/hyperformula/blob/a18429c/src/ClipboardOperations.ts#L57)* ___ ### height • **height**: *number* *Defined in [src/ClipboardOperations.ts:55](https://github.com/handsontable/hyperformula/blob/a18429c/src/ClipboardOperations.ts#L55)* ___ ### sourceLeftCorner • **sourceLeftCorner**: *[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)* *Defined in [src/ClipboardOperations.ts:53](https://github.com/handsontable/hyperformula/blob/a18429c/src/ClipboardOperations.ts#L53)* ___ ### type • **type**: *[ClipboardOperationType](https://hyperformula.handsontable.com/docs/api/enums/clipboardoperationtype.md)* *Defined in [src/ClipboardOperations.ts:56](https://github.com/handsontable/hyperformula/blob/a18429c/src/ClipboardOperations.ts#L56)* ___ ### width • **width**: *number* *Defined in [src/ClipboardOperations.ts:54](https://github.com/handsontable/hyperformula/blob/a18429c/src/ClipboardOperations.ts#L54)* ## Methods ### getContent ▸ **getContent**(`leftCorner`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *IterableIterator‹[[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), [ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell)]›* *Defined in [src/ClipboardOperations.ts:61](https://github.com/handsontable/hyperformula/blob/a18429c/src/ClipboardOperations.ts#L61)* **Parameters:** Name | Type | ------ | ------ | `leftCorner` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | **Returns:** *IterableIterator‹[[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), [ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell)]›* --- ## ClipboardOperations URL: https://hyperformula.handsontable.com/docs/api/classes/clipboardoperations # ClipboardOperations ## Constructors ### constructor \+ **new ClipboardOperations**(`config`: [Config](https://hyperformula.handsontable.com/docs/api/classes/config.md), `dependencyGraph`: DependencyGraph, `operations`: [Operations](https://hyperformula.handsontable.com/docs/api/classes/operations.md)): *[ClipboardOperations](https://hyperformula.handsontable.com/docs/api/classes/clipboardoperations.md)* *Defined in [src/ClipboardOperations.ts:77](https://github.com/handsontable/hyperformula/blob/a18429c/src/ClipboardOperations.ts#L77)* **Parameters:** Name | Type | ------ | ------ | `config` | [Config](https://hyperformula.handsontable.com/docs/api/classes/config.md) | `dependencyGraph` | DependencyGraph | `operations` | [Operations](https://hyperformula.handsontable.com/docs/api/classes/operations.md) | **Returns:** *[ClipboardOperations](https://hyperformula.handsontable.com/docs/api/classes/clipboardoperations.md)* ## Properties ### clipboard • **clipboard**? : *[Clipboard](https://hyperformula.handsontable.com/docs/api/classes/clipboard.md)* *Defined in [src/ClipboardOperations.ts:75](https://github.com/handsontable/hyperformula/blob/a18429c/src/ClipboardOperations.ts#L75)* ## Methods ### abortCut ▸ **abortCut**(): *void* *Defined in [src/ClipboardOperations.ts:107](https://github.com/handsontable/hyperformula/blob/a18429c/src/ClipboardOperations.ts#L107)* **Returns:** *void* ___ ### clear ▸ **clear**(): *void* *Defined in [src/ClipboardOperations.ts:113](https://github.com/handsontable/hyperformula/blob/a18429c/src/ClipboardOperations.ts#L113)* **Returns:** *void* ___ ### copy ▸ **copy**(`leftCorner`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), `width`: number, `height`: number): *void* *Defined in [src/ClipboardOperations.ts:92](https://github.com/handsontable/hyperformula/blob/a18429c/src/ClipboardOperations.ts#L92)* **Parameters:** Name | Type | ------ | ------ | `leftCorner` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | `width` | number | `height` | number | **Returns:** *void* ___ ### cut ▸ **cut**(`leftCorner`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), `width`: number, `height`: number): *void* *Defined in [src/ClipboardOperations.ts:88](https://github.com/handsontable/hyperformula/blob/a18429c/src/ClipboardOperations.ts#L88)* **Parameters:** Name | Type | ------ | ------ | `leftCorner` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | `width` | number | `height` | number | **Returns:** *void* ___ ### ensureItIsPossibleToCopyPaste ▸ **ensureItIsPossibleToCopyPaste**(`destinationLeftCorner`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *void* *Defined in [src/ClipboardOperations.ts:117](https://github.com/handsontable/hyperformula/blob/a18429c/src/ClipboardOperations.ts#L117)* **Parameters:** Name | Type | ------ | ------ | `destinationLeftCorner` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | **Returns:** *void* ___ ### isCopyClipboard ▸ **isCopyClipboard**(): *boolean* *Defined in [src/ClipboardOperations.ts:141](https://github.com/handsontable/hyperformula/blob/a18429c/src/ClipboardOperations.ts#L141)* **Returns:** *boolean* ___ ### isCutClipboard ▸ **isCutClipboard**(): *boolean* *Defined in [src/ClipboardOperations.ts:137](https://github.com/handsontable/hyperformula/blob/a18429c/src/ClipboardOperations.ts#L137)* **Returns:** *boolean* --- ## BaseUndoEntry URL: https://hyperformula.handsontable.com/docs/api/classes/baseundoentry # BaseUndoEntry ## Methods ### doRedo ▸ **doRedo**(`undoRedo`: [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md)): *void* *Defined in [src/UndoRedo.ts:36](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L36)* **Parameters:** Name | Type | ------ | ------ | `undoRedo` | [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md) | **Returns:** *void* ___ ### doUndo ▸ **doUndo**(`undoRedo`: [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md)): *void* *Defined in [src/UndoRedo.ts:34](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L34)* **Parameters:** Name | Type | ------ | ------ | `undoRedo` | [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md) | **Returns:** *void* ___ ### getReferencedOldDataVersions ▸ **getReferencedOldDataVersions**(): *number[]* *Defined in [src/UndoRedo.ts:42](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L42)* Returns LazilyTransformingAstService version keys referenced by this entry's oldData. Default implementation returns empty — override in entries that store oldData. **Returns:** *number[]* --- ## ColumnIndex URL: https://hyperformula.handsontable.com/docs/api/classes/columnindex # ColumnIndex ## Constructors ### constructor \+ **new ColumnIndex**(`dependencyGraph`: DependencyGraph, `config`: [Config](https://hyperformula.handsontable.com/docs/api/classes/config.md), `stats`: [Statistics](https://hyperformula.handsontable.com/docs/api/classes/statistics.md)): *[ColumnIndex](https://hyperformula.handsontable.com/docs/api/classes/columnindex.md)* *Defined in [src/Lookup/ColumnIndex.ts:43](https://github.com/handsontable/hyperformula/blob/a18429c/src/Lookup/ColumnIndex.ts#L43)* **Parameters:** Name | Type | ------ | ------ | `dependencyGraph` | DependencyGraph | `config` | [Config](https://hyperformula.handsontable.com/docs/api/classes/config.md) | `stats` | [Statistics](https://hyperformula.handsontable.com/docs/api/classes/statistics.md) | **Returns:** *[ColumnIndex](https://hyperformula.handsontable.com/docs/api/classes/columnindex.md)* ## Methods ### add ▸ **add**(`value`: RawInterpreterValue, `address`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *void* *Defined in [src/Lookup/ColumnIndex.ts:54](https://github.com/handsontable/hyperformula/blob/a18429c/src/Lookup/ColumnIndex.ts#L54)* **Parameters:** Name | Type | ------ | ------ | `value` | RawInterpreterValue | `address` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | **Returns:** *void* ___ ### addColumns ▸ **addColumns**(`columnsSpan`: [ColumnsSpan](https://hyperformula.handsontable.com/docs/api/classes/columnsspan.md)): *void* *Defined in [src/Lookup/ColumnIndex.ts:165](https://github.com/handsontable/hyperformula/blob/a18429c/src/Lookup/ColumnIndex.ts#L165)* **Parameters:** Name | Type | ------ | ------ | `columnsSpan` | [ColumnsSpan](https://hyperformula.handsontable.com/docs/api/classes/columnsspan.md) | **Returns:** *void* ___ ### advancedFind ▸ **advancedFind**(`keyMatcher`: function, `range`: [SimpleRangeValue](https://hyperformula.handsontable.com/docs/api/classes/simplerangevalue.md), `options`: [AdvancedFindOptions](https://hyperformula.handsontable.com/docs/api/interfaces/advancedfindoptions.md)): *number* *Defined in [src/Lookup/ColumnIndex.ts:161](https://github.com/handsontable/hyperformula/blob/a18429c/src/Lookup/ColumnIndex.ts#L161)* **Parameters:** ▪ **keyMatcher**: *function* ▸ (`arg`: RawInterpreterValue): *boolean* **Parameters:** Name | Type | ------ | ------ | `arg` | RawInterpreterValue | ▪ **range**: *[SimpleRangeValue](https://hyperformula.handsontable.com/docs/api/classes/simplerangevalue.md)* ▪`Default value` **options**: *[AdvancedFindOptions](https://hyperformula.handsontable.com/docs/api/interfaces/advancedfindoptions.md)*= { returnOccurrence: 'first' } **Returns:** *number* ___ ### applyChanges ▸ **applyChanges**(`contentChanges`: [CellValueChange](https://hyperformula.handsontable.com/docs/api/interfaces/cellvaluechange.md)[]): *void* *Defined in [src/Lookup/ColumnIndex.ts:88](https://github.com/handsontable/hyperformula/blob/a18429c/src/Lookup/ColumnIndex.ts#L88)* **Parameters:** Name | Type | ------ | ------ | `contentChanges` | [CellValueChange](https://hyperformula.handsontable.com/docs/api/interfaces/cellvaluechange.md)[] | **Returns:** *void* ___ ### change ▸ **change**(`oldValue`: RawInterpreterValue | undefined, `newValue`: RawInterpreterValue, `address`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *void* *Defined in [src/Lookup/ColumnIndex.ts:80](https://github.com/handsontable/hyperformula/blob/a18429c/src/Lookup/ColumnIndex.ts#L80)* **Parameters:** Name | Type | ------ | ------ | `oldValue` | RawInterpreterValue | undefined | `newValue` | RawInterpreterValue | `address` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | **Returns:** *void* ___ ### ensureRecentData ▸ **ensureRecentData**(`sheet`: number, `col`: number, `value`: RawInterpreterValue): *void* *Defined in [src/Lookup/ColumnIndex.ts:233](https://github.com/handsontable/hyperformula/blob/a18429c/src/Lookup/ColumnIndex.ts#L233)* **Parameters:** Name | Type | ------ | ------ | `sheet` | number | `col` | number | `value` | RawInterpreterValue | **Returns:** *void* ___ ### find ▸ **find**(`searchKey`: RawNoErrorScalarValue, `rangeValue`: [SimpleRangeValue](https://hyperformula.handsontable.com/docs/api/classes/simplerangevalue.md), `__namedParameters`: object): *number* *Defined in [src/Lookup/ColumnIndex.ts:110](https://github.com/handsontable/hyperformula/blob/a18429c/src/Lookup/ColumnIndex.ts#L110)* **Parameters:** ▪ **searchKey**: *RawNoErrorScalarValue* ▪ **rangeValue**: *[SimpleRangeValue](https://hyperformula.handsontable.com/docs/api/classes/simplerangevalue.md)* ▪ **__namedParameters**: *object* Name | Type | ------ | ------ | `ifNoMatch` | "returnLowerBound" | "returnUpperBound" | "returnNotFound" | `ordering` | "asc" | "desc" | "none" | `returnOccurrence` | undefined | "first" | "last" | **Returns:** *number* ___ ### forceApplyPostponedTransformations ▸ **forceApplyPostponedTransformations**(): *void* *Defined in [src/Lookup/ColumnIndex.ts:192](https://github.com/handsontable/hyperformula/blob/a18429c/src/Lookup/ColumnIndex.ts#L192)* Forces all ValueIndex entries to apply any pending lazy transformations, bringing every entry up to the current LazilyTransformingAstService version. Must be called before compacting LazilyTransformingAstService. **Returns:** *void* ___ ### getColumnMap ▸ **getColumnMap**(`sheet`: number, `col`: number): *[ColumnMap](https://hyperformula.handsontable.com/docs/api/globals.md#columnmap)* *Defined in [src/Lookup/ColumnIndex.ts:205](https://github.com/handsontable/hyperformula/blob/a18429c/src/Lookup/ColumnIndex.ts#L205)* **Parameters:** Name | Type | ------ | ------ | `sheet` | number | `col` | number | **Returns:** *[ColumnMap](https://hyperformula.handsontable.com/docs/api/globals.md#columnmap)* ___ ### getValueIndex ▸ **getValueIndex**(`sheet`: number, `col`: number, `value`: RawInterpreterValue): *[ValueIndex](https://hyperformula.handsontable.com/docs/api/interfaces/valueindex.md)* *Defined in [src/Lookup/ColumnIndex.ts:220](https://github.com/handsontable/hyperformula/blob/a18429c/src/Lookup/ColumnIndex.ts#L220)* **Parameters:** Name | Type | ------ | ------ | `sheet` | number | `col` | number | `value` | RawInterpreterValue | **Returns:** *[ValueIndex](https://hyperformula.handsontable.com/docs/api/interfaces/valueindex.md)* ___ ### moveValues ▸ **moveValues**(`sourceRange`: IterableIterator‹[RawScalarValue, [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)]›, `toRight`: number, `toBottom`: number, `toSheet`: number): *void* *Defined in [src/Lookup/ColumnIndex.ts:96](https://github.com/handsontable/hyperformula/blob/a18429c/src/Lookup/ColumnIndex.ts#L96)* **Parameters:** Name | Type | ------ | ------ | `sourceRange` | IterableIterator‹[RawScalarValue, [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)]› | `toRight` | number | `toBottom` | number | `toSheet` | number | **Returns:** *void* ___ ### remove ▸ **remove**(`value`: RawInterpreterValue | undefined, `address`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *void* *Defined in [src/Lookup/ColumnIndex.ts:66](https://github.com/handsontable/hyperformula/blob/a18429c/src/Lookup/ColumnIndex.ts#L66)* **Parameters:** Name | Type | ------ | ------ | `value` | RawInterpreterValue | undefined | `address` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | **Returns:** *void* ___ ### removeColumns ▸ **removeColumns**(`columnsSpan`: [ColumnsSpan](https://hyperformula.handsontable.com/docs/api/classes/columnsspan.md)): *void* *Defined in [src/Lookup/ColumnIndex.ts:174](https://github.com/handsontable/hyperformula/blob/a18429c/src/Lookup/ColumnIndex.ts#L174)* **Parameters:** Name | Type | ------ | ------ | `columnsSpan` | [ColumnsSpan](https://hyperformula.handsontable.com/docs/api/classes/columnsspan.md) | **Returns:** *void* ___ ### removeSheet ▸ **removeSheet**(`sheetId`: number): *void* *Defined in [src/Lookup/ColumnIndex.ts:183](https://github.com/handsontable/hyperformula/blob/a18429c/src/Lookup/ColumnIndex.ts#L183)* **Parameters:** Name | Type | ------ | ------ | `sheetId` | number | **Returns:** *void* ___ ### removeValues ▸ **removeValues**(`range`: IterableIterator‹[RawScalarValue, [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)]›): *void* *Defined in [src/Lookup/ColumnIndex.ts:104](https://github.com/handsontable/hyperformula/blob/a18429c/src/Lookup/ColumnIndex.ts#L104)* **Parameters:** Name | Type | ------ | ------ | `range` | IterableIterator‹[RawScalarValue, [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)]› | **Returns:** *void* --- ## ColumnsSpan URL: https://hyperformula.handsontable.com/docs/api/classes/columnsspan # ColumnsSpan ## Constructors ### constructor \+ **new ColumnsSpan**(`sheet`: number, `columnStart`: number, `columnEnd`: number): *[ColumnsSpan](https://hyperformula.handsontable.com/docs/api/classes/columnsspan.md)* *Defined in [src/Span.ts:72](https://github.com/handsontable/hyperformula/blob/a18429c/src/Span.ts#L72)* **Parameters:** Name | Type | ------ | ------ | `sheet` | number | `columnStart` | number | `columnEnd` | number | **Returns:** *[ColumnsSpan](https://hyperformula.handsontable.com/docs/api/classes/columnsspan.md)* ## Properties ### columnEnd • **columnEnd**: *number* *Defined in [src/Span.ts:76](https://github.com/handsontable/hyperformula/blob/a18429c/src/Span.ts#L76)* ___ ### columnStart • **columnStart**: *number* *Defined in [src/Span.ts:75](https://github.com/handsontable/hyperformula/blob/a18429c/src/Span.ts#L75)* ___ ### sheet • **sheet**: *number* *Defined in [src/Span.ts:74](https://github.com/handsontable/hyperformula/blob/a18429c/src/Span.ts#L74)* ## Accessors ### end • **get end**(): *number* *Defined in [src/Span.ts:94](https://github.com/handsontable/hyperformula/blob/a18429c/src/Span.ts#L94)* **Returns:** *number* ___ ### numberOfColumns • **get numberOfColumns**(): *number* *Defined in [src/Span.ts:86](https://github.com/handsontable/hyperformula/blob/a18429c/src/Span.ts#L86)* **Returns:** *number* ___ ### start • **get start**(): *number* *Defined in [src/Span.ts:90](https://github.com/handsontable/hyperformula/blob/a18429c/src/Span.ts#L90)* **Returns:** *number* ## Methods ### columns ▸ **columns**(): *IterableIterator‹number›* *Defined in [src/Span.ts:106](https://github.com/handsontable/hyperformula/blob/a18429c/src/Span.ts#L106)* **Returns:** *IterableIterator‹number›* ___ ### firstColumn ▸ **firstColumn**(): *[ColumnsSpan](https://hyperformula.handsontable.com/docs/api/classes/columnsspan.md)* *Defined in [src/Span.ts:124](https://github.com/handsontable/hyperformula/blob/a18429c/src/Span.ts#L124)* **Returns:** *[ColumnsSpan](https://hyperformula.handsontable.com/docs/api/classes/columnsspan.md)* ___ ### intersect ▸ **intersect**(`otherSpan`: [ColumnsSpan](https://hyperformula.handsontable.com/docs/api/classes/columnsspan.md)): *[ColumnsSpan](https://hyperformula.handsontable.com/docs/api/classes/columnsspan.md) | null* *Defined in [src/Span.ts:112](https://github.com/handsontable/hyperformula/blob/a18429c/src/Span.ts#L112)* **Parameters:** Name | Type | ------ | ------ | `otherSpan` | [ColumnsSpan](https://hyperformula.handsontable.com/docs/api/classes/columnsspan.md) | **Returns:** *[ColumnsSpan](https://hyperformula.handsontable.com/docs/api/classes/columnsspan.md) | null* ___ ### fromColumnStartAndEnd ▸ **fromColumnStartAndEnd**(`sheet`: number, `columnStart`: number, `columnEnd`: number): *[ColumnsSpan](https://hyperformula.handsontable.com/docs/api/classes/columnsspan.md)‹›* *Defined in [src/Span.ts:102](https://github.com/handsontable/hyperformula/blob/a18429c/src/Span.ts#L102)* **Parameters:** Name | Type | ------ | ------ | `sheet` | number | `columnStart` | number | `columnEnd` | number | **Returns:** *[ColumnsSpan](https://hyperformula.handsontable.com/docs/api/classes/columnsspan.md)‹›* ___ ### fromNumberOfColumns ▸ **fromNumberOfColumns**(`sheet`: number, `columnStart`: number, `numberOfColumns`: number): *[ColumnsSpan](https://hyperformula.handsontable.com/docs/api/classes/columnsspan.md)‹›* *Defined in [src/Span.ts:98](https://github.com/handsontable/hyperformula/blob/a18429c/src/Span.ts#L98)* **Parameters:** Name | Type | ------ | ------ | `sheet` | number | `columnStart` | number | `numberOfColumns` | number | **Returns:** *[ColumnsSpan](https://hyperformula.handsontable.com/docs/api/classes/columnsspan.md)‹›* --- ## Config URL: https://hyperformula.handsontable.com/docs/api/classes/config # Config ## Constructors ### constructor \+ **new Config**(`options`: Partial‹[ConfigParams](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md)›, `showDeprecatedWarns`: boolean): *[Config](https://hyperformula.handsontable.com/docs/api/classes/config.md)* *Defined in [src/Config.ts:168](https://github.com/handsontable/hyperformula/blob/a18429c/src/Config.ts#L168)* **Parameters:** Name | Type | Default | ------ | ------ | ------ | `options` | Partial‹[ConfigParams](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md)› | {} | `showDeprecatedWarns` | boolean | true | **Returns:** *[Config](https://hyperformula.handsontable.com/docs/api/classes/config.md)* ## Properties ### accentSensitive • **accentSensitive**: *boolean* *Defined in [src/Config.ts:81](https://github.com/handsontable/hyperformula/blob/a18429c/src/Config.ts#L81)* When set to `true`, makes string comparison accent-sensitive. Applies only to comparison operators. For more information, see the [Types of operators guide](https://hyperformula.handsontable.com/docs/guide/types-of-operators.md#comparing-strings). **`default`** false ___ ### arrayColumnSeparator • **arrayColumnSeparator**: *"," | ";"* *Defined in [src/Config.ts:91](https://github.com/handsontable/hyperformula/blob/a18429c/src/Config.ts#L91)* Sets a column separator symbol for array notation. For more information, see the [Arrays guide](https://hyperformula.handsontable.com/docs/guide/arrays.md). **`default`** ',' ___ ### arrayRowSeparator • **arrayRowSeparator**: *";" | "|"* *Defined in [src/Config.ts:93](https://github.com/handsontable/hyperformula/blob/a18429c/src/Config.ts#L93)* Sets a row separator symbol for array notation. For more information, see the [Arrays guide](https://hyperformula.handsontable.com/docs/guide/arrays.md). **`default`** ';' ___ ### caseFirst • **caseFirst**: *"upper" | "lower" | "false"* *Defined in [src/Config.ts:83](https://github.com/handsontable/hyperformula/blob/a18429c/src/Config.ts#L83)* When set to `upper`, upper case sorts first. When set to `lower`, lower case sorts first. When set to `false`, uses the locale's default. For more information, see the [Types of operators guide](https://hyperformula.handsontable.com/docs/guide/types-of-operators.md#comparing-strings). **`default`** 'lower' ___ ### caseSensitive • **caseSensitive**: *boolean* *Defined in [src/Config.ts:77](https://github.com/handsontable/hyperformula/blob/a18429c/src/Config.ts#L77)* When set to `true`, makes string comparison case-sensitive. Applies to comparison operators only. For more information, see the [Types of operators guide](https://hyperformula.handsontable.com/docs/guide/types-of-operators.md#comparing-strings). **`default`** false ___ ### chooseAddressMappingPolicy • **chooseAddressMappingPolicy**: *ChooseAddressMapping* *Defined in [src/Config.ts:79](https://github.com/handsontable/hyperformula/blob/a18429c/src/Config.ts#L79)* Sets the address mapping policy to be used. Built-in implementations: - `DenseSparseChooseBasedOnThreshold`: sets the address mapping policy separately for each sheet, based on fill ratio. - `AlwaysDense`: uses `DenseStrategy` for all sheets. - `AlwaysSparse`: uses `SparseStrategy` for all sheets. For more information, see the [Performance guide](https://hyperformula.handsontable.com/docs/guide/performance.md). **`default`** AlwaysDense ___ ### context • **context**: *unknown* *Defined in [src/Config.ts:144](https://github.com/handsontable/hyperformula/blob/a18429c/src/Config.ts#L144)* A generic parameter that can be used to pass data to custom functions. For more information, see the [Custom functions guide](https://hyperformula.handsontable.com/docs/guide/custom-functions.md). **`default`** undefined ___ ### currencySymbol • **currencySymbol**: *string[]* *Defined in [src/Config.ts:138](https://github.com/handsontable/hyperformula/blob/a18429c/src/Config.ts#L138)* Sets symbols that denote currency numbers. For more information, see the [Internationalization features guide](https://hyperformula.handsontable.com/docs/guide/i18n-features.md). **`default`** ['$'] ___ ### dateFormats • **dateFormats**: *string[]* *Defined in [src/Config.ts:85](https://github.com/handsontable/hyperformula/blob/a18429c/src/Config.ts#L85)* Sets the date formats accepted by the date-parsing function. A format must be specified as a string consisting of tokens and separators. Supported tokens: - `DD` (day of month) - `MM` (month as a number) - `YYYY` (year as a 4-digit number) - `YY` (year as a 2-digit number) Supported separators: - `/` (slash) - `-` (dash) - `.` (dot) - ` ` (empty space) Regardless of the separator specified in the format string, all of the above are accepted by the date-parsing function. For more information, see the [Date and time handling guide](https://hyperformula.handsontable.com/docs/guide/date-and-time-handling.md). **`default`** ['DD/MM/YYYY', 'DD/MM/YY'] ___ ### decimalSeparator • **decimalSeparator**: *"." | ","* *Defined in [src/Config.ts:95](https://github.com/handsontable/hyperformula/blob/a18429c/src/Config.ts#L95)* Sets a decimal separator used for parsing numerical literals. Can be one of the following: - `.` (period) - `,` (comma) Must be different from [thousandSeparator](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#thousandseparator) and [functionArgSeparator](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#functionargseparator). For more information, see the [Internationalization features guide](https://hyperformula.handsontable.com/docs/guide/i18n-features.md). **`default`** '.' ___ ### evaluateNullToZero • **evaluateNullToZero**: *boolean* *Defined in [src/Config.ts:114](https://github.com/handsontable/hyperformula/blob/a18429c/src/Config.ts#L114)* When set to `true`, formulas evaluating to `null` evaluate to `0` instead. **`default`** false ___ ### functionArgSeparator • **functionArgSeparator**: *string* *Defined in [src/Config.ts:89](https://github.com/handsontable/hyperformula/blob/a18429c/src/Config.ts#L89)* Sets a separator character that separates procedure arguments in formulas. Must be different from [decimalSeparator](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#decimalseparator) and [thousandSeparator](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#thousandseparator). For more information, see the [Internationalization features guide](https://hyperformula.handsontable.com/docs/guide/i18n-features.md). **`default`** ',' ___ ### functionPlugins • **functionPlugins**: *FunctionPluginDefinition[]* *Defined in [src/Config.ts:106](https://github.com/handsontable/hyperformula/blob/a18429c/src/Config.ts#L106)* Lists additional function plugins to be used by the formula interpreter. For more information, see the [Custom functions guide](https://hyperformula.handsontable.com/docs/guide/custom-functions.md). **`default`** [] ___ ### ignorePunctuation • **ignorePunctuation**: *boolean* *Defined in [src/Config.ts:110](https://github.com/handsontable/hyperformula/blob/a18429c/src/Config.ts#L110)* When set to `true`, string comparison ignores punctuation. For more information, see the [Types of operators guide](https://hyperformula.handsontable.com/docs/guide/types-of-operators.md#comparing-strings). **`default`** false ___ ### ignoreWhiteSpace • **ignoreWhiteSpace**: *"standard" | "any"* *Defined in [src/Config.ts:101](https://github.com/handsontable/hyperformula/blob/a18429c/src/Config.ts#L101)* Controls the set of whitespace characters that are allowed inside a formula. When set to `'standard'`, allows only SPACE (U+0020), CHARACTER TABULATION (U+0009), LINE FEED (U+000A), and CARRIAGE RETURN (U+000D) (compliant with OpenFormula Standard 1.3) When set to `'any'`, allows all whitespace characters that would be captured by the `\s` character class of the JavaScript regular expressions. **`default`** 'standard' ___ ### language • **language**: *string* *Defined in [src/Config.ts:99](https://github.com/handsontable/hyperformula/blob/a18429c/src/Config.ts#L99)* Sets a translation package for function and error names. For more information, see the [Localizing functions guide](https://hyperformula.handsontable.com/docs/guide/localizing-functions.md). **`default`** 'enGB' ___ ### leapYear1900 • **leapYear1900**: *boolean* *Defined in [src/Config.ts:108](https://github.com/handsontable/hyperformula/blob/a18429c/src/Config.ts#L108)* Sets year 1900 as a leap year. For compatibility with Lotus 1-2-3 and Microsoft Excel, set this option to `true`. For more information, see the [Date and time handling guide](https://hyperformula.handsontable.com/docs/guide/date-and-time-handling.md) and [nullDate](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#nulldate). **`default`** false ___ ### licenseKey • **licenseKey**: *string* *Defined in [src/Config.ts:103](https://github.com/handsontable/hyperformula/blob/a18429c/src/Config.ts#L103)* Sets your HyperFormula license key. To use HyperFormula on the GPLv3 license terms, set this option to `gpl-v3`. To use HyperFormula with your proprietary license, set this option to your valid license key string. For more information, go [here](https://hyperformula.handsontable.com/docs/guide/license-key.md). **`default`** undefined ___ ### localeLang • **localeLang**: *string* *Defined in [src/Config.ts:112](https://github.com/handsontable/hyperformula/blob/a18429c/src/Config.ts#L112)* Sets the locale for language-sensitive string comparison. Accepts **IETF BCP 47** language tags. For more information, see the [Internationalization features guide](https://hyperformula.handsontable.com/docs/guide/i18n-features.md). **`default`** 'en' ___ ### matchWholeCell • **matchWholeCell**: *boolean* *Defined in [src/Config.ts:168](https://github.com/handsontable/hyperformula/blob/a18429c/src/Config.ts#L168)* When set to `true`, function criteria require whole cells to match the pattern. When set to `false`, function criteria require just a sub-word to match the pattern. **`default`** true ___ ### maxColumns • **maxColumns**: *number* *Defined in [src/Config.ts:155](https://github.com/handsontable/hyperformula/blob/a18429c/src/Config.ts#L155)* Sets the maximum number of columns. **`default`** 18.278 (Columns A, B, ..., ZZZ) ___ ### maxPendingLazyTransformations • **maxPendingLazyTransformations**: *number* *Defined in [src/Config.ts:142](https://github.com/handsontable/hyperformula/blob/a18429c/src/Config.ts#L142)* Controls memory usage for long-running instances by limiting the number of pending lazy transformations before cleanup occurs. Structural operations (adding/removing rows/columns, moving cells) create transformations that are applied lazily to formulas. This setting determines how many can accumulate before they are flushed and memory is reclaimed. Lower values reduce peak memory usage but may slightly increase CPU overhead. Higher values reduce overhead but allow more memory accumulation. **`default`** 50 ___ ### maxRows • **maxRows**: *number* *Defined in [src/Config.ts:153](https://github.com/handsontable/hyperformula/blob/a18429c/src/Config.ts#L153)* Sets the maximum number of rows. **`default`** 40.000 ___ ### nullDate • **nullDate**: *[SimpleDate](https://hyperformula.handsontable.com/docs/api/interfaces/simpledate.md)* *Defined in [src/Config.ts:136](https://github.com/handsontable/hyperformula/blob/a18429c/src/Config.ts#L136)* Internally, each date is represented as a number of days that passed since `nullDate`. This option sets a specific date from which that number of days is counted. For more information, see the [Date and time handling guide](https://hyperformula.handsontable.com/docs/guide/date-and-time-handling.md). **`default`** {year: 1899, month: 12, day: 30} ___ ### nullYear • **nullYear**: *number* *Defined in [src/Config.ts:116](https://github.com/handsontable/hyperformula/blob/a18429c/src/Config.ts#L116)* Sets the interpretation of two-digit year values. Two-digit year values (`xx`) can either become `19xx` or `20xx`. If `xx` is less or equal to `nullYear`, two-digit year values become `20xx`. If `xx` is more than `nullYear`, two-digit year values become `19xx`. For more information, see the [Date and time handling guide](https://hyperformula.handsontable.com/docs/guide/date-and-time-handling.md). **`default`** 30 ___ ### parseDateTime • **parseDateTime**: *function* *Defined in [src/Config.ts:118](https://github.com/handsontable/hyperformula/blob/a18429c/src/Config.ts#L118)* Sets a function that parses strings representing date-time into actual date-time values. The function should return a [DateTime](https://hyperformula.handsontable.com/docs/api/globals.md#datetime) object or undefined. For more information, see the [Date and time handling guide](https://hyperformula.handsontable.com/docs/guide/date-and-time-handling.md). **`default`** defaultParseToDateTime #### Type declaration: ▸ (`dateTimeString`: string, `dateFormat?`: undefined | string, `timeFormat?`: undefined | string): *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹[DateTime](https://hyperformula.handsontable.com/docs/api/globals.md#datetime)›* **Parameters:** Name | Type | ------ | ------ | `dateTimeString` | string | `dateFormat?` | undefined | string | `timeFormat?` | undefined | string | ___ ### precisionEpsilon • **precisionEpsilon**: *number* *Defined in [src/Config.ts:126](https://github.com/handsontable/hyperformula/blob/a18429c/src/Config.ts#L126)* Sets how far two numerical values need to be from each other to be treated as non-equal. `a` and `b` are equal if all three of the following conditions are met: - Both `a` and `b` are of the same sign - `abs(a)` <= `(1+precisionEpsilon) * abs(b)` - `abs(b)` <= `(1+precisionEpsilon) * abs(a)` Additionally, this option controls the snap-to-zero behavior for additions and subtractions: - For `c=a+b`, if `abs(c)` <= `precisionEpsilon * abs(a)`, then `c` is set to `0` - For `c=a-b`, if `abs(c)` <= `precisionEpsilon * abs(a)`, then `c` is set to `0` **`default`** 1e-13 ___ ### precisionRounding • **precisionRounding**: *number* *Defined in [src/Config.ts:128](https://github.com/handsontable/hyperformula/blob/a18429c/src/Config.ts#L128)* Sets the precision level of calculations' output. Internally, all arithmetic operations are performed using JavaScript's built-in numbers. But when HyperFormula exports a cell's value, it rounds the output to the `precisionRounding` number of significant digits. Setting `precisionRounding` too low can cause large numbers' imprecision (for example, with `precisionRounding` set to `4`, 100005 becomes 100010). Setting precisionRounding too high will expose the floating-point calculation errors. For example, with `precisionRounding` set to `15`, `0.1 + 0.2` results in `0.3000000000000001`. **`default`** 10 ___ ### smartRounding • **smartRounding**: *boolean* *Defined in [src/Config.ts:130](https://github.com/handsontable/hyperformula/blob/a18429c/src/Config.ts#L130)* When set to `false`, no rounding happens, and numbers are equal if and only if they are of truly identical value. For more information, see [precisionEpsilon](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#precisionepsilon). **`default`** true ___ ### stringifyCurrency • **stringifyCurrency**: *function* *Defined in [src/Config.ts:124](https://github.com/handsontable/hyperformula/blob/a18429c/src/Config.ts#L124)* Sets a function that converts numeric values into currency-formatted strings. The function receives the raw value and the format string passed to `TEXT` and should return a string or `undefined`. The formatter calls this for every format string that reaches it, not only currency-shaped ones — return `undefined` for any format your callback does not handle and HyperFormula will fall through to the built-in number formatter. For more information, see the [Currency handling guide](https://hyperformula.handsontable.com/docs/guide/currency-handling.md). **`default`** defaultStringifyCurrency #### Type declaration: ▸ (`value`: number, `currencyFormat`: string): *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹string›* **Parameters:** Name | Type | ------ | ------ | `value` | number | `currencyFormat` | string | ___ ### stringifyDateTime • **stringifyDateTime**: *function* *Defined in [src/Config.ts:120](https://github.com/handsontable/hyperformula/blob/a18429c/src/Config.ts#L120)* Sets a function that converts date-time values into strings. The function should return a string or undefined. For more information, see the [Date and time handling guide](https://hyperformula.handsontable.com/docs/guide/date-and-time-handling.md). **`default`** defaultStringifyDateTime #### Type declaration: ▸ (`date`: [SimpleDateTime](https://hyperformula.handsontable.com/docs/api/globals.md#simpledatetime), `formatArg`: string): *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹string›* **Parameters:** Name | Type | ------ | ------ | `date` | [SimpleDateTime](https://hyperformula.handsontable.com/docs/api/globals.md#simpledatetime) | `formatArg` | string | ___ ### stringifyDuration • **stringifyDuration**: *function* *Defined in [src/Config.ts:122](https://github.com/handsontable/hyperformula/blob/a18429c/src/Config.ts#L122)* Sets a function that converts time duration values into strings. The function should return a string or undefined. For more information, see the [Date and time handling guide](https://hyperformula.handsontable.com/docs/guide/date-and-time-handling.md). **`default`** defaultStringifyDuration #### Type declaration: ▸ (`time`: [SimpleTime](https://hyperformula.handsontable.com/docs/api/interfaces/simpletime.md), `formatArg`: string): *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹string›* **Parameters:** Name | Type | ------ | ------ | `time` | [SimpleTime](https://hyperformula.handsontable.com/docs/api/interfaces/simpletime.md) | `formatArg` | string | ___ ### thousandSeparator • **thousandSeparator**: *"" | "," | " " | "."* *Defined in [src/Config.ts:97](https://github.com/handsontable/hyperformula/blob/a18429c/src/Config.ts#L97)* Sets the thousands' separator symbol for parsing numerical literals. Can be one of the following: - empty - `,` (comma) - ` ` (empty space) Must be different from [decimalSeparator](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#decimalseparator) and [functionArgSeparator](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#functionargseparator). For more information, see the [Internationalization features guide](https://hyperformula.handsontable.com/docs/guide/i18n-features.md). **`default`** '' ___ ### timeFormats • **timeFormats**: *string[]* *Defined in [src/Config.ts:87](https://github.com/handsontable/hyperformula/blob/a18429c/src/Config.ts#L87)* Sets the time formats accepted by the time-parsing function. A format must be specified as a string consisting of at least two tokens separated by `:` (a colon). Supported tokens: - `hh` (hours) - `mm` (minutes) - `ss`, `ss.s`, `ss.ss`, `ss.sss`, `ss.ssss`, etc. (seconds) The number of decimal places in the seconds token does not matter. All versions of the seconds token are equivalent in the context of parsing time values. Regardless of the time format specified, the hours-minutes-seconds value may be followed by the AM/PM designator. For more information, see the [Date and time handling guide](https://hyperformula.handsontable.com/docs/guide/date-and-time-handling.md). **`example`** E.g., for `timeFormats = ['hh:mm:ss.sss']`, valid time strings include: - `1:33:33` - `1:33:33.3` - `1:33:33.33` - `1:33:33.333` - `01:33:33` - `1:33:33 AM` - `1:33:33 PM` - `1:33:33 am` - `1:33:33 pm` - `1:33:33AM` - `1:33:33PM` **`default`** ['hh:mm', 'hh:mm:ss.sss'] ___ ### undoLimit • **undoLimit**: *number* *Defined in [src/Config.ts:140](https://github.com/handsontable/hyperformula/blob/a18429c/src/Config.ts#L140)* Sets the number of elements kept in the undo history. For more information, see the [Undo-Redo guide](https://hyperformula.handsontable.com/docs/guide/undo-redo.md). **`default`** 20 ___ ### useArrayArithmetic • **useArrayArithmetic**: *boolean* *Defined in [src/Config.ts:75](https://github.com/handsontable/hyperformula/blob/a18429c/src/Config.ts#L75)* When set to `true`, array arithmetic is enabled globally. When set to `false`, array arithmetic is enabled only inside array functions (`ARRAYFORMULA`, `FILTER`, and `ARRAY_CONSTRAIN`). For more information, see the [Arrays guide](https://hyperformula.handsontable.com/docs/guide/arrays.md). **`default`** false ___ ### useColumnIndex • **useColumnIndex**: *boolean* *Defined in [src/Config.ts:132](https://github.com/handsontable/hyperformula/blob/a18429c/src/Config.ts#L132)* When set to `true`, switches column search strategy from binary search to column index. Using column index improves efficiency of the `VLOOKUP` and `MATCH` functions, but increases memory usage. When searching with wildcards or regular expressions, column search strategy falls back to binary search (even with `useColumnIndex` set to `true`). For more information, see the [Performance guide](https://hyperformula.handsontable.com/docs/guide/performance.md). **`default`** false ___ ### useRegularExpressions • **useRegularExpressions**: *boolean* *Defined in [src/Config.ts:164](https://github.com/handsontable/hyperformula/blob/a18429c/src/Config.ts#L164)* When set to `true`, criteria in functions (SUMIF, COUNTIF, ...) are allowed to use regular expressions. **`default`** false ___ ### useStats • **useStats**: *boolean* *Defined in [src/Config.ts:134](https://github.com/handsontable/hyperformula/blob/a18429c/src/Config.ts#L134)* When set to `true`, enables gathering engine statistics and timings. Useful for testing and benchmarking. **`default`** false ___ ### useWildcards • **useWildcards**: *boolean* *Defined in [src/Config.ts:166](https://github.com/handsontable/hyperformula/blob/a18429c/src/Config.ts#L166)* When set to `true`, criteria in functions (SUMIF, COUNTIF, ...) can use the `*` and `?` wildcards. **`default`** true ## Methods ### getConfig ▸ **getConfig**(): *[ConfigParams](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md)* *Defined in [src/Config.ts:311](https://github.com/handsontable/hyperformula/blob/a18429c/src/Config.ts#L311)* **Returns:** *[ConfigParams](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md)* ___ ### mergeConfig ▸ **mergeConfig**(`init`: Partial‹[ConfigParams](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md)›): *[Config](https://hyperformula.handsontable.com/docs/api/classes/config.md)* *Defined in [src/Config.ts:315](https://github.com/handsontable/hyperformula/blob/a18429c/src/Config.ts#L315)* **Parameters:** Name | Type | ------ | ------ | `init` | Partial‹[ConfigParams](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md)› | **Returns:** *[Config](https://hyperformula.handsontable.com/docs/api/classes/config.md)* ## Object literals ### defaultConfig ### ▪ **defaultConfig**: *object* *Defined in [src/Config.ts:31](https://github.com/handsontable/hyperformula/blob/a18429c/src/Config.ts#L31)* ### accentSensitive • **accentSensitive**: *false* = false *Defined in [src/Config.ts:32](https://github.com/handsontable/hyperformula/blob/a18429c/src/Config.ts#L32)* ### arrayColumnSeparator • **arrayColumnSeparator**: *","* = "," *Defined in [src/Config.ts:50](https://github.com/handsontable/hyperformula/blob/a18429c/src/Config.ts#L50)* ### arrayRowSeparator • **arrayRowSeparator**: *";"* = ";" *Defined in [src/Config.ts:51](https://github.com/handsontable/hyperformula/blob/a18429c/src/Config.ts#L51)* ### caseFirst • **caseFirst**: *"lower"* = "lower" *Defined in [src/Config.ts:35](https://github.com/handsontable/hyperformula/blob/a18429c/src/Config.ts#L35)* ### caseSensitive • **caseSensitive**: *false* = false *Defined in [src/Config.ts:34](https://github.com/handsontable/hyperformula/blob/a18429c/src/Config.ts#L34)* ### chooseAddressMappingPolicy • **chooseAddressMappingPolicy**: *AlwaysDense‹›* = new AlwaysDense() *Defined in [src/Config.ts:37](https://github.com/handsontable/hyperformula/blob/a18429c/src/Config.ts#L37)* ### context • **context**: *undefined* = undefined *Defined in [src/Config.ts:36](https://github.com/handsontable/hyperformula/blob/a18429c/src/Config.ts#L36)* ### currencySymbol • **currencySymbol**: *string[]* = ['$'] *Defined in [src/Config.ts:33](https://github.com/handsontable/hyperformula/blob/a18429c/src/Config.ts#L33)* ### dateFormats • **dateFormats**: *string[]* = ['DD/MM/YYYY', 'DD/MM/YY'] *Defined in [src/Config.ts:38](https://github.com/handsontable/hyperformula/blob/a18429c/src/Config.ts#L38)* ### decimalSeparator • **decimalSeparator**: *"."* = "." *Defined in [src/Config.ts:39](https://github.com/handsontable/hyperformula/blob/a18429c/src/Config.ts#L39)* ### evaluateNullToZero • **evaluateNullToZero**: *false* = false *Defined in [src/Config.ts:40](https://github.com/handsontable/hyperformula/blob/a18429c/src/Config.ts#L40)* ### functionArgSeparator • **functionArgSeparator**: *string* = "," *Defined in [src/Config.ts:41](https://github.com/handsontable/hyperformula/blob/a18429c/src/Config.ts#L41)* ### functionPlugins • **functionPlugins**: *never[]* = [] *Defined in [src/Config.ts:42](https://github.com/handsontable/hyperformula/blob/a18429c/src/Config.ts#L42)* ### ignorePunctuation • **ignorePunctuation**: *false* = false *Defined in [src/Config.ts:43](https://github.com/handsontable/hyperformula/blob/a18429c/src/Config.ts#L43)* ### ignoreWhiteSpace • **ignoreWhiteSpace**: *"standard"* = "standard" *Defined in [src/Config.ts:45](https://github.com/handsontable/hyperformula/blob/a18429c/src/Config.ts#L45)* ### language • **language**: *string* = "enGB" *Defined in [src/Config.ts:44](https://github.com/handsontable/hyperformula/blob/a18429c/src/Config.ts#L44)* ### leapYear1900 • **leapYear1900**: *false* = false *Defined in [src/Config.ts:47](https://github.com/handsontable/hyperformula/blob/a18429c/src/Config.ts#L47)* ### licenseKey • **licenseKey**: *string* = "" *Defined in [src/Config.ts:46](https://github.com/handsontable/hyperformula/blob/a18429c/src/Config.ts#L46)* ### localeLang • **localeLang**: *string* = "en" *Defined in [src/Config.ts:48](https://github.com/handsontable/hyperformula/blob/a18429c/src/Config.ts#L48)* ### matchWholeCell • **matchWholeCell**: *true* = true *Defined in [src/Config.ts:49](https://github.com/handsontable/hyperformula/blob/a18429c/src/Config.ts#L49)* ### maxColumns • **maxColumns**: *number* = 18278 *Defined in [src/Config.ts:53](https://github.com/handsontable/hyperformula/blob/a18429c/src/Config.ts#L53)* ### maxPendingLazyTransformations • **maxPendingLazyTransformations**: *number* = 50 *Defined in [src/Config.ts:66](https://github.com/handsontable/hyperformula/blob/a18429c/src/Config.ts#L66)* ### maxRows • **maxRows**: *number* = 40000 *Defined in [src/Config.ts:52](https://github.com/handsontable/hyperformula/blob/a18429c/src/Config.ts#L52)* ### nullYear • **nullYear**: *number* = 30 *Defined in [src/Config.ts:54](https://github.com/handsontable/hyperformula/blob/a18429c/src/Config.ts#L54)* ### parseDateTime • **parseDateTime**: *[defaultParseToDateTime](https://hyperformula.handsontable.com/docs/api/globals.md#defaultparsetodatetime)* = defaultParseToDateTime *Defined in [src/Config.ts:56](https://github.com/handsontable/hyperformula/blob/a18429c/src/Config.ts#L56)* ### precisionEpsilon • **precisionEpsilon**: *number* = 1e-13 *Defined in [src/Config.ts:57](https://github.com/handsontable/hyperformula/blob/a18429c/src/Config.ts#L57)* ### precisionRounding • **precisionRounding**: *number* = 10 *Defined in [src/Config.ts:58](https://github.com/handsontable/hyperformula/blob/a18429c/src/Config.ts#L58)* ### smartRounding • **smartRounding**: *true* = true *Defined in [src/Config.ts:59](https://github.com/handsontable/hyperformula/blob/a18429c/src/Config.ts#L59)* ### stringifyCurrency • **stringifyCurrency**: *[defaultStringifyCurrency](https://hyperformula.handsontable.com/docs/api/globals.md#defaultstringifycurrency)* = defaultStringifyCurrency *Defined in [src/Config.ts:62](https://github.com/handsontable/hyperformula/blob/a18429c/src/Config.ts#L62)* ### stringifyDateTime • **stringifyDateTime**: *[defaultStringifyDateTime](https://hyperformula.handsontable.com/docs/api/globals.md#defaultstringifydatetime)* = defaultStringifyDateTime *Defined in [src/Config.ts:60](https://github.com/handsontable/hyperformula/blob/a18429c/src/Config.ts#L60)* ### stringifyDuration • **stringifyDuration**: *[defaultStringifyDuration](https://hyperformula.handsontable.com/docs/api/globals.md#defaultstringifyduration)* = defaultStringifyDuration *Defined in [src/Config.ts:61](https://github.com/handsontable/hyperformula/blob/a18429c/src/Config.ts#L61)* ### thousandSeparator • **thousandSeparator**: *""* = "" *Defined in [src/Config.ts:64](https://github.com/handsontable/hyperformula/blob/a18429c/src/Config.ts#L64)* ### timeFormats • **timeFormats**: *string[]* = ['hh:mm', 'hh:mm:ss.sss'] *Defined in [src/Config.ts:63](https://github.com/handsontable/hyperformula/blob/a18429c/src/Config.ts#L63)* ### undoLimit • **undoLimit**: *number* = 20 *Defined in [src/Config.ts:65](https://github.com/handsontable/hyperformula/blob/a18429c/src/Config.ts#L65)* ### useArrayArithmetic • **useArrayArithmetic**: *false* = false *Defined in [src/Config.ts:71](https://github.com/handsontable/hyperformula/blob/a18429c/src/Config.ts#L71)* ### useColumnIndex • **useColumnIndex**: *false* = false *Defined in [src/Config.ts:69](https://github.com/handsontable/hyperformula/blob/a18429c/src/Config.ts#L69)* ### useRegularExpressions • **useRegularExpressions**: *false* = false *Defined in [src/Config.ts:67](https://github.com/handsontable/hyperformula/blob/a18429c/src/Config.ts#L67)* ### useStats • **useStats**: *false* = false *Defined in [src/Config.ts:70](https://github.com/handsontable/hyperformula/blob/a18429c/src/Config.ts#L70)* ### useWildcards • **useWildcards**: *true* = true *Defined in [src/Config.ts:68](https://github.com/handsontable/hyperformula/blob/a18429c/src/Config.ts#L68)* ▪ **nullDate**: *object* *Defined in [src/Config.ts:55](https://github.com/handsontable/hyperformula/blob/a18429c/src/Config.ts#L55)* * **day**: *number* = 30 * **month**: *number* = 12 * **year**: *number* = 1899 --- ## Error URL: https://hyperformula.handsontable.com/docs/api/classes/cellcontent.error # Error ## Constructors ### constructor \+ **new Error**(`errorType`: [ErrorType](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-errortype), `message?`: undefined | string): *[Error](https://hyperformula.handsontable.com/docs/api/classes/cellcontent.error.md)* *Defined in [src/CellContentParser.ts:62](https://github.com/handsontable/hyperformula/blob/a18429c/src/CellContentParser.ts#L62)* **Parameters:** Name | Type | ------ | ------ | `errorType` | [ErrorType](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-errortype) | `message?` | undefined | string | **Returns:** *[Error](https://hyperformula.handsontable.com/docs/api/classes/cellcontent.error.md)* ## Properties ### value • **value**: *[CellError](https://hyperformula.handsontable.com/docs/api/classes/cellerror.md)* *Defined in [src/CellContentParser.ts:62](https://github.com/handsontable/hyperformula/blob/a18429c/src/CellContentParser.ts#L62)* --- ## ColumnBinarySearch URL: https://hyperformula.handsontable.com/docs/api/classes/columnbinarysearch # ColumnBinarySearch ## Constructors ### constructor \+ **new ColumnBinarySearch**(`dependencyGraph`: DependencyGraph): *[ColumnBinarySearch](https://hyperformula.handsontable.com/docs/api/classes/columnbinarysearch.md)* *Defined in [src/Lookup/ColumnBinarySearch.ts:15](https://github.com/handsontable/hyperformula/blob/a18429c/src/Lookup/ColumnBinarySearch.ts#L15)* **Parameters:** Name | Type | ------ | ------ | `dependencyGraph` | DependencyGraph | **Returns:** *[ColumnBinarySearch](https://hyperformula.handsontable.com/docs/api/classes/columnbinarysearch.md)* ## Methods ### add ▸ **add**(`value`: RawScalarValue, `address`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *void* *Defined in [src/Lookup/ColumnBinarySearch.ts:21](https://github.com/handsontable/hyperformula/blob/a18429c/src/Lookup/ColumnBinarySearch.ts#L21)* **Parameters:** Name | Type | ------ | ------ | `value` | RawScalarValue | `address` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | **Returns:** *void* ___ ### addColumns ▸ **addColumns**(`columnsSpan`: [ColumnsSpan](https://hyperformula.handsontable.com/docs/api/classes/columnsspan.md)): *void* *Defined in [src/Lookup/ColumnBinarySearch.ts:37](https://github.com/handsontable/hyperformula/blob/a18429c/src/Lookup/ColumnBinarySearch.ts#L37)* **Parameters:** Name | Type | ------ | ------ | `columnsSpan` | [ColumnsSpan](https://hyperformula.handsontable.com/docs/api/classes/columnsspan.md) | **Returns:** *void* ___ ### advancedFind ▸ **advancedFind**(`keyMatcher`: function, `rangeValue`: [SimpleRangeValue](https://hyperformula.handsontable.com/docs/api/classes/simplerangevalue.md), `__namedParameters`: object): *number* *Defined in [src/Lookup/AdvancedFind.ts:27](https://github.com/handsontable/hyperformula/blob/a18429c/src/Lookup/AdvancedFind.ts#L27)* **Parameters:** ▪ **keyMatcher**: *function* ▸ (`arg`: RawInterpreterValue): *boolean* **Parameters:** Name | Type | ------ | ------ | `arg` | RawInterpreterValue | ▪ **rangeValue**: *[SimpleRangeValue](https://hyperformula.handsontable.com/docs/api/classes/simplerangevalue.md)* ▪`Default value` **__namedParameters**: *object*= { returnOccurrence: 'first' } Name | Type | ------ | ------ | `returnOccurrence` | undefined | "first" | "last" | **Returns:** *number* ___ ### applyChanges ▸ **applyChanges**(`contentChanges`: [CellValueChange](https://hyperformula.handsontable.com/docs/api/interfaces/cellvaluechange.md)[]): *void* *Defined in [src/Lookup/ColumnBinarySearch.ts:33](https://github.com/handsontable/hyperformula/blob/a18429c/src/Lookup/ColumnBinarySearch.ts#L33)* **Parameters:** Name | Type | ------ | ------ | `contentChanges` | [CellValueChange](https://hyperformula.handsontable.com/docs/api/interfaces/cellvaluechange.md)[] | **Returns:** *void* ___ ### change ▸ **change**(`oldValue`: RawScalarValue | undefined, `newValue`: RawScalarValue, `address`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *void* *Defined in [src/Lookup/ColumnBinarySearch.ts:29](https://github.com/handsontable/hyperformula/blob/a18429c/src/Lookup/ColumnBinarySearch.ts#L29)* **Parameters:** Name | Type | ------ | ------ | `oldValue` | RawScalarValue | undefined | `newValue` | RawScalarValue | `address` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | **Returns:** *void* ___ ### find ▸ **find**(`searchKey`: RawNoErrorScalarValue, `rangeValue`: [SimpleRangeValue](https://hyperformula.handsontable.com/docs/api/classes/simplerangevalue.md), `searchOptions`: [SearchOptions](https://hyperformula.handsontable.com/docs/api/interfaces/searchoptions.md)): *number* *Defined in [src/Lookup/ColumnBinarySearch.ts:69](https://github.com/handsontable/hyperformula/blob/a18429c/src/Lookup/ColumnBinarySearch.ts#L69)* **Parameters:** Name | Type | ------ | ------ | `searchKey` | RawNoErrorScalarValue | `rangeValue` | [SimpleRangeValue](https://hyperformula.handsontable.com/docs/api/classes/simplerangevalue.md) | `searchOptions` | [SearchOptions](https://hyperformula.handsontable.com/docs/api/interfaces/searchoptions.md) | **Returns:** *number* ___ ### forceApplyPostponedTransformations ▸ **forceApplyPostponedTransformations**(): *void* *Defined in [src/Lookup/ColumnBinarySearch.ts:63](https://github.com/handsontable/hyperformula/blob/a18429c/src/Lookup/ColumnBinarySearch.ts#L63)* No-op: ColumnBinarySearch reads cell values directly from the dependency graph on every lookup, so it has no cached data that could become stale. Unlike ColumnIndex, which maintains a separate value-to-address index that must be kept in sync with lazy transformations, binary search always operates on the current graph state. **Returns:** *void* ___ ### moveValues ▸ **moveValues**(`sourceRange`: IterableIterator‹[RawScalarValue, [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)]›, `toRight`: number, `toBottom`: number, `toSheet`: number): *void* *Defined in [src/Lookup/ColumnBinarySearch.ts:49](https://github.com/handsontable/hyperformula/blob/a18429c/src/Lookup/ColumnBinarySearch.ts#L49)* **Parameters:** Name | Type | ------ | ------ | `sourceRange` | IterableIterator‹[RawScalarValue, [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)]› | `toRight` | number | `toBottom` | number | `toSheet` | number | **Returns:** *void* ___ ### remove ▸ **remove**(`value`: RawScalarValue | undefined, `address`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *void* *Defined in [src/Lookup/ColumnBinarySearch.ts:25](https://github.com/handsontable/hyperformula/blob/a18429c/src/Lookup/ColumnBinarySearch.ts#L25)* **Parameters:** Name | Type | ------ | ------ | `value` | RawScalarValue | undefined | `address` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | **Returns:** *void* ___ ### removeColumns ▸ **removeColumns**(`columnsSpan`: [ColumnsSpan](https://hyperformula.handsontable.com/docs/api/classes/columnsspan.md)): *void* *Defined in [src/Lookup/ColumnBinarySearch.ts:41](https://github.com/handsontable/hyperformula/blob/a18429c/src/Lookup/ColumnBinarySearch.ts#L41)* **Parameters:** Name | Type | ------ | ------ | `columnsSpan` | [ColumnsSpan](https://hyperformula.handsontable.com/docs/api/classes/columnsspan.md) | **Returns:** *void* ___ ### removeSheet ▸ **removeSheet**(`sheetId`: number): *void* *Defined in [src/Lookup/ColumnBinarySearch.ts:45](https://github.com/handsontable/hyperformula/blob/a18429c/src/Lookup/ColumnBinarySearch.ts#L45)* **Parameters:** Name | Type | ------ | ------ | `sheetId` | number | **Returns:** *void* ___ ### removeValues ▸ **removeValues**(`range`: IterableIterator‹[RawScalarValue, [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)]›): *void* *Defined in [src/Lookup/ColumnBinarySearch.ts:53](https://github.com/handsontable/hyperformula/blob/a18429c/src/Lookup/ColumnBinarySearch.ts#L53)* **Parameters:** Name | Type | ------ | ------ | `range` | IterableIterator‹[RawScalarValue, [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)]› | **Returns:** *void* --- ## ConfigValueTooSmallError URL: https://hyperformula.handsontable.com/docs/api/classes/configvaluetoosmallerror # ConfigValueTooSmallError Error thrown when supplied config parameter value is too small. This error might be thrown while setting or updating the [ConfigParams](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md). The following methods accept [ConfigParams](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md) as a parameter: **`see`** [buildEmpty](https://hyperformula.handsontable.com/docs/api/classes/buildenginefactory.md#static-buildempty) **`see`** [buildFromArray](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#static-buildfromarray) **`see`** [buildFromSheets](https://hyperformula.handsontable.com/docs/api/classes/buildenginefactory.md#static-buildfromsheets) **`see`** [updateConfig](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#updateconfig) ## Constructors ### constructor \+ **new ConfigValueTooSmallError**(`paramName`: string, `minimum`: number): *[ConfigValueTooSmallError](https://hyperformula.handsontable.com/docs/api/classes/configvaluetoosmallerror.md)* *Defined in [src/errors.ts:209](https://github.com/handsontable/hyperformula/blob/a18429c/src/errors.ts#L209)* **Parameters:** Name | Type | ------ | ------ | `paramName` | string | `minimum` | number | **Returns:** *[ConfigValueTooSmallError](https://hyperformula.handsontable.com/docs/api/classes/configvaluetoosmallerror.md)* ## Properties ### message • **message**: *string* ___ ### name • **name**: *string* ___ ### stack • **stack**? : *undefined | string* ___ ### Error ▪ **Error**: *ErrorConstructor* --- ## ConfigValueEmpty URL: https://hyperformula.handsontable.com/docs/api/classes/configvalueempty # ConfigValueEmpty Error thrown when supplied config parameter value is an empty string. This error might be thrown while setting or updating the [ConfigParams](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md). The following methods accept [ConfigParams](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md) as a parameter: **`see`** [buildEmpty](https://hyperformula.handsontable.com/docs/api/classes/buildenginefactory.md#static-buildempty) **`see`** [buildFromArray](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#static-buildfromarray) **`see`** [buildFromSheets](https://hyperformula.handsontable.com/docs/api/classes/buildenginefactory.md#static-buildfromsheets) **`see`** [updateConfig](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#updateconfig) ## Constructors ### constructor \+ **new ConfigValueEmpty**(`paramName`: string): *[ConfigValueEmpty](https://hyperformula.handsontable.com/docs/api/classes/configvalueempty.md)* *Defined in [src/errors.ts:193](https://github.com/handsontable/hyperformula/blob/a18429c/src/errors.ts#L193)* **Parameters:** Name | Type | ------ | ------ | `paramName` | string | **Returns:** *[ConfigValueEmpty](https://hyperformula.handsontable.com/docs/api/classes/configvalueempty.md)* ## Properties ### message • **message**: *string* ___ ### name • **name**: *string* ___ ### stack • **stack**? : *undefined | string* ___ ### Error ▪ **Error**: *ErrorConstructor* --- ## ConfigValueTooBigError URL: https://hyperformula.handsontable.com/docs/api/classes/configvaluetoobigerror # ConfigValueTooBigError Error thrown when supplied config parameter value is too big. This error might be thrown while setting or updating the [ConfigParams](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md). The following methods accept [ConfigParams](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md) as a parameter: **`see`** [buildEmpty](https://hyperformula.handsontable.com/docs/api/classes/buildenginefactory.md#static-buildempty) **`see`** [buildFromArray](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#static-buildfromarray) **`see`** [buildFromSheets](https://hyperformula.handsontable.com/docs/api/classes/buildenginefactory.md#static-buildfromsheets) **`see`** [updateConfig](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#updateconfig) ## Constructors ### constructor \+ **new ConfigValueTooBigError**(`paramName`: string, `maximum`: number): *[ConfigValueTooBigError](https://hyperformula.handsontable.com/docs/api/classes/configvaluetoobigerror.md)* *Defined in [src/errors.ts:225](https://github.com/handsontable/hyperformula/blob/a18429c/src/errors.ts#L225)* **Parameters:** Name | Type | ------ | ------ | `paramName` | string | `maximum` | number | **Returns:** *[ConfigValueTooBigError](https://hyperformula.handsontable.com/docs/api/classes/configvaluetoobigerror.md)* ## Properties ### message • **message**: *string* ___ ### name • **name**: *string* ___ ### stack • **stack**? : *undefined | string* ___ ### Error ▪ **Error**: *ErrorConstructor* --- ## CrudOperations URL: https://hyperformula.handsontable.com/docs/api/classes/crudoperations # CrudOperations ## Constructors ### constructor \+ **new CrudOperations**(`config`: [Config](https://hyperformula.handsontable.com/docs/api/classes/config.md), `operations`: [Operations](https://hyperformula.handsontable.com/docs/api/classes/operations.md), `undoRedo`: [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md), `clipboardOperations`: [ClipboardOperations](https://hyperformula.handsontable.com/docs/api/classes/clipboardoperations.md), `dependencyGraph`: DependencyGraph, `columnSearch`: [ColumnSearchStrategy](https://hyperformula.handsontable.com/docs/api/interfaces/columnsearchstrategy.md), `parser`: ParserWithCaching, `cellContentParser`: [CellContentParser](https://hyperformula.handsontable.com/docs/api/classes/cellcontentparser.md), `lazilyTransformingAstService`: [LazilyTransformingAstService](https://hyperformula.handsontable.com/docs/api/classes/lazilytransformingastservice.md), `namedExpressions`: [NamedExpressions](https://hyperformula.handsontable.com/docs/api/classes/namedexpressions.md)): *[CrudOperations](https://hyperformula.handsontable.com/docs/api/classes/crudoperations.md)* *Defined in [src/CrudOperations.ts:70](https://github.com/handsontable/hyperformula/blob/a18429c/src/CrudOperations.ts#L70)* **Parameters:** Name | Type | ------ | ------ | `config` | [Config](https://hyperformula.handsontable.com/docs/api/classes/config.md) | `operations` | [Operations](https://hyperformula.handsontable.com/docs/api/classes/operations.md) | `undoRedo` | [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md) | `clipboardOperations` | [ClipboardOperations](https://hyperformula.handsontable.com/docs/api/classes/clipboardoperations.md) | `dependencyGraph` | DependencyGraph | `columnSearch` | [ColumnSearchStrategy](https://hyperformula.handsontable.com/docs/api/interfaces/columnsearchstrategy.md) | `parser` | ParserWithCaching | `cellContentParser` | [CellContentParser](https://hyperformula.handsontable.com/docs/api/classes/cellcontentparser.md) | `lazilyTransformingAstService` | [LazilyTransformingAstService](https://hyperformula.handsontable.com/docs/api/classes/lazilytransformingastservice.md) | `namedExpressions` | [NamedExpressions](https://hyperformula.handsontable.com/docs/api/classes/namedexpressions.md) | **Returns:** *[CrudOperations](https://hyperformula.handsontable.com/docs/api/classes/crudoperations.md)* ## Properties ### operations • **operations**: *[Operations](https://hyperformula.handsontable.com/docs/api/classes/operations.md)* *Defined in [src/CrudOperations.ts:74](https://github.com/handsontable/hyperformula/blob/a18429c/src/CrudOperations.ts#L74)* ___ ### undoRedo • **undoRedo**: *[UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md)* *Defined in [src/CrudOperations.ts:75](https://github.com/handsontable/hyperformula/blob/a18429c/src/CrudOperations.ts#L75)* ## Methods ### addColumns ▸ **addColumns**(`sheet`: number, ...`indexes`: [ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[]): *void* *Defined in [src/CrudOperations.ts:110](https://github.com/handsontable/hyperformula/blob/a18429c/src/CrudOperations.ts#L110)* **Parameters:** Name | Type | ------ | ------ | `sheet` | number | `...indexes` | [ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[] | **Returns:** *void* ___ ### addNamedExpression ▸ **addNamedExpression**(`expressionName`: string, `expression`: [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent), `sheetId?`: undefined | number, `options?`: [NamedExpressionOptions](https://hyperformula.handsontable.com/docs/api/globals.md#namedexpressionoptions)): *void* *Defined in [src/CrudOperations.ts:382](https://github.com/handsontable/hyperformula/blob/a18429c/src/CrudOperations.ts#L382)* **Parameters:** Name | Type | ------ | ------ | `expressionName` | string | `expression` | [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent) | `sheetId?` | undefined | number | `options?` | [NamedExpressionOptions](https://hyperformula.handsontable.com/docs/api/globals.md#namedexpressionoptions) | **Returns:** *void* ___ ### addRows ▸ **addRows**(`sheet`: number, ...`indexes`: [ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[]): *void* *Defined in [src/CrudOperations.ts:92](https://github.com/handsontable/hyperformula/blob/a18429c/src/CrudOperations.ts#L92)* **Parameters:** Name | Type | ------ | ------ | `sheet` | number | `...indexes` | [ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[] | **Returns:** *void* ___ ### addSheet ▸ **addSheet**(`name?`: undefined | string): *string* *Defined in [src/CrudOperations.ts:204](https://github.com/handsontable/hyperformula/blob/a18429c/src/CrudOperations.ts#L204)* **Parameters:** Name | Type | ------ | ------ | `name?` | undefined | string | **Returns:** *string* ___ ### beginUndoRedoBatchMode ▸ **beginUndoRedoBatchMode**(): *void* *Defined in [src/CrudOperations.ts:188](https://github.com/handsontable/hyperformula/blob/a18429c/src/CrudOperations.ts#L188)* **Returns:** *void* ___ ### changeNamedExpressionExpression ▸ **changeNamedExpressionExpression**(`expressionName`: string, `sheetId`: number | undefined, `newExpression`: [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent), `options?`: [NamedExpressionOptions](https://hyperformula.handsontable.com/docs/api/globals.md#namedexpressionoptions)): *void* *Defined in [src/CrudOperations.ts:390](https://github.com/handsontable/hyperformula/blob/a18429c/src/CrudOperations.ts#L390)* **Parameters:** Name | Type | ------ | ------ | `expressionName` | string | `sheetId` | number | undefined | `newExpression` | [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent) | `options?` | [NamedExpressionOptions](https://hyperformula.handsontable.com/docs/api/globals.md#namedexpressionoptions) | **Returns:** *void* ___ ### clearClipboard ▸ **clearClipboard**(): *void* *Defined in [src/CrudOperations.ts:200](https://github.com/handsontable/hyperformula/blob/a18429c/src/CrudOperations.ts#L200)* **Returns:** *void* ___ ### clearSheet ▸ **clearSheet**(`sheetId`: number): *void* *Defined in [src/CrudOperations.ts:240](https://github.com/handsontable/hyperformula/blob/a18429c/src/CrudOperations.ts#L240)* **Parameters:** Name | Type | ------ | ------ | `sheetId` | number | **Returns:** *void* ___ ### commitUndoRedoBatchMode ▸ **commitUndoRedoBatchMode**(): *void* *Defined in [src/CrudOperations.ts:192](https://github.com/handsontable/hyperformula/blob/a18429c/src/CrudOperations.ts#L192)* **Returns:** *void* ___ ### copy ▸ **copy**(`sourceLeftCorner`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), `width`: number, `height`: number): *void* *Defined in [src/CrudOperations.ts:167](https://github.com/handsontable/hyperformula/blob/a18429c/src/CrudOperations.ts#L167)* **Parameters:** Name | Type | ------ | ------ | `sourceLeftCorner` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | `width` | number | `height` | number | **Returns:** *void* ___ ### cut ▸ **cut**(`sourceLeftCorner`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), `width`: number, `height`: number): *void* *Defined in [src/CrudOperations.ts:154](https://github.com/handsontable/hyperformula/blob/a18429c/src/CrudOperations.ts#L154)* **Parameters:** Name | Type | ------ | ------ | `sourceLeftCorner` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | `width` | number | `height` | number | **Returns:** *void* ___ ### ensureItIsPossibleToAddColumns ▸ **ensureItIsPossibleToAddColumns**(`sheet`: number, ...`indexes`: [ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[]): *void* *Defined in [src/CrudOperations.ts:462](https://github.com/handsontable/hyperformula/blob/a18429c/src/CrudOperations.ts#L462)* **Parameters:** Name | Type | ------ | ------ | `sheet` | number | `...indexes` | [ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[] | **Returns:** *void* ___ ### ensureItIsPossibleToAddNamedExpression ▸ **ensureItIsPossibleToAddNamedExpression**(`expressionName`: string, `expression`: [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent), `sheetId?`: undefined | number): *void* *Defined in [src/CrudOperations.ts:408](https://github.com/handsontable/hyperformula/blob/a18429c/src/CrudOperations.ts#L408)* **Parameters:** Name | Type | ------ | ------ | `expressionName` | string | `expression` | [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent) | `sheetId?` | undefined | number | **Returns:** *void* ___ ### ensureItIsPossibleToAddRows ▸ **ensureItIsPossibleToAddRows**(`sheet`: number, ...`indexes`: [ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[]): *void* *Defined in [src/CrudOperations.ts:429](https://github.com/handsontable/hyperformula/blob/a18429c/src/CrudOperations.ts#L429)* **Parameters:** Name | Type | ------ | ------ | `sheet` | number | `...indexes` | [ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[] | **Returns:** *void* ___ ### ensureItIsPossibleToAddSheet ▸ **ensureItIsPossibleToAddSheet**(`name`: string): *void* *Defined in [src/CrudOperations.ts:550](https://github.com/handsontable/hyperformula/blob/a18429c/src/CrudOperations.ts#L550)* **Parameters:** Name | Type | ------ | ------ | `name` | string | **Returns:** *void* ___ ### ensureItIsPossibleToChangeCellContents ▸ **ensureItIsPossibleToChangeCellContents**(`inputAddress`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), `content`: [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent)[][]): *void* *Defined in [src/CrudOperations.ts:576](https://github.com/handsontable/hyperformula/blob/a18429c/src/CrudOperations.ts#L576)* **Parameters:** Name | Type | ------ | ------ | `inputAddress` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | `content` | [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent)[][] | **Returns:** *void* ___ ### ensureItIsPossibleToChangeContent ▸ **ensureItIsPossibleToChangeContent**(`address`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *void* *Defined in [src/CrudOperations.ts:567](https://github.com/handsontable/hyperformula/blob/a18429c/src/CrudOperations.ts#L567)* **Parameters:** Name | Type | ------ | ------ | `address` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | **Returns:** *void* ___ ### ensureItIsPossibleToChangeNamedExpression ▸ **ensureItIsPossibleToChangeNamedExpression**(`expressionName`: string, `expression`: [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent), `sheetId?`: undefined | number): *void* *Defined in [src/CrudOperations.ts:414](https://github.com/handsontable/hyperformula/blob/a18429c/src/CrudOperations.ts#L414)* **Parameters:** Name | Type | ------ | ------ | `expressionName` | string | `expression` | [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent) | `sheetId?` | undefined | number | **Returns:** *void* ___ ### ensureItIsPossibleToChangeSheetContents ▸ **ensureItIsPossibleToChangeSheetContents**(`sheetId`: number, `content`: [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent)[][]): *void* *Defined in [src/CrudOperations.ts:585](https://github.com/handsontable/hyperformula/blob/a18429c/src/CrudOperations.ts#L585)* **Parameters:** Name | Type | ------ | ------ | `sheetId` | number | `content` | [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent)[][] | **Returns:** *void* ___ ### ensureItIsPossibleToCopy ▸ **ensureItIsPossibleToCopy**(`sourceLeftCorner`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), `width`: number, `height`: number): *void* *Defined in [src/CrudOperations.ts:158](https://github.com/handsontable/hyperformula/blob/a18429c/src/CrudOperations.ts#L158)* **Parameters:** Name | Type | ------ | ------ | `sourceLeftCorner` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | `width` | number | `height` | number | **Returns:** *void* ___ ### ensureItIsPossibleToMoveColumns ▸ **ensureItIsPossibleToMoveColumns**(`sheet`: number, `startColumn`: number, `numberOfColumns`: number, `targetColumn`: number): *void* *Defined in [src/CrudOperations.ts:523](https://github.com/handsontable/hyperformula/blob/a18429c/src/CrudOperations.ts#L523)* **Parameters:** Name | Type | ------ | ------ | `sheet` | number | `startColumn` | number | `numberOfColumns` | number | `targetColumn` | number | **Returns:** *void* ___ ### ensureItIsPossibleToMoveRows ▸ **ensureItIsPossibleToMoveRows**(`sheet`: number, `startRow`: number, `numberOfRows`: number, `targetRow`: number): *void* *Defined in [src/CrudOperations.ts:496](https://github.com/handsontable/hyperformula/blob/a18429c/src/CrudOperations.ts#L496)* **Parameters:** Name | Type | ------ | ------ | `sheet` | number | `startRow` | number | `numberOfRows` | number | `targetRow` | number | **Returns:** *void* ___ ### ensureItIsPossibleToRemoveColumns ▸ **ensureItIsPossibleToRemoveColumns**(`sheet`: number, ...`indexes`: [ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[]): *void* *Defined in [src/CrudOperations.ts:480](https://github.com/handsontable/hyperformula/blob/a18429c/src/CrudOperations.ts#L480)* **Parameters:** Name | Type | ------ | ------ | `sheet` | number | `...indexes` | [ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[] | **Returns:** *void* ___ ### ensureItIsPossibleToRemoveRows ▸ **ensureItIsPossibleToRemoveRows**(`sheet`: number, ...`indexes`: [ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[]): *void* *Defined in [src/CrudOperations.ts:447](https://github.com/handsontable/hyperformula/blob/a18429c/src/CrudOperations.ts#L447)* **Parameters:** Name | Type | ------ | ------ | `sheet` | number | `...indexes` | [ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[] | **Returns:** *void* ___ ### ensureItIsPossibleToRenameSheet ▸ **ensureItIsPossibleToRenameSheet**(`sheetId`: number, `name`: string): *void* *Defined in [src/CrudOperations.ts:556](https://github.com/handsontable/hyperformula/blob/a18429c/src/CrudOperations.ts#L556)* **Parameters:** Name | Type | ------ | ------ | `sheetId` | number | `name` | string | **Returns:** *void* ___ ### ensureRangeInSizeLimits ▸ **ensureRangeInSizeLimits**(`range`: [AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)): *void* *Defined in [src/CrudOperations.ts:591](https://github.com/handsontable/hyperformula/blob/a18429c/src/CrudOperations.ts#L591)* **Parameters:** Name | Type | ------ | ------ | `range` | [AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md) | **Returns:** *void* ___ ### ensureScopeIdIsValid ▸ **ensureScopeIdIsValid**(`scopeId?`: undefined | number): *void* *Defined in [src/CrudOperations.ts:609](https://github.com/handsontable/hyperformula/blob/a18429c/src/CrudOperations.ts#L609)* **Parameters:** Name | Type | ------ | ------ | `scopeId?` | undefined | number | **Returns:** *void* ___ ### getAndClearContentChanges ▸ **getAndClearContentChanges**(): *[ContentChanges](https://hyperformula.handsontable.com/docs/api/classes/contentchanges.md)* *Defined in [src/CrudOperations.ts:605](https://github.com/handsontable/hyperformula/blob/a18429c/src/CrudOperations.ts#L605)* **Returns:** *[ContentChanges](https://hyperformula.handsontable.com/docs/api/classes/contentchanges.md)* ___ ### isClipboardEmpty ▸ **isClipboardEmpty**(): *boolean* *Defined in [src/CrudOperations.ts:196](https://github.com/handsontable/hyperformula/blob/a18429c/src/CrudOperations.ts#L196)* **Returns:** *boolean* ___ ### isItPossibleToRemoveNamedExpression ▸ **isItPossibleToRemoveNamedExpression**(`expressionName`: string, `sheetId?`: undefined | number): *void* *Defined in [src/CrudOperations.ts:422](https://github.com/handsontable/hyperformula/blob/a18429c/src/CrudOperations.ts#L422)* **Parameters:** Name | Type | ------ | ------ | `expressionName` | string | `sheetId?` | undefined | number | **Returns:** *void* ___ ### isThereSomethingToRedo ▸ **isThereSomethingToRedo**(): *boolean* *Defined in [src/CrudOperations.ts:601](https://github.com/handsontable/hyperformula/blob/a18429c/src/CrudOperations.ts#L601)* **Returns:** *boolean* ___ ### isThereSomethingToUndo ▸ **isThereSomethingToUndo**(): *boolean* *Defined in [src/CrudOperations.ts:597](https://github.com/handsontable/hyperformula/blob/a18429c/src/CrudOperations.ts#L597)* **Returns:** *boolean* ___ ### mappingFromOrder ▸ **mappingFromOrder**(`sheetId`: number, `newOrder`: number[], `rowOrColumn`: "row" | "column"): *[number, number][]* *Defined in [src/CrudOperations.ts:349](https://github.com/handsontable/hyperformula/blob/a18429c/src/CrudOperations.ts#L349)* **Parameters:** Name | Type | ------ | ------ | `sheetId` | number | `newOrder` | number[] | `rowOrColumn` | "row" | "column" | **Returns:** *[number, number][]* ___ ### moveCells ▸ **moveCells**(`sourceLeftCorner`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), `width`: number, `height`: number, `destinationLeftCorner`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *void* *Defined in [src/CrudOperations.ts:128](https://github.com/handsontable/hyperformula/blob/a18429c/src/CrudOperations.ts#L128)* **Parameters:** Name | Type | ------ | ------ | `sourceLeftCorner` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | `width` | number | `height` | number | `destinationLeftCorner` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | **Returns:** *void* ___ ### moveColumns ▸ **moveColumns**(`sheet`: number, `startColumn`: number, `numberOfColumns`: number, `targetColumn`: number): *void* *Defined in [src/CrudOperations.ts:147](https://github.com/handsontable/hyperformula/blob/a18429c/src/CrudOperations.ts#L147)* **Parameters:** Name | Type | ------ | ------ | `sheet` | number | `startColumn` | number | `numberOfColumns` | number | `targetColumn` | number | **Returns:** *void* ___ ### moveRows ▸ **moveRows**(`sheet`: number, `startRow`: number, `numberOfRows`: number, `targetRow`: number): *void* *Defined in [src/CrudOperations.ts:139](https://github.com/handsontable/hyperformula/blob/a18429c/src/CrudOperations.ts#L139)* **Parameters:** Name | Type | ------ | ------ | `sheet` | number | `startRow` | number | `numberOfRows` | number | `targetRow` | number | **Returns:** *void* ___ ### paste ▸ **paste**(`targetLeftCorner`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *void* *Defined in [src/CrudOperations.ts:172](https://github.com/handsontable/hyperformula/blob/a18429c/src/CrudOperations.ts#L172)* **Parameters:** Name | Type | ------ | ------ | `targetLeftCorner` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | **Returns:** *void* ___ ### redo ▸ **redo**(): *void* *Defined in [src/CrudOperations.ts:374](https://github.com/handsontable/hyperformula/blob/a18429c/src/CrudOperations.ts#L374)* **Returns:** *void* ___ ### removeColumns ▸ **removeColumns**(`sheet`: number, ...`indexes`: [ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[]): *void* *Defined in [src/CrudOperations.ts:119](https://github.com/handsontable/hyperformula/blob/a18429c/src/CrudOperations.ts#L119)* **Parameters:** Name | Type | ------ | ------ | `sheet` | number | `...indexes` | [ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[] | **Returns:** *void* ___ ### removeNamedExpression ▸ **removeNamedExpression**(`expressionName`: string, `sheetId?`: undefined | number): *[InternalNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/internalnamedexpression.md)* *Defined in [src/CrudOperations.ts:398](https://github.com/handsontable/hyperformula/blob/a18429c/src/CrudOperations.ts#L398)* **Parameters:** Name | Type | ------ | ------ | `expressionName` | string | `sheetId?` | undefined | number | **Returns:** *[InternalNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/internalnamedexpression.md)* ___ ### removeRows ▸ **removeRows**(`sheet`: number, ...`indexes`: [ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[]): *void* *Defined in [src/CrudOperations.ts:101](https://github.com/handsontable/hyperformula/blob/a18429c/src/CrudOperations.ts#L101)* **Parameters:** Name | Type | ------ | ------ | `sheet` | number | `...indexes` | [ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[] | **Returns:** *void* ___ ### removeSheet ▸ **removeSheet**(`sheetId`: number): *void* *Defined in [src/CrudOperations.ts:214](https://github.com/handsontable/hyperformula/blob/a18429c/src/CrudOperations.ts#L214)* **Parameters:** Name | Type | ------ | ------ | `sheetId` | number | **Returns:** *void* ___ ### renameSheet ▸ **renameSheet**(`sheetId`: number, `newName`: string): *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹string›* *Defined in [src/CrudOperations.ts:224](https://github.com/handsontable/hyperformula/blob/a18429c/src/CrudOperations.ts#L224)* **Parameters:** Name | Type | ------ | ------ | `sheetId` | number | `newName` | string | **Returns:** *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹string›* ___ ### setCellContents ▸ **setCellContents**(`topLeftCornerAddress`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), `cellContents`: [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent)[][] | [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent)): *void* *Defined in [src/CrudOperations.ts:249](https://github.com/handsontable/hyperformula/blob/a18429c/src/CrudOperations.ts#L249)* **Parameters:** Name | Type | ------ | ------ | `topLeftCornerAddress` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | `cellContents` | [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent)[][] | [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent) | **Returns:** *void* ___ ### setColumnOrder ▸ **setColumnOrder**(`sheetId`: number, `columnMapping`: [number, number][]): *void* *Defined in [src/CrudOperations.ts:322](https://github.com/handsontable/hyperformula/blob/a18429c/src/CrudOperations.ts#L322)* **Parameters:** Name | Type | ------ | ------ | `sheetId` | number | `columnMapping` | [number, number][] | **Returns:** *void* ___ ### setRowOrder ▸ **setRowOrder**(`sheetId`: number, `rowMapping`: [number, number][]): *void* *Defined in [src/CrudOperations.ts:295](https://github.com/handsontable/hyperformula/blob/a18429c/src/CrudOperations.ts#L295)* **Parameters:** Name | Type | ------ | ------ | `sheetId` | number | `rowMapping` | [number, number][] | **Returns:** *void* ___ ### setSheetContent ▸ **setSheetContent**(`sheetId`: number, `values`: [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent)[][]): *void* *Defined in [src/CrudOperations.ts:283](https://github.com/handsontable/hyperformula/blob/a18429c/src/CrudOperations.ts#L283)* **Parameters:** Name | Type | ------ | ------ | `sheetId` | number | `values` | [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent)[][] | **Returns:** *void* ___ ### testColumnOrderForArrays ▸ **testColumnOrderForArrays**(`sheetId`: number, `columnMapping`: [number, number][]): *void* *Defined in [src/CrudOperations.ts:311](https://github.com/handsontable/hyperformula/blob/a18429c/src/CrudOperations.ts#L311)* **Parameters:** Name | Type | ------ | ------ | `sheetId` | number | `columnMapping` | [number, number][] | **Returns:** *void* ___ ### testRowOrderForArrays ▸ **testRowOrderForArrays**(`sheetId`: number, `rowMapping`: [number, number][]): *void* *Defined in [src/CrudOperations.ts:338](https://github.com/handsontable/hyperformula/blob/a18429c/src/CrudOperations.ts#L338)* **Parameters:** Name | Type | ------ | ------ | `sheetId` | number | `rowMapping` | [number, number][] | **Returns:** *void* ___ ### undo ▸ **undo**(): *void* *Defined in [src/CrudOperations.ts:366](https://github.com/handsontable/hyperformula/blob/a18429c/src/CrudOperations.ts#L366)* **Returns:** *void* ___ ### validateSwapColumnIndexes ▸ **validateSwapColumnIndexes**(`sheetId`: number, `columnMapping`: [number, number][]): *void* *Defined in [src/CrudOperations.ts:331](https://github.com/handsontable/hyperformula/blob/a18429c/src/CrudOperations.ts#L331)* **Parameters:** Name | Type | ------ | ------ | `sheetId` | number | `columnMapping` | [number, number][] | **Returns:** *void* ___ ### validateSwapRowIndexes ▸ **validateSwapRowIndexes**(`sheetId`: number, `rowMapping`: [number, number][]): *void* *Defined in [src/CrudOperations.ts:304](https://github.com/handsontable/hyperformula/blob/a18429c/src/CrudOperations.ts#L304)* **Parameters:** Name | Type | ------ | ------ | `sheetId` | number | `rowMapping` | [number, number][] | **Returns:** *void* --- ## ContentChanges URL: https://hyperformula.handsontable.com/docs/api/classes/contentchanges # ContentChanges ## Methods ### addAll ▸ **addAll**(`other`: [ContentChanges](https://hyperformula.handsontable.com/docs/api/classes/contentchanges.md)): *[ContentChanges](https://hyperformula.handsontable.com/docs/api/classes/contentchanges.md)* *Defined in [src/ContentChanges.ts:29](https://github.com/handsontable/hyperformula/blob/a18429c/src/ContentChanges.ts#L29)* **Parameters:** Name | Type | ------ | ------ | `other` | [ContentChanges](https://hyperformula.handsontable.com/docs/api/classes/contentchanges.md) | **Returns:** *[ContentChanges](https://hyperformula.handsontable.com/docs/api/classes/contentchanges.md)* ___ ### addChange ▸ **addChange**(`newValue`: InterpreterValue, `address`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), `oldValue?`: InterpreterValue): *void* *Defined in [src/ContentChanges.ts:36](https://github.com/handsontable/hyperformula/blob/a18429c/src/ContentChanges.ts#L36)* **Parameters:** Name | Type | ------ | ------ | `newValue` | InterpreterValue | `address` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | `oldValue?` | InterpreterValue | **Returns:** *void* ___ ### exportChanges ▸ **exportChanges**‹**T**›(`exporter`: [ChangeExporter](https://hyperformula.handsontable.com/docs/api/interfaces/changeexporter.md)‹T›): *T[]* *Defined in [src/ContentChanges.ts:40](https://github.com/handsontable/hyperformula/blob/a18429c/src/ContentChanges.ts#L40)* **Type parameters:** ▪ **T** **Parameters:** Name | Type | ------ | ------ | `exporter` | [ChangeExporter](https://hyperformula.handsontable.com/docs/api/interfaces/changeexporter.md)‹T› | **Returns:** *T[]* ___ ### getChanges ▸ **getChanges**(): *[ChangeList](https://hyperformula.handsontable.com/docs/api/globals.md#changelist)* *Defined in [src/ContentChanges.ts:53](https://github.com/handsontable/hyperformula/blob/a18429c/src/ContentChanges.ts#L53)* **Returns:** *[ChangeList](https://hyperformula.handsontable.com/docs/api/globals.md#changelist)* ___ ### isEmpty ▸ **isEmpty**(): *boolean* *Defined in [src/ContentChanges.ts:57](https://github.com/handsontable/hyperformula/blob/a18429c/src/ContentChanges.ts#L57)* **Returns:** *boolean* ___ ### empty ▸ **empty**(): *[ContentChanges](https://hyperformula.handsontable.com/docs/api/classes/contentchanges.md)‹›* *Defined in [src/ContentChanges.ts:25](https://github.com/handsontable/hyperformula/blob/a18429c/src/ContentChanges.ts#L25)* **Returns:** *[ContentChanges](https://hyperformula.handsontable.com/docs/api/classes/contentchanges.md)‹›* --- ## DetailedCellError URL: https://hyperformula.handsontable.com/docs/api/classes/detailedcellerror # DetailedCellError ## Constructors ### constructor \+ **new DetailedCellError**(`error`: [CellError](https://hyperformula.handsontable.com/docs/api/classes/cellerror.md), `value`: string, `address?`: undefined | string): *[DetailedCellError](https://hyperformula.handsontable.com/docs/api/classes/detailedcellerror.md)* *Defined in [src/CellValue.ts:13](https://github.com/handsontable/hyperformula/blob/a18429c/src/CellValue.ts#L13)* **Parameters:** Name | Type | ------ | ------ | `error` | [CellError](https://hyperformula.handsontable.com/docs/api/classes/cellerror.md) | `value` | string | `address?` | undefined | string | **Returns:** *[DetailedCellError](https://hyperformula.handsontable.com/docs/api/classes/detailedcellerror.md)* ## Properties ### address • **address**? : *undefined | string* *Defined in [src/CellValue.ts:18](https://github.com/handsontable/hyperformula/blob/a18429c/src/CellValue.ts#L18)* ___ ### message • **message**: *string* *Defined in [src/CellValue.ts:13](https://github.com/handsontable/hyperformula/blob/a18429c/src/CellValue.ts#L13)* ___ ### type • **type**: *[ErrorType](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-errortype)* *Defined in [src/CellValue.ts:12](https://github.com/handsontable/hyperformula/blob/a18429c/src/CellValue.ts#L12)* ___ ### value • **value**: *string* *Defined in [src/CellValue.ts:17](https://github.com/handsontable/hyperformula/blob/a18429c/src/CellValue.ts#L17)* ## Methods ### toString ▸ **toString**(): *string* *Defined in [src/CellValue.ts:24](https://github.com/handsontable/hyperformula/blob/a18429c/src/CellValue.ts#L24)* **Returns:** *string* ___ ### valueOf ▸ **valueOf**(): *string* *Defined in [src/CellValue.ts:28](https://github.com/handsontable/hyperformula/blob/a18429c/src/CellValue.ts#L28)* **Returns:** *string* --- ## Emitter URL: https://hyperformula.handsontable.com/docs/api/classes/emitter # Emitter ## Methods ### emit ▸ **emit**‹**Event**›(`event`: Event, ...`args`: Parameters‹Listeners[Event]›): *this* *Defined in [src/Emitter.ts:328](https://github.com/handsontable/hyperformula/blob/a18429c/src/Emitter.ts#L328)* **Type parameters:** ▪ **Event**: *keyof Listeners* **Parameters:** Name | Type | ------ | ------ | `event` | Event | `...args` | Parameters‹Listeners[Event]› | **Returns:** *this* ___ ### off ▸ **off**(`event`: string, `callback?`: Function): *this* **Parameters:** Name | Type | ------ | ------ | `event` | string | `callback?` | Function | **Returns:** *this* ___ ### on ▸ **on**(`event`: string, `callback`: Function, `ctx?`: any): *this* **Parameters:** Name | Type | ------ | ------ | `event` | string | `callback` | Function | `ctx?` | any | **Returns:** *this* ___ ### once ▸ **once**(`event`: string, `callback`: Function, `ctx?`: any): *this* **Parameters:** Name | Type | ------ | ------ | `event` | string | `callback` | Function | `ctx?` | any | **Returns:** *this* --- ## DateTimeHelper URL: https://hyperformula.handsontable.com/docs/api/classes/datetimehelper # DateTimeHelper ## Constructors ### constructor \+ **new DateTimeHelper**(`config`: [Config](https://hyperformula.handsontable.com/docs/api/classes/config.md)): *[DateTimeHelper](https://hyperformula.handsontable.com/docs/api/classes/datetimehelper.md)* *Defined in [src/DateTimeHelper.ts:58](https://github.com/handsontable/hyperformula/blob/a18429c/src/DateTimeHelper.ts#L58)* **Parameters:** Name | Type | ------ | ------ | `config` | [Config](https://hyperformula.handsontable.com/docs/api/classes/config.md) | **Returns:** *[DateTimeHelper](https://hyperformula.handsontable.com/docs/api/classes/datetimehelper.md)* ## Methods ### dateStringToDateNumber ▸ **dateStringToDateNumber**(`dateTimeString`: string): *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹ExtendedNumber›* *Defined in [src/DateTimeHelper.ts:81](https://github.com/handsontable/hyperformula/blob/a18429c/src/DateTimeHelper.ts#L81)* **Parameters:** Name | Type | ------ | ------ | `dateTimeString` | string | **Returns:** *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹ExtendedNumber›* ___ ### dateToNumber ▸ **dateToNumber**(`date`: [SimpleDate](https://hyperformula.handsontable.com/docs/api/interfaces/simpledate.md)): *number* *Defined in [src/DateTimeHelper.ts:131](https://github.com/handsontable/hyperformula/blob/a18429c/src/DateTimeHelper.ts#L131)* **Parameters:** Name | Type | ------ | ------ | `date` | [SimpleDate](https://hyperformula.handsontable.com/docs/api/interfaces/simpledate.md) | **Returns:** *number* ___ ### daysInMonth ▸ **daysInMonth**(`year`: number, `month`: number): *number* *Defined in [src/DateTimeHelper.ts:167](https://github.com/handsontable/hyperformula/blob/a18429c/src/DateTimeHelper.ts#L167)* **Parameters:** Name | Type | ------ | ------ | `year` | number | `month` | number | **Returns:** *number* ___ ### endOfMonth ▸ **endOfMonth**(`date`: [SimpleDate](https://hyperformula.handsontable.com/docs/api/interfaces/simpledate.md)): *[SimpleDate](https://hyperformula.handsontable.com/docs/api/interfaces/simpledate.md)* *Defined in [src/DateTimeHelper.ts:175](https://github.com/handsontable/hyperformula/blob/a18429c/src/DateTimeHelper.ts#L175)* **Parameters:** Name | Type | ------ | ------ | `date` | [SimpleDate](https://hyperformula.handsontable.com/docs/api/interfaces/simpledate.md) | **Returns:** *[SimpleDate](https://hyperformula.handsontable.com/docs/api/interfaces/simpledate.md)* ___ ### getEpochYearZero ▸ **getEpochYearZero**(): *number* *Defined in [src/DateTimeHelper.ts:109](https://github.com/handsontable/hyperformula/blob/a18429c/src/DateTimeHelper.ts#L109)* **Returns:** *number* ___ ### getNullYear ▸ **getNullYear**(): *number* *Defined in [src/DateTimeHelper.ts:105](https://github.com/handsontable/hyperformula/blob/a18429c/src/DateTimeHelper.ts#L105)* **Returns:** *number* ___ ### getWithinBounds ▸ **getWithinBounds**(`dayNumber`: number): *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹number›* *Defined in [src/DateTimeHelper.ts:77](https://github.com/handsontable/hyperformula/blob/a18429c/src/DateTimeHelper.ts#L77)* **Parameters:** Name | Type | ------ | ------ | `dayNumber` | number | **Returns:** *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹number›* ___ ### isValidDate ▸ **isValidDate**(`date`: [SimpleDate](https://hyperformula.handsontable.com/docs/api/interfaces/simpledate.md)): *boolean* *Defined in [src/DateTimeHelper.ts:113](https://github.com/handsontable/hyperformula/blob/a18429c/src/DateTimeHelper.ts#L113)* **Parameters:** Name | Type | ------ | ------ | `date` | [SimpleDate](https://hyperformula.handsontable.com/docs/api/interfaces/simpledate.md) | **Returns:** *boolean* ___ ### leapYearsCount ▸ **leapYearsCount**(`year`: number): *number* *Defined in [src/DateTimeHelper.ts:163](https://github.com/handsontable/hyperformula/blob/a18429c/src/DateTimeHelper.ts#L163)* **Parameters:** Name | Type | ------ | ------ | `year` | number | **Returns:** *number* ___ ### numberToSimpleDate ▸ **numberToSimpleDate**(`arg`: number): *[SimpleDate](https://hyperformula.handsontable.com/docs/api/interfaces/simpledate.md)* *Defined in [src/DateTimeHelper.ts:139](https://github.com/handsontable/hyperformula/blob/a18429c/src/DateTimeHelper.ts#L139)* **Parameters:** Name | Type | ------ | ------ | `arg` | number | **Returns:** *[SimpleDate](https://hyperformula.handsontable.com/docs/api/interfaces/simpledate.md)* ___ ### numberToSimpleDateTime ▸ **numberToSimpleDateTime**(`arg`: number): *[SimpleDateTime](https://hyperformula.handsontable.com/docs/api/globals.md#simpledatetime)* *Defined in [src/DateTimeHelper.ts:154](https://github.com/handsontable/hyperformula/blob/a18429c/src/DateTimeHelper.ts#L154)* **Parameters:** Name | Type | ------ | ------ | `arg` | number | **Returns:** *[SimpleDateTime](https://hyperformula.handsontable.com/docs/api/globals.md#simpledatetime)* ___ ### parseDateTimeFromConfigFormats ▸ **parseDateTimeFromConfigFormats**(`dateTimeString`: string): *Partial‹object›* *Defined in [src/DateTimeHelper.ts:101](https://github.com/handsontable/hyperformula/blob/a18429c/src/DateTimeHelper.ts#L101)* **Parameters:** Name | Type | ------ | ------ | `dateTimeString` | string | **Returns:** *Partial‹object›* ___ ### relativeNumberToAbsoluteNumber ▸ **relativeNumberToAbsoluteNumber**(`arg`: number): *number* *Defined in [src/DateTimeHelper.ts:135](https://github.com/handsontable/hyperformula/blob/a18429c/src/DateTimeHelper.ts#L135)* **Parameters:** Name | Type | ------ | ------ | `arg` | number | **Returns:** *number* ___ ### toBasisUS ▸ **toBasisUS**(`start`: [SimpleDate](https://hyperformula.handsontable.com/docs/api/interfaces/simpledate.md), `end`: [SimpleDate](https://hyperformula.handsontable.com/docs/api/interfaces/simpledate.md)): *[[SimpleDate](https://hyperformula.handsontable.com/docs/api/interfaces/simpledate.md), [SimpleDate](https://hyperformula.handsontable.com/docs/api/interfaces/simpledate.md)]* *Defined in [src/DateTimeHelper.ts:179](https://github.com/handsontable/hyperformula/blob/a18429c/src/DateTimeHelper.ts#L179)* **Parameters:** Name | Type | ------ | ------ | `start` | [SimpleDate](https://hyperformula.handsontable.com/docs/api/interfaces/simpledate.md) | `end` | [SimpleDate](https://hyperformula.handsontable.com/docs/api/interfaces/simpledate.md) | **Returns:** *[[SimpleDate](https://hyperformula.handsontable.com/docs/api/interfaces/simpledate.md), [SimpleDate](https://hyperformula.handsontable.com/docs/api/interfaces/simpledate.md)]* ___ ### yearLengthForBasis ▸ **yearLengthForBasis**(`start`: [SimpleDate](https://hyperformula.handsontable.com/docs/api/interfaces/simpledate.md), `end`: [SimpleDate](https://hyperformula.handsontable.com/docs/api/interfaces/simpledate.md)): *number* *Defined in [src/DateTimeHelper.ts:195](https://github.com/handsontable/hyperformula/blob/a18429c/src/DateTimeHelper.ts#L195)* **Parameters:** Name | Type | ------ | ------ | `start` | [SimpleDate](https://hyperformula.handsontable.com/docs/api/interfaces/simpledate.md) | `end` | [SimpleDate](https://hyperformula.handsontable.com/docs/api/interfaces/simpledate.md) | **Returns:** *number* --- ## EvaluationSuspendedError URL: https://hyperformula.handsontable.com/docs/api/classes/evaluationsuspendederror # EvaluationSuspendedError Error thrown when computations become suspended. To perform any other action wait for the batch to complete or resume the evaluation. Relates to: **`see`** [batch](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#batch) **`see`** [suspendEvaluation](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#suspendevaluation) **`see`** [resumeEvaluation](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#resumeevaluation) ## Constructors ### constructor \+ **new EvaluationSuspendedError**(): *[EvaluationSuspendedError](https://hyperformula.handsontable.com/docs/api/classes/evaluationsuspendederror.md)* *Defined in [src/errors.ts:257](https://github.com/handsontable/hyperformula/blob/a18429c/src/errors.ts#L257)* **Returns:** *[EvaluationSuspendedError](https://hyperformula.handsontable.com/docs/api/classes/evaluationsuspendederror.md)* ## Properties ### message • **message**: *string* ___ ### name • **name**: *string* ___ ### stack • **stack**? : *undefined | string* ___ ### Error ▪ **Error**: *ErrorConstructor* --- ## ExpectedValueOfTypeError URL: https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror # ExpectedValueOfTypeError Error thrown when the expected value type differs from the given value type. It also displays the expected type. This error might be thrown while setting or updating the [ConfigParams](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md). The following methods accept [ConfigParams](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md) as a parameter: **`see`** [buildEmpty](https://hyperformula.handsontable.com/docs/api/classes/buildenginefactory.md#static-buildempty) **`see`** [buildFromArray](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#static-buildfromarray) **`see`** [buildFromSheets](https://hyperformula.handsontable.com/docs/api/classes/buildenginefactory.md#static-buildfromsheets) **`see`** [updateConfig](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#updateconfig) ## Constructors ### constructor \+ **new ExpectedValueOfTypeError**(`expectedType`: string, `paramName`: string): *[ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md)* *Defined in [src/errors.ts:177](https://github.com/handsontable/hyperformula/blob/a18429c/src/errors.ts#L177)* **Parameters:** Name | Type | ------ | ------ | `expectedType` | string | `paramName` | string | **Returns:** *[ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md)* ## Properties ### message • **message**: *string* ___ ### name • **name**: *string* ___ ### stack • **stack**? : *undefined | string* ___ ### Error ▪ **Error**: *ErrorConstructor* --- ## ExpectedOneOfValuesError URL: https://hyperformula.handsontable.com/docs/api/classes/expectedoneofvalueserror # ExpectedOneOfValuesError Error thrown when the value was expected to be set for a config parameter. It also displays the expected value. This error might be thrown while setting or updating the [ConfigParams](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md). The following methods accept [ConfigParams](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md) as a parameter: **`see`** [buildEmpty](https://hyperformula.handsontable.com/docs/api/classes/buildenginefactory.md#static-buildempty) **`see`** [buildFromArray](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#static-buildfromarray) **`see`** [buildFromSheets](https://hyperformula.handsontable.com/docs/api/classes/buildenginefactory.md#static-buildfromsheets) **`see`** [updateConfig](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#updateconfig) ## Constructors ### constructor \+ **new ExpectedOneOfValuesError**(`values`: string, `paramName`: string): *[ExpectedOneOfValuesError](https://hyperformula.handsontable.com/docs/api/classes/expectedoneofvalueserror.md)* *Defined in [src/errors.ts:242](https://github.com/handsontable/hyperformula/blob/a18429c/src/errors.ts#L242)* **Parameters:** Name | Type | ------ | ------ | `values` | string | `paramName` | string | **Returns:** *[ExpectedOneOfValuesError](https://hyperformula.handsontable.com/docs/api/classes/expectedoneofvalueserror.md)* ## Properties ### message • **message**: *string* ___ ### name • **name**: *string* ___ ### stack • **stack**? : *undefined | string* ___ ### Error ▪ **Error**: *ErrorConstructor* --- ## ExportedCellChange URL: https://hyperformula.handsontable.com/docs/api/classes/exportedcellchange # ExportedCellChange A list of cells which values changed after the operation, their absolute addresses and new values. ## Constructors ### constructor \+ **new ExportedCellChange**(`address`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), `newValue`: [CellValue](https://hyperformula.handsontable.com/docs/api/globals.md#cellvalue)): *[ExportedCellChange](https://hyperformula.handsontable.com/docs/api/classes/exportedcellchange.md)* *Defined in [src/Exporter.ts:23](https://github.com/handsontable/hyperformula/blob/a18429c/src/Exporter.ts#L23)* **Parameters:** Name | Type | ------ | ------ | `address` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | `newValue` | [CellValue](https://hyperformula.handsontable.com/docs/api/globals.md#cellvalue) | **Returns:** *[ExportedCellChange](https://hyperformula.handsontable.com/docs/api/classes/exportedcellchange.md)* ## Properties ### address • **address**: *[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)* *Defined in [src/Exporter.ts:25](https://github.com/handsontable/hyperformula/blob/a18429c/src/Exporter.ts#L25)* ___ ### newValue • **newValue**: *[CellValue](https://hyperformula.handsontable.com/docs/api/globals.md#cellvalue)* *Defined in [src/Exporter.ts:26](https://github.com/handsontable/hyperformula/blob/a18429c/src/Exporter.ts#L26)* ## Accessors ### col • **get col**(): *number* *Defined in [src/Exporter.ts:30](https://github.com/handsontable/hyperformula/blob/a18429c/src/Exporter.ts#L30)* **Returns:** *number* ___ ### row • **get row**(): *number* *Defined in [src/Exporter.ts:34](https://github.com/handsontable/hyperformula/blob/a18429c/src/Exporter.ts#L34)* **Returns:** *number* ___ ### sheet • **get sheet**(): *number* *Defined in [src/Exporter.ts:38](https://github.com/handsontable/hyperformula/blob/a18429c/src/Exporter.ts#L38)* **Returns:** *number* ___ ### value • **get value**(): *[CellValue](https://hyperformula.handsontable.com/docs/api/globals.md#cellvalue)* *Defined in [src/Exporter.ts:42](https://github.com/handsontable/hyperformula/blob/a18429c/src/Exporter.ts#L42)* **Returns:** *[CellValue](https://hyperformula.handsontable.com/docs/api/globals.md#cellvalue)* --- ## FunctionPluginValidationError URL: https://hyperformula.handsontable.com/docs/api/classes/functionpluginvalidationerror # FunctionPluginValidationError Error thrown when function plugin is invalid. **`see`** [registerFunction](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#static-registerfunction) **`see`** [registerFunctionPlugin](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#static-registerfunctionplugin) **`see`** [buildFromArray](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#static-buildfromarray) **`see`** [buildFromSheets](https://hyperformula.handsontable.com/docs/api/classes/buildenginefactory.md#static-buildfromsheets) ## Properties ### message • **message**: *string* ___ ### name • **name**: *string* ___ ### stack • **stack**? : *undefined | string* ___ ### Error ▪ **Error**: *ErrorConstructor* ## Methods ### functionMethodNotFound ▸ **functionMethodNotFound**(`functionName`: string, `pluginName`: string): *[FunctionPluginValidationError](https://hyperformula.handsontable.com/docs/api/classes/functionpluginvalidationerror.md)* *Defined in [src/errors.ts:321](https://github.com/handsontable/hyperformula/blob/a18429c/src/errors.ts#L321)* **Parameters:** Name | Type | ------ | ------ | `functionName` | string | `pluginName` | string | **Returns:** *[FunctionPluginValidationError](https://hyperformula.handsontable.com/docs/api/classes/functionpluginvalidationerror.md)* ___ ### functionNotDeclaredInPlugin ▸ **functionNotDeclaredInPlugin**(`functionId`: string, `pluginName`: string): *[FunctionPluginValidationError](https://hyperformula.handsontable.com/docs/api/classes/functionpluginvalidationerror.md)* *Defined in [src/errors.ts:317](https://github.com/handsontable/hyperformula/blob/a18429c/src/errors.ts#L317)* **Parameters:** Name | Type | ------ | ------ | `functionId` | string | `pluginName` | string | **Returns:** *[FunctionPluginValidationError](https://hyperformula.handsontable.com/docs/api/classes/functionpluginvalidationerror.md)* --- ## Evaluator URL: https://hyperformula.handsontable.com/docs/api/classes/evaluator # Evaluator ## Constructors ### constructor \+ **new Evaluator**(`config`: [Config](https://hyperformula.handsontable.com/docs/api/classes/config.md), `stats`: [Statistics](https://hyperformula.handsontable.com/docs/api/classes/statistics.md), `interpreter`: Interpreter, `lazilyTransformingAstService`: [LazilyTransformingAstService](https://hyperformula.handsontable.com/docs/api/classes/lazilytransformingastservice.md), `dependencyGraph`: DependencyGraph, `columnSearch`: [ColumnSearchStrategy](https://hyperformula.handsontable.com/docs/api/interfaces/columnsearchstrategy.md)): *[Evaluator](https://hyperformula.handsontable.com/docs/api/classes/evaluator.md)* *Defined in [src/Evaluator.ts:22](https://github.com/handsontable/hyperformula/blob/a18429c/src/Evaluator.ts#L22)* **Parameters:** Name | Type | ------ | ------ | `config` | [Config](https://hyperformula.handsontable.com/docs/api/classes/config.md) | `stats` | [Statistics](https://hyperformula.handsontable.com/docs/api/classes/statistics.md) | `interpreter` | Interpreter | `lazilyTransformingAstService` | [LazilyTransformingAstService](https://hyperformula.handsontable.com/docs/api/classes/lazilytransformingastservice.md) | `dependencyGraph` | DependencyGraph | `columnSearch` | [ColumnSearchStrategy](https://hyperformula.handsontable.com/docs/api/interfaces/columnsearchstrategy.md) | **Returns:** *[Evaluator](https://hyperformula.handsontable.com/docs/api/classes/evaluator.md)* ## Properties ### interpreter • **interpreter**: *Interpreter* *Defined in [src/Evaluator.ts:27](https://github.com/handsontable/hyperformula/blob/a18429c/src/Evaluator.ts#L27)* ## Methods ### partialRun ▸ **partialRun**(`vertices`: Vertex[]): *[ContentChanges](https://hyperformula.handsontable.com/docs/api/classes/contentchanges.md)* *Defined in [src/Evaluator.ts:44](https://github.com/handsontable/hyperformula/blob/a18429c/src/Evaluator.ts#L44)* **Parameters:** Name | Type | ------ | ------ | `vertices` | Vertex[] | **Returns:** *[ContentChanges](https://hyperformula.handsontable.com/docs/api/classes/contentchanges.md)* ___ ### run ▸ **run**(): *void* *Defined in [src/Evaluator.ts:34](https://github.com/handsontable/hyperformula/blob/a18429c/src/Evaluator.ts#L34)* **Returns:** *void* ___ ### runAndForget ▸ **runAndForget**(`ast`: Ast, `address`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), `dependencies`: RelativeDependency[]): *InterpreterValue* *Defined in [src/Evaluator.ts:56](https://github.com/handsontable/hyperformula/blob/a18429c/src/Evaluator.ts#L56)* **Parameters:** Name | Type | ------ | ------ | `ast` | Ast | `address` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | `dependencies` | RelativeDependency[] | **Returns:** *InterpreterValue* --- ## GraphBuilder URL: https://hyperformula.handsontable.com/docs/api/classes/graphbuilder # GraphBuilder Service building the graph and mappings. ## Constructors ### constructor \+ **new GraphBuilder**(`dependencyGraph`: DependencyGraph, `columnSearch`: [ColumnSearchStrategy](https://hyperformula.handsontable.com/docs/api/interfaces/columnsearchstrategy.md), `parser`: ParserWithCaching, `cellContentParser`: [CellContentParser](https://hyperformula.handsontable.com/docs/api/classes/cellcontentparser.md), `stats`: [Statistics](https://hyperformula.handsontable.com/docs/api/classes/statistics.md), `arraySizePredictor`: [ArraySizePredictor](https://hyperformula.handsontable.com/docs/api/classes/arraysizepredictor.md)): *[GraphBuilder](https://hyperformula.handsontable.com/docs/api/classes/graphbuilder.md)* *Defined in [src/GraphBuilder.ts:31](https://github.com/handsontable/hyperformula/blob/a18429c/src/GraphBuilder.ts#L31)* Configures the building service. **Parameters:** Name | Type | ------ | ------ | `dependencyGraph` | DependencyGraph | `columnSearch` | [ColumnSearchStrategy](https://hyperformula.handsontable.com/docs/api/interfaces/columnsearchstrategy.md) | `parser` | ParserWithCaching | `cellContentParser` | [CellContentParser](https://hyperformula.handsontable.com/docs/api/classes/cellcontentparser.md) | `stats` | [Statistics](https://hyperformula.handsontable.com/docs/api/classes/statistics.md) | `arraySizePredictor` | [ArraySizePredictor](https://hyperformula.handsontable.com/docs/api/classes/arraysizepredictor.md) | **Returns:** *[GraphBuilder](https://hyperformula.handsontable.com/docs/api/classes/graphbuilder.md)* ## Methods ### buildGraph ▸ **buildGraph**(`sheets`: [Sheets](https://hyperformula.handsontable.com/docs/api/globals.md#sheets), `stats`: [Statistics](https://hyperformula.handsontable.com/docs/api/classes/statistics.md)): *void* *Defined in [src/GraphBuilder.ts:50](https://github.com/handsontable/hyperformula/blob/a18429c/src/GraphBuilder.ts#L50)* Builds graph. **Parameters:** Name | Type | ------ | ------ | `sheets` | [Sheets](https://hyperformula.handsontable.com/docs/api/globals.md#sheets) | `stats` | [Statistics](https://hyperformula.handsontable.com/docs/api/classes/statistics.md) | **Returns:** *void* --- ## ErroredArray URL: https://hyperformula.handsontable.com/docs/api/classes/erroredarray # ErroredArray ## Constructors ### constructor \+ **new ErroredArray**(`error`: [CellError](https://hyperformula.handsontable.com/docs/api/classes/cellerror.md), `size`: [ArraySize](https://hyperformula.handsontable.com/docs/api/classes/arraysize.md)): *[ErroredArray](https://hyperformula.handsontable.com/docs/api/classes/erroredarray.md)* *Defined in [src/ArrayValue.ts:156](https://github.com/handsontable/hyperformula/blob/a18429c/src/ArrayValue.ts#L156)* **Parameters:** Name | Type | ------ | ------ | `error` | [CellError](https://hyperformula.handsontable.com/docs/api/classes/cellerror.md) | `size` | [ArraySize](https://hyperformula.handsontable.com/docs/api/classes/arraysize.md) | **Returns:** *[ErroredArray](https://hyperformula.handsontable.com/docs/api/classes/erroredarray.md)* ## Properties ### size • **size**: *[ArraySize](https://hyperformula.handsontable.com/docs/api/classes/arraysize.md)* *Defined in [src/ArrayValue.ts:159](https://github.com/handsontable/hyperformula/blob/a18429c/src/ArrayValue.ts#L159)* ## Methods ### get ▸ **get**(`col`: number, `row`: number): *[CellError](https://hyperformula.handsontable.com/docs/api/classes/cellerror.md)* *Defined in [src/ArrayValue.ts:164](https://github.com/handsontable/hyperformula/blob/a18429c/src/ArrayValue.ts#L164)* **Parameters:** Name | Type | ------ | ------ | `col` | number | `row` | number | **Returns:** *[CellError](https://hyperformula.handsontable.com/docs/api/classes/cellerror.md)* ___ ### height ▸ **height**(): *number* *Defined in [src/ArrayValue.ts:172](https://github.com/handsontable/hyperformula/blob/a18429c/src/ArrayValue.ts#L172)* **Returns:** *number* ___ ### simpleRangeValue ▸ **simpleRangeValue**(): *[CellError](https://hyperformula.handsontable.com/docs/api/classes/cellerror.md)* *Defined in [src/ArrayValue.ts:176](https://github.com/handsontable/hyperformula/blob/a18429c/src/ArrayValue.ts#L176)* **Returns:** *[CellError](https://hyperformula.handsontable.com/docs/api/classes/cellerror.md)* ___ ### width ▸ **width**(): *number* *Defined in [src/ArrayValue.ts:168](https://github.com/handsontable/hyperformula/blob/a18429c/src/ArrayValue.ts#L168)* **Returns:** *number* --- ## Exporter URL: https://hyperformula.handsontable.com/docs/api/classes/exporter # Exporter ## Constructors ### constructor \+ **new Exporter**(`config`: [Config](https://hyperformula.handsontable.com/docs/api/classes/config.md), `namedExpressions`: [NamedExpressions](https://hyperformula.handsontable.com/docs/api/classes/namedexpressions.md), `sheetMapping`: SheetMapping, `lazilyTransformingService`: [LazilyTransformingAstService](https://hyperformula.handsontable.com/docs/api/classes/lazilytransformingastservice.md)): *[Exporter](https://hyperformula.handsontable.com/docs/api/classes/exporter.md)* *Defined in [src/Exporter.ts:55](https://github.com/handsontable/hyperformula/blob/a18429c/src/Exporter.ts#L55)* **Parameters:** Name | Type | ------ | ------ | `config` | [Config](https://hyperformula.handsontable.com/docs/api/classes/config.md) | `namedExpressions` | [NamedExpressions](https://hyperformula.handsontable.com/docs/api/classes/namedexpressions.md) | `sheetMapping` | SheetMapping | `lazilyTransformingService` | [LazilyTransformingAstService](https://hyperformula.handsontable.com/docs/api/classes/lazilytransformingastservice.md) | **Returns:** *[Exporter](https://hyperformula.handsontable.com/docs/api/classes/exporter.md)* ## Methods ### exportChange ▸ **exportChange**(`change`: [CellValueChange](https://hyperformula.handsontable.com/docs/api/interfaces/cellvaluechange.md)): *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange) | [ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* *Defined in [src/Exporter.ts:64](https://github.com/handsontable/hyperformula/blob/a18429c/src/Exporter.ts#L64)* **Parameters:** Name | Type | ------ | ------ | `change` | [CellValueChange](https://hyperformula.handsontable.com/docs/api/interfaces/cellvaluechange.md) | **Returns:** *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange) | [ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* ___ ### exportScalarOrRange ▸ **exportScalarOrRange**(`value`: InterpreterValue): *[CellValue](https://hyperformula.handsontable.com/docs/api/globals.md#cellvalue) | [CellValue](https://hyperformula.handsontable.com/docs/api/globals.md#cellvalue)[][]* *Defined in [src/Exporter.ts:108](https://github.com/handsontable/hyperformula/blob/a18429c/src/Exporter.ts#L108)* **Parameters:** Name | Type | ------ | ------ | `value` | InterpreterValue | **Returns:** *[CellValue](https://hyperformula.handsontable.com/docs/api/globals.md#cellvalue) | [CellValue](https://hyperformula.handsontable.com/docs/api/globals.md#cellvalue)[][]* ___ ### exportValue ▸ **exportValue**(`value`: InterpreterValue): *[CellValue](https://hyperformula.handsontable.com/docs/api/globals.md#cellvalue)* *Defined in [src/Exporter.ts:94](https://github.com/handsontable/hyperformula/blob/a18429c/src/Exporter.ts#L94)* **Parameters:** Name | Type | ------ | ------ | `value` | InterpreterValue | **Returns:** *[CellValue](https://hyperformula.handsontable.com/docs/api/globals.md#cellvalue)* --- ## InternalNamedExpression URL: https://hyperformula.handsontable.com/docs/api/classes/internalnamedexpression # InternalNamedExpression ## Constructors ### constructor \+ **new InternalNamedExpression**(`displayName`: string, `address`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), `added`: boolean, `options?`: [NamedExpressionOptions](https://hyperformula.handsontable.com/docs/api/globals.md#namedexpressionoptions)): *[InternalNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/internalnamedexpression.md)* *Defined in [src/NamedExpressions.ts:24](https://github.com/handsontable/hyperformula/blob/a18429c/src/NamedExpressions.ts#L24)* **Parameters:** Name | Type | ------ | ------ | `displayName` | string | `address` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | `added` | boolean | `options?` | [NamedExpressionOptions](https://hyperformula.handsontable.com/docs/api/globals.md#namedexpressionoptions) | **Returns:** *[InternalNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/internalnamedexpression.md)* ## Properties ### added • **added**: *boolean* *Defined in [src/NamedExpressions.ts:28](https://github.com/handsontable/hyperformula/blob/a18429c/src/NamedExpressions.ts#L28)* ___ ### address • **address**: *[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)* *Defined in [src/NamedExpressions.ts:27](https://github.com/handsontable/hyperformula/blob/a18429c/src/NamedExpressions.ts#L27)* ___ ### displayName • **displayName**: *string* *Defined in [src/NamedExpressions.ts:26](https://github.com/handsontable/hyperformula/blob/a18429c/src/NamedExpressions.ts#L26)* ___ ### options • **options**? : *[NamedExpressionOptions](https://hyperformula.handsontable.com/docs/api/globals.md#namedexpressionoptions)* *Defined in [src/NamedExpressions.ts:29](https://github.com/handsontable/hyperformula/blob/a18429c/src/NamedExpressions.ts#L29)* ## Methods ### copy ▸ **copy**(): *[InternalNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/internalnamedexpression.md)* *Defined in [src/NamedExpressions.ts:37](https://github.com/handsontable/hyperformula/blob/a18429c/src/NamedExpressions.ts#L37)* **Returns:** *[InternalNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/internalnamedexpression.md)* ___ ### normalizeExpressionName ▸ **normalizeExpressionName**(): *string* *Defined in [src/NamedExpressions.ts:33](https://github.com/handsontable/hyperformula/blob/a18429c/src/NamedExpressions.ts#L33)* **Returns:** *string* --- ## InvalidAddressError URL: https://hyperformula.handsontable.com/docs/api/classes/invalidaddresserror # InvalidAddressError Error thrown when the given address is invalid. ## Constructors ### constructor \+ **new InvalidAddressError**(`address`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *[InvalidAddressError](https://hyperformula.handsontable.com/docs/api/classes/invalidaddresserror.md)* *Defined in [src/errors.ts:56](https://github.com/handsontable/hyperformula/blob/a18429c/src/errors.ts#L56)* **Parameters:** Name | Type | ------ | ------ | `address` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | **Returns:** *[InvalidAddressError](https://hyperformula.handsontable.com/docs/api/classes/invalidaddresserror.md)* ## Properties ### message • **message**: *string* ___ ### name • **name**: *string* ___ ### stack • **stack**? : *undefined | string* ___ ### Error ▪ **Error**: *ErrorConstructor* --- ## InvalidArgumentsError URL: https://hyperformula.handsontable.com/docs/api/classes/invalidargumentserror # InvalidArgumentsError Error thrown when the given arguments are invalid ## Constructors ### constructor \+ **new InvalidArgumentsError**(`expectedArguments`: string): *[InvalidArgumentsError](https://hyperformula.handsontable.com/docs/api/classes/invalidargumentserror.md)* *Defined in [src/errors.ts:65](https://github.com/handsontable/hyperformula/blob/a18429c/src/errors.ts#L65)* **Parameters:** Name | Type | ------ | ------ | `expectedArguments` | string | **Returns:** *[InvalidArgumentsError](https://hyperformula.handsontable.com/docs/api/classes/invalidargumentserror.md)* ## Properties ### message • **message**: *string* ___ ### name • **name**: *string* ___ ### stack • **stack**? : *undefined | string* ___ ### Error ▪ **Error**: *ErrorConstructor* --- ## LanguageNotRegisteredError URL: https://hyperformula.handsontable.com/docs/api/classes/languagenotregisterederror # LanguageNotRegisteredError Error thrown when trying to retrieve not registered language **`see`** [getLanguage](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#static-getlanguage) **`see`** [unregisterLanguage](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#static-unregisterlanguage) ## Constructors ### constructor \+ **new LanguageNotRegisteredError**(): *[LanguageNotRegisteredError](https://hyperformula.handsontable.com/docs/api/classes/languagenotregisterederror.md)* *Defined in [src/errors.ts:291](https://github.com/handsontable/hyperformula/blob/a18429c/src/errors.ts#L291)* **Returns:** *[LanguageNotRegisteredError](https://hyperformula.handsontable.com/docs/api/classes/languagenotregisterederror.md)* ## Properties ### message • **message**: *string* ___ ### name • **name**: *string* ___ ### stack • **stack**? : *undefined | string* ___ ### Error ▪ **Error**: *ErrorConstructor* --- ## LazilyTransformingAstService URL: https://hyperformula.handsontable.com/docs/api/classes/lazilytransformingastservice # LazilyTransformingAstService Manages lazy application of formula AST transformations. ## Problem Structural operations (adding/removing rows/columns, moving cells, renaming sheets) require updating every formula that references the affected area. Applying these transformations eagerly to all formulas after every operation is expensive, especially for large spreadsheets with many formulas. ## Solution: Lazy Transformation Instead of transforming all formulas immediately, this service stores transformations in a queue. Each formula vertex (FormulaVertex) and column index entry (ValueIndex) tracks its own version number. When a consumer needs up-to-date data, it calls `applyTransformations()` with its current version and receives all transformations accumulated since that version. ## Compaction Over time, the transformations array grows unboundedly. To prevent this memory leak, the engine periodically triggers compaction when the number of accumulated transformations reaches the configurable `maxPendingLazyTransformations`: 1. All FormulaVertex instances are forced to apply pending transformations (via `DependencyGraph.forceApplyPostponedTransformations()`). 2. All ColumnIndex entries are forced to apply pending transformations (via `ColumnSearchStrategy.forceApplyPostponedTransformations()`). 3. `compact()` is called, which advances `versionOffset` and clears the transformations array. 4. `UndoRedo.cleanupOrphanedOldData()` removes any oldData entries that were written during forced application but belong to already-evicted undo entries. The `versionOffset` ensures that version numbers remain globally consistent after compaction: `version() = versionOffset + transformations.length`. ## Constructors ### constructor \+ **new LazilyTransformingAstService**(`stats`: [Statistics](https://hyperformula.handsontable.com/docs/api/classes/statistics.md), `maxPendingLazyTransformations`: number): *[LazilyTransformingAstService](https://hyperformula.handsontable.com/docs/api/classes/lazilytransformingastservice.md)* *Defined in [src/LazilyTransformingAstService.ts:54](https://github.com/handsontable/hyperformula/blob/a18429c/src/LazilyTransformingAstService.ts#L54)* **Parameters:** Name | Type | ------ | ------ | `stats` | [Statistics](https://hyperformula.handsontable.com/docs/api/classes/statistics.md) | `maxPendingLazyTransformations` | number | **Returns:** *[LazilyTransformingAstService](https://hyperformula.handsontable.com/docs/api/classes/lazilytransformingastservice.md)* ## Properties ### parser • **parser**? : *ParserWithCaching* *Defined in [src/LazilyTransformingAstService.ts:49](https://github.com/handsontable/hyperformula/blob/a18429c/src/LazilyTransformingAstService.ts#L49)* ___ ### undoRedo • **undoRedo**? : *[UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md)* *Defined in [src/LazilyTransformingAstService.ts:50](https://github.com/handsontable/hyperformula/blob/a18429c/src/LazilyTransformingAstService.ts#L50)* ## Methods ### addTransformation ▸ **addTransformation**(`transformation`: FormulaTransformer): *number* *Defined in [src/LazilyTransformingAstService.ts:66](https://github.com/handsontable/hyperformula/blob/a18429c/src/LazilyTransformingAstService.ts#L66)* **Parameters:** Name | Type | ------ | ------ | `transformation` | FormulaTransformer | **Returns:** *number* ___ ### applyTransformations ▸ **applyTransformations**(`ast`: Ast, `address`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), `version`: number): *[Ast, [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), number]* *Defined in [src/LazilyTransformingAstService.ts:88](https://github.com/handsontable/hyperformula/blob/a18429c/src/LazilyTransformingAstService.ts#L88)* **Parameters:** Name | Type | ------ | ------ | `ast` | Ast | `address` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | `version` | number | **Returns:** *[Ast, [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), number]* ___ ### beginCombinedMode ▸ **beginCombinedMode**(`sheet`: number): *void* *Defined in [src/LazilyTransformingAstService.ts:75](https://github.com/handsontable/hyperformula/blob/a18429c/src/LazilyTransformingAstService.ts#L75)* **Parameters:** Name | Type | ------ | ------ | `sheet` | number | **Returns:** *void* ___ ### commitCombinedMode ▸ **commitCombinedMode**(): *number* *Defined in [src/LazilyTransformingAstService.ts:79](https://github.com/handsontable/hyperformula/blob/a18429c/src/LazilyTransformingAstService.ts#L79)* **Returns:** *number* ___ ### compact ▸ **compact**(): *void* *Defined in [src/LazilyTransformingAstService.ts:135](https://github.com/handsontable/hyperformula/blob/a18429c/src/LazilyTransformingAstService.ts#L135)* Compacts the transformations array by discarding all entries that have already been applied by every consumer. Safe to call only after all FormulaVertex and ColumnIndex consumers have been brought up to the current version. After calling, UndoRedo.cleanupOrphanedOldData() must be invoked to remove oldData entries written during forceApplyPostponedTransformations for already-evicted undo entries. **Returns:** *void* ___ ### getTransformationsFrom ▸ **getTransformationsFrom**(`version`: number, `filter?`: undefined | function): *IterableIterator‹FormulaTransformer›* *Defined in [src/LazilyTransformingAstService.ts:109](https://github.com/handsontable/hyperformula/blob/a18429c/src/LazilyTransformingAstService.ts#L109)* **Parameters:** Name | Type | ------ | ------ | `version` | number | `filter?` | undefined | function | **Returns:** *IterableIterator‹FormulaTransformer›* ___ ### needsCompaction ▸ **needsCompaction**(): *boolean* *Defined in [src/LazilyTransformingAstService.ts:123](https://github.com/handsontable/hyperformula/blob/a18429c/src/LazilyTransformingAstService.ts#L123)* Returns true when enough transformations have accumulated to justify the cost of forcing all consumers (FormulaVertex, ColumnIndex) to apply pending changes. **Returns:** *boolean* ___ ### version ▸ **version**(): *number* *Defined in [src/LazilyTransformingAstService.ts:62](https://github.com/handsontable/hyperformula/blob/a18429c/src/LazilyTransformingAstService.ts#L62)* **Returns:** *number* --- ## ExportedNamedExpressionChange URL: https://hyperformula.handsontable.com/docs/api/classes/exportednamedexpressionchange # ExportedNamedExpressionChange ## Constructors ### constructor \+ **new ExportedNamedExpressionChange**(`name`: string, `newValue`: [CellValue](https://hyperformula.handsontable.com/docs/api/globals.md#cellvalue) | [CellValue](https://hyperformula.handsontable.com/docs/api/globals.md#cellvalue)[][]): *[ExportedNamedExpressionChange](https://hyperformula.handsontable.com/docs/api/classes/exportednamedexpressionchange.md)* *Defined in [src/Exporter.ts:47](https://github.com/handsontable/hyperformula/blob/a18429c/src/Exporter.ts#L47)* **Parameters:** Name | Type | ------ | ------ | `name` | string | `newValue` | [CellValue](https://hyperformula.handsontable.com/docs/api/globals.md#cellvalue) | [CellValue](https://hyperformula.handsontable.com/docs/api/globals.md#cellvalue)[][] | **Returns:** *[ExportedNamedExpressionChange](https://hyperformula.handsontable.com/docs/api/classes/exportednamedexpressionchange.md)* ## Properties ### name • **name**: *string* *Defined in [src/Exporter.ts:49](https://github.com/handsontable/hyperformula/blob/a18429c/src/Exporter.ts#L49)* ___ ### newValue • **newValue**: *[CellValue](https://hyperformula.handsontable.com/docs/api/globals.md#cellvalue) | [CellValue](https://hyperformula.handsontable.com/docs/api/globals.md#cellvalue)[][]* *Defined in [src/Exporter.ts:50](https://github.com/handsontable/hyperformula/blob/a18429c/src/Exporter.ts#L50)* --- ## HyperFormula URL: https://hyperformula.handsontable.com/docs/api/classes/hyperformula # HyperFormula This is a class for creating HyperFormula instance, all the following public methods are related to this class. The instance can be created only by calling one of the static methods `buildFromArray`, `buildFromSheets` or `buildEmpty` and should be disposed of with the `destroy` method when it's no longer needed to free the resources. The instance can be seen as a workbook where worksheets can be created and manipulated. They are organized within a widely known structure of columns and rows which can be manipulated as well. The smallest possible data unit are the cells, which may contain simple values or formulas to be calculated. All CRUD methods are called directly on HyperFormula instance and will trigger corresponding lifecycle events. The events are marked accordingly, as well as thrown errors, so they can be correctly handled. ## Static Properties ### buildDate ▪ **buildDate**: *string* = process.env.HT_BUILD_DATE as string *Defined in [src/HyperFormula.ts:105](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L105)* Latest build date. ___ ### languages ▪ **languages**: *Record‹string, RawTranslationPackage›* *Defined in [src/HyperFormula.ts:121](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L121)* When using the UMD build, this property contains all available languages to use with the [registerLanguage](#registerlanguage) method. For more information, see the [Localizing functions](https://hyperformula.handsontable.com/docs/guide/localizing-functions.md) guide. ___ ### releaseDate ▪ **releaseDate**: *string* = process.env.HT_RELEASE_DATE as string *Defined in [src/HyperFormula.ts:112](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L112)* A release date. ___ ### version ▪ **version**: *string* = process.env.HT_VERSION as string *Defined in [src/HyperFormula.ts:98](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L98)* Version of the HyperFormula. ## Static Accessors ### defaultConfig • **get defaultConfig**(): *[ConfigParams](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md)* *Defined in [src/HyperFormula.ts:160](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L160)* Returns all of HyperFormula's default [configuration options](https://hyperformula.handsontable.com/docs/guide/configuration-options.md). **`example`** ```js // returns all default configuration options const defaultConfig = HyperFormula.defaultConfig; ``` **`category`** Static Accessors **Returns:** *[ConfigParams](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md)* ## Factories ### buildEmpty ▸ **buildEmpty**(`configInput`: Partial‹[ConfigParams](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md)›, `namedExpressions`: [SerializedNamedExpression](https://hyperformula.handsontable.com/docs/api/interfaces/serializednamedexpression.md)[]): *[HyperFormula](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md)* *Defined in [src/HyperFormula.ts:353](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L353)* Builds an empty engine instance. Can be configured with the optional parameter that represents a [ConfigParams](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md). If not specified the engine will be built with the default configuration. **`example`** ```js const namedExpressions = [ { name: 'theUltimateQuestionOfLife', expression: '=42', }, ]; // build with no initial data and with optional config parameter maxColumns const hfInstance = HyperFormula.buildEmpty({ maxColumns: 1000 }, namedExpressions); ``` **Parameters:** Name | Type | Default | Description | ------ | ------ | ------ | ------ | `configInput` | Partial‹[ConfigParams](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md)› | {} | engine configuration | `namedExpressions` | [SerializedNamedExpression](https://hyperformula.handsontable.com/docs/api/interfaces/serializednamedexpression.md)[] | [] | starting named expressions | **Returns:** *[HyperFormula](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md)* ___ ### buildFromArray ▸ **buildFromArray**(`sheet`: [Sheet](https://hyperformula.handsontable.com/docs/api/globals.md#sheet), `configInput`: Partial‹[ConfigParams](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md)›, `namedExpressions`: [SerializedNamedExpression](https://hyperformula.handsontable.com/docs/api/interfaces/serializednamedexpression.md)[]): *[HyperFormula](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md)* *Defined in [src/HyperFormula.ts:279](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L279)* Builds the engine for a sheet from a two-dimensional array representation. The engine is created with a single sheet. Can be configured with the optional second parameter that represents a [ConfigParams](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md). If not specified, the engine will be built with the default configuration. **`throws`** [SheetSizeLimitExceededError](https://hyperformula.handsontable.com/docs/api/classes/sheetsizelimitexceedederror.md) when sheet size exceeds the limits **`throws`** [InvalidArgumentsError](https://hyperformula.handsontable.com/docs/api/classes/invalidargumentserror.md) when sheet is not an array of arrays **`throws`** [FunctionPluginValidationError](https://hyperformula.handsontable.com/docs/api/classes/functionpluginvalidationerror.md) when plugin class definition is not consistent with metadata **`example`** ```js // data represented as an array const sheetData = [ ['0', '=SUM(1, 2, 3)', '52'], ['=SUM(A1:C1)', '', '=A1'], ['2', '=SUM(A1:C1)', '=theUltimateQuestionOfLife'], ]; const namedExpressions = [ { name: 'theUltimateQuestionOfLife', expression: '=42', }, ]; // method with optional config parameter maxColumns const hfInstance = HyperFormula.buildFromArray(sheetData, { maxColumns: 1000 }, namedExpressions); ``` **Parameters:** Name | Type | Default | Description | ------ | ------ | ------ | ------ | `sheet` | [Sheet](https://hyperformula.handsontable.com/docs/api/globals.md#sheet) | - | two-dimensional array representation of sheet | `configInput` | Partial‹[ConfigParams](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md)› | {} | engine configuration | `namedExpressions` | [SerializedNamedExpression](https://hyperformula.handsontable.com/docs/api/interfaces/serializednamedexpression.md)[] | [] | starting named expressions | **Returns:** *[HyperFormula](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md)* ___ ### buildFromSheets ▸ **buildFromSheets**(`sheets`: [Sheets](https://hyperformula.handsontable.com/docs/api/globals.md#sheets), `configInput`: Partial‹[ConfigParams](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md)›, `namedExpressions`: [SerializedNamedExpression](https://hyperformula.handsontable.com/docs/api/interfaces/serializednamedexpression.md)[]): *[HyperFormula](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md)* *Defined in [src/HyperFormula.ts:326](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L326)* Builds the engine from an object containing multiple sheets with names. The engine is created with one or more sheets. Can be configured with the optional second parameter that represents a [ConfigParams](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md). If not specified the engine will be built with the default configuration. **`throws`** [SheetSizeLimitExceededError](https://hyperformula.handsontable.com/docs/api/classes/sheetsizelimitexceedederror.md) when sheet size exceeds the limits **`throws`** [InvalidArgumentsError](https://hyperformula.handsontable.com/docs/api/classes/invalidargumentserror.md) when any sheet is not an array of arrays **`throws`** [FunctionPluginValidationError](https://hyperformula.handsontable.com/docs/api/classes/functionpluginvalidationerror.md) when plugin class definition is not consistent with metadata **`example`** ```js // data represented as an object with sheets: Sheet1 and Sheet2 const sheetData = { 'Sheet1': [ ['1', '', '=Sheet2!$A1'], ['', '2', '=SUM(1, 2, 3)'], ['=Sheet2!$A2', '2', ''], ], 'Sheet2': [ ['', '4', '=Sheet1!$B1'], ['', '8', '=SUM(9, 3, 3)'], ['=Sheet1!$B1', '2', '=theUltimateQuestionOfLife'], ], }; const namedExpressions = [ { name: 'theUltimateQuestionOfLife', expression: '=42', }, ]; // method with optional config parameter useColumnIndex const hfInstance = HyperFormula.buildFromSheets(sheetData, { useColumnIndex: true }, namedExpressions); ``` **Parameters:** Name | Type | Default | Description | ------ | ------ | ------ | ------ | `sheets` | [Sheets](https://hyperformula.handsontable.com/docs/api/globals.md#sheets) | - | object with sheets definition | `configInput` | Partial‹[ConfigParams](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md)› | {} | engine configuration | `namedExpressions` | [SerializedNamedExpression](https://hyperformula.handsontable.com/docs/api/interfaces/serializednamedexpression.md)[] | [] | starting named expressions | **Returns:** *[HyperFormula](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md)* ___ ## Instance ### destroy ▸ **destroy**(): *void* *Defined in [src/HyperFormula.ts:4755](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L4755)* Destroys instance of HyperFormula. **`example`** ```js // destroys the instance hfInstance.destroy(); ``` **Returns:** *void* ___ ### getConfig ▸ **getConfig**(): *[ConfigParams](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md)* *Defined in [src/HyperFormula.ts:1180](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L1180)* Returns current configuration of the engine instance. For more information, see the [Configuration options guide](https://hyperformula.handsontable.com/docs/guide/configuration-options.md). **`example`** ```js // should return all config metadata including default and those which were added const hfConfig = hfInstance.getConfig(); ``` **Returns:** *[ConfigParams](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md)* ___ ### rebuildAndRecalculate ▸ **rebuildAndRecalculate**(): *void* *Defined in [src/HyperFormula.ts:1194](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L1194)* Rebuilds the HyperFormula instance preserving the current sheets data. **`example`** ```js hfInstance.rebuildAndRecalculate(); ``` **Returns:** *void* ___ ### updateConfig ▸ **updateConfig**(`newParams`: Partial‹[ConfigParams](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md)›): *void* *Defined in [src/HyperFormula.ts:1157](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L1157)* Updates the config with given new metadata. It is an expensive operation, as it might trigger rebuilding the engine and recalculation of all formulas. For more information, see the [Configuration options guide](https://hyperformula.handsontable.com/docs/guide/configuration-options.md). **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) when some parameters of config are of wrong type (e.g., currencySymbol) **`throws`** [ConfigValueEmpty](https://hyperformula.handsontable.com/docs/api/classes/configvalueempty.md) when some parameters of config are of invalid value (e.g., currencySymbol) **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['1', '2'], ]); // add a config param, for example maxColumns, // you can check the configuration with getConfig method hfInstance.updateConfig({ maxColumns: 1000 }); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `newParams` | Partial‹[ConfigParams](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md)› | configuration options to be updated or added | **Returns:** *void* ___ ## Sheets ### addSheet ▸ **addSheet**(`sheetName?`: undefined | string): *string* *Defined in [src/HyperFormula.ts:2771](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L2771)* Adds a new sheet to the HyperFormula instance. Returns given or autogenerated name of a new sheet. Note that this method may trigger dependency graph recalculation. **`fires`** [sheetAdded](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md#sheetadded) after the sheet was added **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if any of its basic type argument is of wrong type **`throws`** [SheetNameAlreadyTakenError](https://hyperformula.handsontable.com/docs/api/classes/sheetnamealreadytakenerror.md) when sheet with a given name already exists **`example`** ```js const hfInstance = HyperFormula.buildFromSheets({ MySheet1: [ ['1'] ], MySheet2: [ ['10'] ], }); // should return 'MySheet3' const nameProvided = hfInstance.addSheet('MySheet3'); // should return autogenerated 'Sheet4' // because no name was provided and 3 other ones already exist const generatedName = hfInstance.addSheet(); ``` **Parameters:** Name | Type | ------ | ------ | `sheetName?` | undefined | string | **Returns:** *string* ___ ### clearSheet ▸ **clearSheet**(`sheetId`: number): *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* *Defined in [src/HyperFormula.ts:2919](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L2919)* Clears the sheet content. Double-checks if the sheet exists. Returns [an array of cells whose values changed as a result of this operation](https://hyperformula.handsontable.com/docs/guide/basic-operations.md#changes-array). Note that this method may trigger dependency graph recalculation. **`fires`** [valuesUpdated](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md#valuesupdated) if recalculation was triggered by this change **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if any of its basic type argument is of wrong type **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/nosheetwithiderror.md) when the given sheet ID does not exist **`example`** ```js const hfInstance = HyperFormula.buildFromSheets({ MySheet1: [ ['=SUM(MySheet2!A1:A2)'] ], MySheet2: [ ['10'] ], }); // should return a list of cells which values changed after the operation, // their absolute addresses and new values, in this example it will return: // [{ // address: { sheet: 0, col: 0, row: 0 }, // newValue: 0, // }] const changes = hfInstance.clearSheet(0); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetId` | number | sheet ID. | **Returns:** *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* ___ ### countSheets ▸ **countSheets**(): *number* *Defined in [src/HyperFormula.ts:3608](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L3608)* Returns the number of existing sheets. **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['1', '2'], ]); // should return the number of sheets which is '1' const sheetsCount = hfInstance.countSheets(); ``` **Returns:** *number* ___ ### doesSheetExist ▸ **doesSheetExist**(`sheetName`: string): *boolean* *Defined in [src/HyperFormula.ts:3327](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L3327)* Returns `true` whether sheet with a given name exists. The method accepts sheet name to be checked. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if any of its basic type argument is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildFromSheets({ MySheet1: [ ['1'] ], MySheet2: [ ['10'] ], }); // should return 'true' since 'MySheet1' exists const sheetExist = hfInstance.doesSheetExist('MySheet1'); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetName` | string | name of the sheet, case-insensitive. | **Returns:** *boolean* ___ ### getAllSheetsDimensions ▸ **getAllSheetsDimensions**(): *Record‹string, [SheetDimensions](https://hyperformula.handsontable.com/docs/api/globals.md#sheetdimensions)›* *Defined in [src/HyperFormula.ts:1033](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L1033)* Returns a map containing dimensions of all sheets for the engine instance represented as a key-value pairs where keys are sheet IDs and dimensions are returned as numbers, width and height respectively. **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/nosheetwithiderror.md) when the given sheet ID does not exist **`example`** ```js const hfInstance = HyperFormula.buildFromSheets({ Sheet1: [ ['1', '2', '=Sheet2!$A1'], ], Sheet2: [ ['3'], ['4'], ], }); // should return the dimensions of all sheets: // { Sheet1: { width: 3, height: 1 }, Sheet2: { width: 1, height: 2 } } const allSheetsDimensions = hfInstance.getAllSheetsDimensions(); ``` **Returns:** *Record‹string, [SheetDimensions](https://hyperformula.handsontable.com/docs/api/globals.md#sheetdimensions)›* ___ ### getAllSheetsFormulas ▸ **getAllSheetsFormulas**(): *Record‹string, (string | undefined)[][]›* *Defined in [src/HyperFormula.ts:1104](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L1104)* Returns formulas of all sheets in a form of an object which property keys are strings and values are 2D arrays of strings or possibly `undefined` when the call does not contain a formula. **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['1', '2', '=A1+10'], ]); // should return only formulas: { Sheet1: [ [ undefined, undefined, '=A1+10' ] ] } const allSheetsFormulas = hfInstance.getAllSheetsFormulas(); ``` **Returns:** *Record‹string, (string | undefined)[][]›* ___ ### getAllSheetsSerialized ▸ **getAllSheetsSerialized**(): *Record‹string, [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent)[][]›* *Defined in [src/HyperFormula.ts:1129](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L1129)* Returns formulas or values of all sheets in a form of an object which property keys are strings and values are 2D arrays of [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent). Each non-formula cell is serialized to the exact value it was set with, preserving its type. For example, a cell set with the string `'1'` is serialized as the string `'1'`, while a cell set with the number `1` is serialized as the number `1`. **`throws`** [EvaluationSuspendedError](https://hyperformula.handsontable.com/docs/api/classes/evaluationsuspendederror.md) when the evaluation is suspended **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['1', 2, '=A1+10'], ]); // should return all sheets serialized content: { Sheet1: [ [ '1', 2, '=A1+10' ] ] } // note: the string '1' stays a string and the number 2 stays a number const allSheetsSerialized = hfInstance.getAllSheetsSerialized(); ``` **Returns:** *Record‹string, [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent)[][]›* ___ ### getAllSheetsValues ▸ **getAllSheetsValues**(): *Record‹string, [CellValue](https://hyperformula.handsontable.com/docs/api/globals.md#cellvalue)[][]›* *Defined in [src/HyperFormula.ts:1085](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L1085)* Returns values of all sheets in a form of an object which property keys are strings and values are 2D arrays of [CellValue](https://hyperformula.handsontable.com/docs/api/globals.md#cellvalue). **`throws`** [EvaluationSuspendedError](https://hyperformula.handsontable.com/docs/api/classes/evaluationsuspendederror.md) when the evaluation is suspended **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['1', '=A1+10', '3'], ]); // should return all sheets values: { Sheet1: [ [ 1, 11, 3 ] ] } const allSheetsValues = hfInstance.getAllSheetsValues(); ``` **Returns:** *Record‹string, [CellValue](https://hyperformula.handsontable.com/docs/api/globals.md#cellvalue)[][]›* ___ ### getSheetDimensions ▸ **getSheetDimensions**(`sheetId`: number): *[SheetDimensions](https://hyperformula.handsontable.com/docs/api/globals.md#sheetdimensions)* *Defined in [src/HyperFormula.ts:1060](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L1060)* Returns dimensions of a specified sheet. The sheet dimensions is represented with numbers: width and height. Note: Due to the memory optimizations, some of the empty bottom rows and rightmost columns are not counted to the dimensions. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if any of its basic type argument is of wrong type **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/nosheetwithiderror.md) when the given sheet ID does not exist **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['1', '2', '=Sheet2!$A1'], ]); // should return provided sheet's dimensions: { width: 3, height: 1 } const sheetDimensions = hfInstance.getSheetDimensions(0); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetId` | number | sheet ID number | **Returns:** *[SheetDimensions](https://hyperformula.handsontable.com/docs/api/globals.md#sheetdimensions)* ___ ### getSheetFormulas ▸ **getSheetFormulas**(`sheetId`: number): *(string | undefined)[][]* *Defined in [src/HyperFormula.ts:970](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L970)* Returns an array with normalized formula strings from [Sheet](https://hyperformula.handsontable.com/docs/api/globals.md#sheet) or `undefined` for a cells that have no value. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if any of its basic type argument is of wrong type **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/nosheetwithiderror.md) when the given sheet ID does not exist **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['0', '=SUM(1, 2, 3)', '=A1'], ['1', '=TEXT(A2, "0.0%")', '=C1'], ['2', '=SUM(A1:C1)', '=C1'], ]); // should return all formulas of a sheet: // [ // [undefined, '=SUM(1, 2, 3)', '=A1'], // [undefined, '=TEXT(A2, "0.0%")', '=C1'], // [undefined, '=SUM(A1:C1)', '=C1'], // ]; const sheetFormulas = hfInstance.getSheetFormulas(0); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetId` | number | sheet ID number | **Returns:** *(string | undefined)[][]* ___ ### getSheetId ▸ **getSheetId**(`sheetName`: string): *number | undefined* *Defined in [src/HyperFormula.ts:3302](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L3302)* Returns a unique sheet ID assigned to the sheet with a given name or `undefined` if the sheet does not exist. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if any of its basic type argument is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildFromSheets({ MySheet1: [ ['1'] ], MySheet2: [ ['10'] ], }); // should return '0' because 'MySheet1' is of ID '0' const sheetID = hfInstance.getSheetId('MySheet1'); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetName` | string | name of the sheet, for which we want to retrieve ID, case-insensitive. | **Returns:** *number | undefined* ___ ### getSheetName ▸ **getSheetName**(`sheetId`: number): *string | undefined* *Defined in [src/HyperFormula.ts:3256](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L3256)* Returns a unique sheet name assigned to the sheet of a given ID or `undefined` if the there is no sheet with a given ID. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if any of its basic type argument is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildFromSheets({ MySheet1: [ ['1'] ], MySheet2: [ ['10'] ], }); // should return 'MySheet2' as this sheet is the second one const sheetName = hfInstance.getSheetName(1); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetId` | number | ID of the sheet, for which we want to retrieve name | **Returns:** *string | undefined* ___ ### getSheetNames ▸ **getSheetNames**(): *string[]* *Defined in [src/HyperFormula.ts:3278](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L3278)* List all sheet names. Returns an array of sheet names as strings. **`example`** ```js const hfInstance = HyperFormula.buildFromSheets({ MySheet1: [ ['1'] ], MySheet2: [ ['10'] ], }); // should return all sheets names: ['MySheet1', 'MySheet2'] const sheetNames = hfInstance.getSheetNames(); ``` **Returns:** *string[]* ___ ### getSheetSerialized ▸ **getSheetSerialized**(`sheetId`: number): *[RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent)[][]* *Defined in [src/HyperFormula.ts:1003](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L1003)* Returns an array of arrays of [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent) with serialized content of cells from [Sheet](https://hyperformula.handsontable.com/docs/api/globals.md#sheet), either a cell formula or an explicit value. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if any of its basic type argument is of wrong type **`throws`** [EvaluationSuspendedError](https://hyperformula.handsontable.com/docs/api/classes/evaluationsuspendederror.md) when the evaluation is suspended **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/nosheetwithiderror.md) when the given sheet ID does not exist **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['0', '=SUM(1, 2, 3)', '=A1'], ['1', '=TEXT(A2, "0.0%")', '=C1'], ['2', '=SUM(A1:C1)', '=C1'], ]); // should return: // [ // ['0', '=SUM(1, 2, 3)', '=A1'], // ['1', '=TEXT(A2, "0.0%")', '=C1'], // ['2', '=SUM(A1:C1)', '=C1'], // ]; const serializedContent = hfInstance.getSheetSerialized(0); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetId` | number | sheet ID number | **Returns:** *[RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent)[][]* ___ ### getSheetValues ▸ **getSheetValues**(`sheetId`: number): *[CellValue](https://hyperformula.handsontable.com/docs/api/globals.md#cellvalue)[][]* *Defined in [src/HyperFormula.ts:937](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L937)* Returns an array of arrays of [CellValue](https://hyperformula.handsontable.com/docs/api/globals.md#cellvalue) with values of all cells from [Sheet](https://hyperformula.handsontable.com/docs/api/globals.md#sheet). Applies rounding and post-processing. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if any of its basic type argument is of wrong type **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/nosheetwithiderror.md) when the given sheet ID does not exist **`throws`** [EvaluationSuspendedError](https://hyperformula.handsontable.com/docs/api/classes/evaluationsuspendederror.md) when the evaluation is suspended **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['0', '=SUM(1, 2, 3)', '=A1'], ['1', '=TEXT(A2, "0.0%")', '=C1'], ['2', '=SUM(A1:C1)', '=C1'], ]); // should return all values of a sheet: [[0, 6, 0], [1, '1.0%', 0], [2, 6, 0]] const sheetValues = hfInstance.getSheetValues(0); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetId` | number | sheet ID number | **Returns:** *[CellValue](https://hyperformula.handsontable.com/docs/api/globals.md#cellvalue)[][]* ___ ### isItPossibleToAddSheet ▸ **isItPossibleToAddSheet**(`sheetName`: string): *boolean* *Defined in [src/HyperFormula.ts:2732](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L2732)* Returns information whether it is possible to add a sheet to the engine. Checks against particular rules to ascertain that addSheet can be called. If returns `true`, doing [addSheet](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#addsheet) operation won't throw any errors, and it is possible to add sheet with provided name. Returns `false` if the chosen name is already used. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if any of its basic type argument is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildFromSheets({ MySheet1: [ ['1'] ], MySheet2: [ ['10'] ], }); // should return 'false' because 'MySheet2' already exists const isAddable = hfInstance.isItPossibleToAddSheet('MySheet2'); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetName` | string | sheet name, case-insensitive | **Returns:** *boolean* ___ ### isItPossibleToClearSheet ▸ **isItPossibleToClearSheet**(`sheetId`: number): *boolean* *Defined in [src/HyperFormula.ts:2877](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L2877)* Returns information whether it is possible to clear a specified sheet. If returns `true`, doing [clearSheet](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#clearsheet) operation won't throw any errors, provided sheet exists and its content can be cleared. Returns `false` otherwise **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if any of its basic type argument is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildFromSheets({ MySheet1: [ ['1'] ], MySheet2: [ ['10'] ], }); // should return 'true' because 'MySheet2' exists and can be cleared const isClearable = hfInstance.isItPossibleToClearSheet(1); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetId` | number | sheet ID. | **Returns:** *boolean* ___ ### isItPossibleToRemoveSheet ▸ **isItPossibleToRemoveSheet**(`sheetId`: number): *boolean* *Defined in [src/HyperFormula.ts:2803](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L2803)* Returns information whether it is possible to remove sheet for the engine. Returns `true` if the provided sheet exists, and therefore it can be removed, doing [removeSheet](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#removesheet) operation won't throw any errors. Returns `false` otherwise **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if any of its basic type argument is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildFromSheets({ MySheet1: [ ['1'] ], MySheet2: [ ['10'] ], }); // should return 'true' because sheet with ID 1 exists and is removable const isRemovable = hfInstance.isItPossibleToRemoveSheet(1); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetId` | number | sheet ID. | **Returns:** *boolean* ___ ### isItPossibleToRenameSheet ▸ **isItPossibleToRenameSheet**(`sheetId`: number, `newName`: string): *boolean* *Defined in [src/HyperFormula.ts:3635](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L3635)* Returns information whether it is possible to rename sheet. Returns `true` if the sheet with provided id exists and new name is available Returns `false` if sheet cannot be renamed **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if any of its basic type argument is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildFromSheets({ MySheet1: [ ['1'] ], MySheet2: [ ['10'] ], }); // returns true hfInstance.isItPossibleToRenameSheet(0, 'MySheet0'); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetId` | number | a sheet number | `newName` | string | a name of the sheet to be given | **Returns:** *boolean* ___ ### isItPossibleToReplaceSheetContent ▸ **isItPossibleToReplaceSheetContent**(`sheetId`: number, `values`: [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent)[][]): *boolean* *Defined in [src/HyperFormula.ts:2949](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L2949)* Returns information whether it is possible to replace the sheet content. If returns `true`, doing [setSheetContent](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#setsheetcontent) operation won't throw any errors, the provided sheet exists and then its content can be replaced. Returns `false` otherwise **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if any of its basic type argument is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildFromSheets({ MySheet1: [ ['1'] ], MySheet2: [ ['10'] ], }); // should return 'true' because sheet of ID 0 exists // and the provided content can be placed in this sheet const isReplaceable = hfInstance.isItPossibleToReplaceSheetContent(0, [['50'], ['60']]); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetId` | number | sheet ID. | `values` | [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent)[][] | array of new values | **Returns:** *boolean* ___ ### removeSheet ▸ **removeSheet**(`sheetId`: number): *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* *Defined in [src/HyperFormula.ts:2846](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L2846)* Removes a sheet Returns [an array of cells whose values changed as a result of this operation](https://hyperformula.handsontable.com/docs/guide/basic-operations.md#changes-array). Note that this method may trigger dependency graph recalculation. **`fires`** [sheetRemoved](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md#sheetremoved) after the sheet was removed **`fires`** [valuesUpdated](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md#valuesupdated) if recalculation was triggered by this change **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if any of its basic type argument is of wrong type **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/nosheetwithiderror.md) when the given sheet ID does not exist **`example`** ```js const hfInstance = HyperFormula.buildFromSheets({ MySheet1: [ ['=SUM(MySheet2!A1:A2)'] ], MySheet2: [ ['10'] ], }); // should return a list of cells which values changed after the operation, // their absolute addresses and new values, in this example it will return: // [{ // address: { sheet: 0, col: 0, row: 0 }, // newValue: { error: [CellError], value: '#REF!' }, // }] const changes = hfInstance.removeSheet(1); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetId` | number | sheet ID. | **Returns:** *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* ___ ### renameSheet ▸ **renameSheet**(`sheetId`: number, `newName`: string): *void* *Defined in [src/HyperFormula.ts:3673](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L3673)* Renames a specified sheet. Note that this method may trigger dependency graph recalculation. **`fires`** [sheetRenamed](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md#sheetrenamed) after the sheet was renamed **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if any of its basic type argument is of wrong type **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/nosheetwithiderror.md) when the given sheet ID does not exist **`throws`** [SheetNameAlreadyTakenError](https://hyperformula.handsontable.com/docs/api/classes/sheetnamealreadytakenerror.md) when the provided sheet name already exists **`example`** ```js const hfInstance = HyperFormula.buildFromSheets({ MySheet1: [ ['1'] ], MySheet2: [ ['10'] ], }); // renames the sheet 'MySheet1' hfInstance.renameSheet(0, 'MySheet0'); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetId` | number | a sheet ID | `newName` | string | a name of the sheet to be given, if is the same as the old one the method does nothing | **Returns:** *void* ___ ### setSheetContent ▸ **setSheetContent**(`sheetId`: number, `values`: [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent)[][]): *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* *Defined in [src/HyperFormula.ts:2986](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L2986)* Replaces the sheet content with new values. Returns [an array of cells whose values changed as a result of this operation](https://hyperformula.handsontable.com/docs/guide/basic-operations.md#changes-array). **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if any of its basic type argument is of wrong type **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/nosheetwithiderror.md) when the given sheet ID does not exist **`throws`** [InvalidArgumentsError](https://hyperformula.handsontable.com/docs/api/classes/invalidargumentserror.md) when values argument is not an array of arrays **`example`** ```js const hfInstance = HyperFormula.buildFromSheets({ MySheet1: [ ['1'] ], MySheet2: [ ['10'] ], }); // should return a list of cells which values changed after the operation, // their absolute addresses and new values const changes = hfInstance.setSheetContent(0, [['50'], ['60']]); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetId` | number | sheet ID. | `values` | [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent)[][] | array of new values | **Returns:** *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* ___ ## Ranges ### getFillRangeData ▸ **getFillRangeData**(`source`: [SimpleCellRange](https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange.md), `target`: [SimpleCellRange](https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange.md), `offsetsFromTarget`: boolean): *[RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent)[][]* *Defined in [src/HyperFormula.ts:2688](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L2688)* Returns values to fill target range using source range, with properly extending the range using wrap-around heuristic. **`throws`** [EvaluationSuspendedError](https://hyperformula.handsontable.com/docs/api/classes/evaluationsuspendederror.md) when the evaluation is suspended **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if source or target are of wrong type **`throws`** [SheetsNotEqual](https://hyperformula.handsontable.com/docs/api/classes/sheetsnotequal.md) if range provided has distinct sheet numbers for start and end **`example`** ```js const hfInstance = HyperFormula.buildFromArray([[1, '=A1'], ['=$A$1', '2']]); // should return [['2', '=$A$1', '2'], ['=A3', 1, '=C3'], ['2', '=$A$1', '2']] hfInstance.getFillRangeData( {start: {sheet: 0, row: 0, col: 0}, end: {sheet: 0, row: 1, col: 1}}, {start: {sheet: 0, row: 1, col: 1}, end: {sheet: 0, row: 3, col: 3}}); ``` **Parameters:** Name | Type | Default | Description | ------ | ------ | ------ | ------ | `source` | [SimpleCellRange](https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange.md) | - | of data | `target` | [SimpleCellRange](https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange.md) | - | range where data is intended to be put | `offsetsFromTarget` | boolean | false | if true, offsets are computed from target corner, otherwise from source corner | **Returns:** *[RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent)[][]* ___ ### getRangeFormulas ▸ **getRangeFormulas**(`source`: [SimpleCellRange](https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange.md)): *(string | undefined)[][]* *Defined in [src/HyperFormula.ts:2615](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L2615)* Returns cell formulas in given range. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if source is of wrong type **`throws`** [SheetsNotEqual](https://hyperformula.handsontable.com/docs/api/classes/sheetsnotequal.md) if range provided has distinct sheet numbers for start and end **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/nosheetwithiderror.md) when the given sheet ID does not exist **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['=SUM(1, 2)', '2', '10'], ['5', '6', '7'], ['40', '30', '20'], ]); // returns cell formulas of a given range only: // [ [ '=SUM(1, 2)', undefined ], [ undefined, undefined ] ] const rangeFormulas = hfInstance.getRangeFormulas({ start: { sheet: 0, col: 0, row: 0 }, end: { sheet: 0, col: 1, row: 1 } }); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `source` | [SimpleCellRange](https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange.md) | rectangular range | **Returns:** *(string | undefined)[][]* ___ ### getRangeSerialized ▸ **getRangeSerialized**(`source`: [SimpleCellRange](https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange.md)): *[RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent)[][]* *Defined in [src/HyperFormula.ts:2654](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L2654)* Returns serialized cells in given range. Each non-formula cell is serialized to the exact value it was set with, preserving its type (e.g., a cell set with the string `'2'` is serialized as the string `'2'`, while a cell set with the number `2` is serialized as the number `2`). **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if source is of wrong type **`throws`** [SheetsNotEqual](https://hyperformula.handsontable.com/docs/api/classes/sheetsnotequal.md) if range provided has distinct sheet numbers for start and end **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/nosheetwithiderror.md) when the given sheet ID does not exist **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['=SUM(1, 2)', 2, 10], [5, 6, 7], [40, 30, 20], ]); // should return serialized cell content for the given range: // [ [ '=SUM(1, 2)', 2 ], [ 5, 6 ] ] const rangeSerialized = hfInstance.getRangeSerialized({ start: { sheet: 0, col: 0, row: 0 }, end: { sheet: 0, col: 1, row: 1 } }); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `source` | [SimpleCellRange](https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange.md) | rectangular range | **Returns:** *[RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent)[][]* ___ ### getRangeValues ▸ **getRangeValues**(`source`: [SimpleCellRange](https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange.md)): *[CellValue](https://hyperformula.handsontable.com/docs/api/globals.md#cellvalue)[][]* *Defined in [src/HyperFormula.ts:2579](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L2579)* Returns the cell content of a given range in a [CellValue](https://hyperformula.handsontable.com/docs/api/globals.md#cellvalue)[][] format. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if source is of wrong type **`throws`** [SheetsNotEqual](https://hyperformula.handsontable.com/docs/api/classes/sheetsnotequal.md) if range provided has distinct sheet numbers for start and end **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/nosheetwithiderror.md) when the given sheet ID does not exist **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['=SUM(1, 2)', '2', '10'], ['5', '6', '7'], ['40', '30', '20'], ]); // returns calculated cells content: [ [ 3, 2 ], [ 5, 6 ] ] const rangeValues = hfInstance.getRangeValues({ start: { sheet: 0, col: 0, row: 0 }, end: { sheet: 0, col: 1, row: 1 } }); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `source` | [SimpleCellRange](https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange.md) | rectangular range | **Returns:** *[CellValue](https://hyperformula.handsontable.com/docs/api/globals.md#cellvalue)[][]* ___ ## Rows ### addRows ▸ **addRows**(`sheetId`: number, ...`indexes`: [ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[]): *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* *Defined in [src/HyperFormula.ts:1826](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L1826)* Adds multiple rows into a specified position in a given sheet. Does nothing if rows are outside effective sheet size. Returns [an array of cells whose values changed as a result of this operation](https://hyperformula.handsontable.com/docs/guide/basic-operations.md#changes-array). Note that this method may trigger dependency graph recalculation. **`fires`** [valuesUpdated](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md#valuesupdated) if recalculation was triggered by this change **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if any of its basic type argument is of wrong type **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/nosheetwithiderror.md) when the given sheet ID does not exist **`throws`** [SheetSizeLimitExceededError](https://hyperformula.handsontable.com/docs/api/classes/sheetsizelimitexceedederror.md) when performing this operation would result in sheet size limits exceeding **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['1'], ['2'], ]); // should return a list of cells which values changed after the operation, // their absolute addresses and new values const changes = hfInstance.addRows(0, [0, 1]); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetId` | number | sheet ID in which rows will be added | `...indexes` | [ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[] | non-contiguous indexes with format [row, amount], where row is a row number above which the rows will be added | **Returns:** *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* ___ ### isItPossibleToAddRows ▸ **isItPossibleToAddRows**(`sheetId`: number, ...`indexes`: [ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[]): *boolean* *Defined in [src/HyperFormula.ts:1784](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L1784)* Returns information whether it is possible to add rows into a specified position in a given sheet. Checks against particular rules to ascertain that addRows can be called. If returns `true`, doing [addRows](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#addrows) operation won't throw any errors. Returns `false` if adding rows would exceed the sheet size limit or given arguments are invalid. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if any of its basic type argument is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['1', '2', '3'], ]); // should return 'true' for this example, // it is possible to add one row in the second row of sheet 0 const isAddable = hfInstance.isItPossibleToAddRows(0, [1, 1]); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetId` | number | sheet ID in which rows will be added | `...indexes` | [ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[] | non-contiguous indexes with format [row, amount], where row is a row number above which the rows will be added | **Returns:** *boolean* ___ ### isItPossibleToMoveRows ▸ **isItPossibleToMoveRows**(`sheetId`: number, `startRow`: number, `numberOfRows`: number, `targetRow`: number): *boolean* *Defined in [src/HyperFormula.ts:2181](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L2181)* Returns information whether it is possible to move a particular number of rows to a specified position in a given sheet. Checks against particular rules to ascertain that moveRows can be called. If returns `true`, doing [moveRows](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#moverows) operation won't throw any errors. Returns `false` if the operation might be disrupted and causes side effects by the fact that there is an array inside the selected rows, the target location includes an array or the provided address is invalid. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if any of its basic type argument is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['1'], ['2'], ]); // should return 'true' for this example // it is possible to move one row from row 0 into row 2 const isMovable = hfInstance.isItPossibleToMoveRows(0, 0, 1, 2); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetId` | number | a sheet number in which the operation will be performed | `startRow` | number | number of the first row to move | `numberOfRows` | number | number of rows to move | `targetRow` | number | row number before which rows will be moved | **Returns:** *boolean* ___ ### isItPossibleToRemoveRows ▸ **isItPossibleToRemoveRows**(`sheetId`: number, ...`indexes`: [ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[]): *boolean* *Defined in [src/HyperFormula.ts:1857](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L1857)* Returns information whether it is possible to remove rows from a specified position in a given sheet. Checks against particular rules to ascertain that removeRows can be called. If returns `true`, doing [removeRows](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#removerows) operation won't throw any errors. Returns `false` if given arguments are invalid. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if any of its basic type argument is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['1'], ['2'], ]); // should return 'true' for this example // it is possible to remove one row from row 1 of sheet 0 const isRemovable = hfInstance.isItPossibleToRemoveRows(0, [1, 1]); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetId` | number | sheet ID from which rows will be removed | `...indexes` | [ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[] | non-contiguous indexes with format: [row, amount] | **Returns:** *boolean* ___ ### isItPossibleToSetRowOrder ▸ **isItPossibleToSetRowOrder**(`sheetId`: number, `newRowOrder`: number[]): *boolean* *Defined in [src/HyperFormula.ts:1579](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L1579)* Checks if it is possible to reorder rows of a sheet according to a permutation. Parameter `newRowOrder` should have the form `[ newPositionForRow0, newPositionForRow1, newPositionForRow2, ... ]`, i.e. the value at index `i` is the new position for the row that is currently at index `i`. See [setRowOrder](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#setroworder) for details. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if any of its basic type argument is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['A'], ['B'], ['C'] ]); // returns true hfInstance.isItPossibleToSetRowOrder(0, [1, 2, 0]); // returns false (array length must match the number of rows) hfInstance.isItPossibleToSetRowOrder(0, [2]); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetId` | number | ID of a sheet to operate on | `newRowOrder` | number[] | permutation of rows | **Returns:** *boolean* ___ ### isItPossibleToSwapRowIndexes ▸ **isItPossibleToSwapRowIndexes**(`sheetId`: number, `rowMapping`: [number, number][]): *boolean* *Defined in [src/HyperFormula.ts:1492](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L1492)* Checks if it is possible to reorder rows of a sheet according to a source-target mapping. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if any of its basic type argument is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ [1], [2], [4, 5], ]); // returns true const isSwappable = hfInstance.isItPossibleToSwapRowIndexes(0, [[0, 2], [2, 0]]); // returns false const isSwappable = hfInstance.isItPossibleToSwapRowIndexes(0, [[0, 1]]); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetId` | number | ID of a sheet to operate on | `rowMapping` | [number, number][] | array mapping original positions to final positions of rows | **Returns:** *boolean* ___ ### moveRows ▸ **moveRows**(`sheetId`: number, `startRow`: number, `numberOfRows`: number, `targetRow`: number): *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* *Defined in [src/HyperFormula.ts:2228](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L2228)* Moves a particular number of rows to a specified position in a given sheet. Returns [an array of cells whose values changed as a result of this operation](https://hyperformula.handsontable.com/docs/guide/basic-operations.md#changes-array). Note that this method may trigger dependency graph recalculation. **`fires`** [valuesUpdated](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md#valuesupdated) if recalculation was triggered by this change **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/nosheetwithiderror.md) when the given sheet ID does not exist **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if any of its basic type argument is of wrong type **`throws`** [InvalidArgumentsError](https://hyperformula.handsontable.com/docs/api/classes/invalidargumentserror.md) when the given arguments are invalid **`throws`** [SourceLocationHasArrayError](https://hyperformula.handsontable.com/docs/api/classes/sourcelocationhasarrayerror.md) when the source location has array inside - array cannot be moved **`throws`** [TargetLocationHasArrayError](https://hyperformula.handsontable.com/docs/api/classes/targetlocationhasarrayerror.md) when the target location has array inside - cells cannot be replaced by the array **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['1'], ['2'], ]); // should return a list of cells which values changed after the operation, // their absolute addresses and new values const changes = hfInstance.moveRows(0, 0, 1, 2); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetId` | number | a sheet number in which the operation will be performed | `startRow` | number | number of the first row to move | `numberOfRows` | number | number of rows to move | `targetRow` | number | row number before which rows will be moved | **Returns:** *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* ___ ### removeRows ▸ **removeRows**(`sheetId`: number, ...`indexes`: [ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[]): *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* *Defined in [src/HyperFormula.ts:1898](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L1898)* Removes multiple rows from a specified position in a given sheet. Does nothing if rows are outside the effective sheet size. Returns [an array of cells whose values changed as a result of this operation](https://hyperformula.handsontable.com/docs/guide/basic-operations.md#changes-array). Note that this method may trigger dependency graph recalculation. **`fires`** [valuesUpdated](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md#valuesupdated) if recalculation was triggered by this change **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if any of its basic type argument is of wrong type **`throws`** [InvalidArgumentsError](https://hyperformula.handsontable.com/docs/api/classes/invalidargumentserror.md) when the given arguments are invalid **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/nosheetwithiderror.md) when the given sheet ID does not exist **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['1'], ['2'], ]); // should return: [{ sheet: 0, col: 1, row: 2, value: null }] for this example const changes = hfInstance.removeRows(0, [1, 1]); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetId` | number | sheet ID from which rows will be removed | `...indexes` | [ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[] | non-contiguous indexes with format: [row, amount] | **Returns:** *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* ___ ### setRowOrder ▸ **setRowOrder**(`sheetId`: number, `newRowOrder`: number[]): *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* *Defined in [src/HyperFormula.ts:1544](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L1544)* Reorders rows of a sheet according to a permutation of 0-based indexes. Parameter `newRowOrder` should have the form `[ newPositionForRow0, newPositionForRow1, newPositionForRow2, ... ]`. In other words, the value at index `i` is the new position for the row that is currently at index `i`. Note that this is the opposite of `[ previousPositionForRow0, previousPositionForRow1, ... ]`. This method might be used to [sort the rows of a sheet](https://hyperformula.handsontable.com/docs/guide/sorting-data.md). Returns [an array of cells whose values changed as a result of this operation](https://hyperformula.handsontable.com/docs/guide/basic-operations.md#changes-array). Note: This method may trigger dependency graph recalculation. **`fires`** [valuesUpdated](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md#valuesupdated) if recalculation was triggered by this change **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if any of its basic type argument is of wrong type **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/nosheetwithiderror.md) when the given sheet ID does not exist **`throws`** [InvalidArgumentsError](https://hyperformula.handsontable.com/docs/api/classes/invalidargumentserror.md) when rowMapping does not define correct row permutation for some subset of rows of the given sheet **`throws`** [SourceLocationHasArrayError](https://hyperformula.handsontable.com/docs/api/classes/sourcelocationhasarrayerror.md) when the selected position has array inside **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['A'], ['B'], ['C'] ]); // Move 'A' to index 1, 'B' to index 2, and 'C' to index 0. const newRowOrder = [1, 2, 0]; // [ newPosForA, newPosForB, newPosForC ] const changes = hfInstance.setRowOrder(0, newRowOrder); // Sheet after this operation: [['C'], ['A'], ['B']] ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetId` | number | ID of a sheet to operate on | `newRowOrder` | number[] | permutation of rows; array length must match the number of rows returned by [getSheetDimensions()](#getsheetdimensions) | **Returns:** *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* ___ ### swapRowIndexes ▸ **swapRowIndexes**(`sheetId`: number, `rowMapping`: [number, number][]): *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* *Defined in [src/HyperFormula.ts:1461](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L1461)* Reorders rows of a sheet according to a source-target mapping. Returns [an array of cells whose values changed as a result of this operation](https://hyperformula.handsontable.com/docs/guide/basic-operations.md#changes-array). Note that this method may trigger dependency graph recalculation. **`fires`** [valuesUpdated](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md#valuesupdated) if recalculation was triggered by this change **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if any of its basic type argument is of wrong type **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/nosheetwithiderror.md) when the given sheet ID does not exist **`throws`** [InvalidArgumentsError](https://hyperformula.handsontable.com/docs/api/classes/invalidargumentserror.md) when rowMapping does not define correct row permutation for some subset of rows of the given sheet **`throws`** [SourceLocationHasArrayError](https://hyperformula.handsontable.com/docs/api/classes/sourcelocationhasarrayerror.md) when the selected position has array inside **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ [1], [2], [4, 5], ]); // should set swap rows 0 and 2 in place, returns: // [{ // address: { sheet: 0, col: 0, row: 2 }, // newValue: 1, // }, // { // address: { sheet: 0, col: 1, row: 2 }, // newValue: null, // }, // { // address: { sheet: 0, col: 0, row: 0 }, // newValue: 4, // }, // { // address: { sheet: 0, col: 1, row: 0 }, // newValue: 5, // }] const changes = hfInstance.swapRowIndexes(0, [[0, 2], [2, 0]]); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetId` | number | ID of a sheet to operate on | `rowMapping` | [number, number][] | array mapping original positions to final positions of rows | **Returns:** *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* ___ ## Columns ### addColumns ▸ **addColumns**(`sheetId`: number, ...`indexes`: [ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[]): *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* *Defined in [src/HyperFormula.ts:1974](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L1974)* Adds multiple columns into a specified position in a given sheet. Does nothing if the columns are outside the effective sheet size. Returns [an array of cells whose values changed as a result of this operation](https://hyperformula.handsontable.com/docs/guide/basic-operations.md#changes-array). Note that this method may trigger dependency graph recalculation. **`fires`** [valuesUpdated](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md#valuesupdated) if recalculation was triggered by this change **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if any of its basic type argument is of wrong type **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/nosheetwithiderror.md) when the given sheet ID does not exist **`throws`** [InvalidArgumentsError](https://hyperformula.handsontable.com/docs/api/classes/invalidargumentserror.md) when the given arguments are invalid **`throws`** [SheetSizeLimitExceededError](https://hyperformula.handsontable.com/docs/api/classes/sheetsizelimitexceedederror.md) when performing this operation would result in sheet size limits exceeding **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['=RAND()', '42'], ]); // should return a list of cells which values changed after the operation, // their absolute addresses and new values, for this example: // [{ // address: { sheet: 0, col: 1, row: 0 }, // newValue: 0.92754862796338, // }] const changes = hfInstance.addColumns(0, [0, 1]); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetId` | number | sheet ID in which columns will be added | `...indexes` | [ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[] | non-contiguous indexes with format: [column, amount], where column is a column number from which new columns will be added | **Returns:** *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* ___ ### isItPossibleToAddColumns ▸ **isItPossibleToAddColumns**(`sheetId`: number, ...`indexes`: [ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[]): *boolean* *Defined in [src/HyperFormula.ts:1928](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L1928)* Returns information whether it is possible to add columns into a specified position in a given sheet. Checks against particular rules to ascertain that addColumns can be called. If returns `true`, doing [addColumns](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#addcolumns) operation won't throw any errors. Returns `false` if adding columns would exceed the sheet size limit or given arguments are invalid. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if any of its basic type argument is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['1', '2'], ]); // should return 'true' for this example, // it is possible to add 1 column in sheet 0, at column 1 const isAddable = hfInstance.isItPossibleToAddColumns(0, [1, 1]); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetId` | number | sheet ID in which columns will be added | `...indexes` | [ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[] | non-contiguous indexes with format: [column, amount], where column is a column number from which new columns will be added | **Returns:** *boolean* ___ ### isItPossibleToMoveColumns ▸ **isItPossibleToMoveColumns**(`sheetId`: number, `startColumn`: number, `numberOfColumns`: number, `targetColumn`: number): *boolean* *Defined in [src/HyperFormula.ts:2263](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L2263)* Returns information whether it is possible to move a particular number of columns to a specified position in a given sheet. Checks against particular rules to ascertain that moveColumns can be called. If returns `true`, doing [moveColumns](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#movecolumns) operation won't throw any errors. Returns `false` if the operation might be disrupted and causes side effects by the fact that there is an array inside the selected columns, the target location includes an array or the provided address is invalid. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if any of its basic type argument is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['1', '2'], ]); // should return 'true' for this example // it is possible to move one column from column 1 into column 2 of sheet 0 const isMovable = hfInstance.isItPossibleToMoveColumns(0, 1, 1, 2); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetId` | number | a sheet number in which the operation will be performed | `startColumn` | number | number of the first column to move | `numberOfColumns` | number | number of columns to move | `targetColumn` | number | column number before which columns will be moved | **Returns:** *boolean* ___ ### isItPossibleToRemoveColumns ▸ **isItPossibleToRemoveColumns**(`sheetId`: number, ...`indexes`: [ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[]): *boolean* *Defined in [src/HyperFormula.ts:2004](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L2004)* Returns information whether it is possible to remove columns from a specified position in a given sheet. Checks against particular rules to ascertain that removeColumns can be called. If returns `true`, doing [removeColumns](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#removecolumns) operation won't throw any errors. Returns `false` if given arguments are invalid. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if any of its basic type argument is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['1', '2'], ]); // should return 'true' for this example // it is possible to remove one column, in place of the second column of sheet 0 const isRemovable = hfInstance.isItPossibleToRemoveColumns(0, [1, 1]); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetId` | number | sheet ID from which columns will be removed | `...indexes` | [ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[] | non-contiguous indexes with format [column, amount] | **Returns:** *boolean* ___ ### isItPossibleToSetColumnOrder ▸ **isItPossibleToSetColumnOrder**(`sheetId`: number, `newColumnOrder`: number[]): *boolean* *Defined in [src/HyperFormula.ts:1748](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L1748)* Checks if it is possible to reorder columns of a sheet according to a permutation. Parameter `newColumnOrder` should have the form `[ newPositionForColumn0, newPositionForColumn1, newPositionForColumn2, ... ]`, i.e. the value at index `i` is the new position for the column that is currently at index `i`. See [setColumnOrder](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#setcolumnorder) for details. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if any of its basic type argument is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['A', 'B', 'C'] ]); // returns true hfInstance.isItPossibleToSetColumnOrder(0, [1, 2, 0]); // returns false (array length must match the number of columns) hfInstance.isItPossibleToSetColumnOrder(0, [1]); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetId` | number | ID of a sheet to operate on | `newColumnOrder` | number[] | permutation of columns | **Returns:** *boolean* ___ ### isItPossibleToSwapColumnIndexes ▸ **isItPossibleToSwapColumnIndexes**(`sheetId`: number, `columnMapping`: [number, number][]): *boolean* *Defined in [src/HyperFormula.ts:1665](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L1665)* Checks if it is possible to reorder columns of a sheet according to a source-target mapping. **`fires`** [valuesUpdated](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md#valuesupdated) if recalculation was triggered by this change **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if any of its basic type argument is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ [1, 2, 4], [5] ]); // returns true hfInstance.isItPossibleToSwapColumnIndexes(0, [[0, 2], [2, 0]]); // returns false hfInstance.isItPossibleToSwapColumnIndexes(0, [[0, 1]]); ``` **Parameters:** Name | Type | ------ | ------ | `sheetId` | number | `columnMapping` | [number, number][] | **Returns:** *boolean* ___ ### moveColumns ▸ **moveColumns**(`sheetId`: number, `startColumn`: number, `numberOfColumns`: number, `targetColumn`: number): *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* *Defined in [src/HyperFormula.ts:2316](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L2316)* Moves a particular number of columns to a specified position in a given sheet. Returns [an array of cells whose values changed as a result of this operation](https://hyperformula.handsontable.com/docs/guide/basic-operations.md#changes-array). Note that this method may trigger dependency graph recalculation. **`fires`** [valuesUpdated](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md#valuesupdated) if recalculation was triggered by this change **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/nosheetwithiderror.md) when the given sheet ID does not exist **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if any of its basic type argument is of wrong type **`throws`** [InvalidArgumentsError](https://hyperformula.handsontable.com/docs/api/classes/invalidargumentserror.md) when the given arguments are invalid **`throws`** [SourceLocationHasArrayError](https://hyperformula.handsontable.com/docs/api/classes/sourcelocationhasarrayerror.md) when the source location has array inside - array cannot be moved **`throws`** [TargetLocationHasArrayError](https://hyperformula.handsontable.com/docs/api/classes/targetlocationhasarrayerror.md) when the target location has array inside - cells cannot be replaced by the array **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['1', '2', '3', '=RAND()', '=SUM(A1:C1)'], ]); // should return a list of cells which values changed after the operation, // their absolute addresses and new values, for this example: // [{ // address: { sheet: 0, col: 1, row: 0 }, // newValue: 0.16210054671639, // }, { // address: { sheet: 0, col: 4, row: 0 }, // newValue: 6.16210054671639, // }] const changes = hfInstance.moveColumns(0, 1, 1, 2); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetId` | number | a sheet number in which the operation will be performed | `startColumn` | number | number of the first column to move | `numberOfColumns` | number | number of columns to move | `targetColumn` | number | column number before which columns will be moved | **Returns:** *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* ___ ### removeColumns ▸ **removeColumns**(`sheetId`: number, ...`indexes`: [ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[]): *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* *Defined in [src/HyperFormula.ts:2049](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L2049)* Removes multiple columns from a specified position in a given sheet. Does nothing if columns are outside the effective sheet size. Returns [an array of cells whose values changed as a result of this operation](https://hyperformula.handsontable.com/docs/guide/basic-operations.md#changes-array). Note that this method may trigger dependency graph recalculation. **`fires`** [valuesUpdated](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md#valuesupdated) if recalculation was triggered by this change **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if any of its basic type argument is of wrong type **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/nosheetwithiderror.md) when the given sheet ID does not exist **`throws`** [InvalidArgumentsError](https://hyperformula.handsontable.com/docs/api/classes/invalidargumentserror.md) when the given arguments are invalid **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['0', '=SUM(1, 2, 3)', '=A1'], ]); // should return a list of cells which values changed after the operation, // their absolute addresses and new values, in this example it will return: // [{ // address: { sheet: 0, col: 1, row: 0 }, // newValue: { error: [CellError], value: '#REF!' }, // }] const changes = hfInstance.removeColumns(0, [0, 1]); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetId` | number | sheet ID from which columns will be removed | `...indexes` | [ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[] | non-contiguous indexes with format: [column, amount] | **Returns:** *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* ___ ### setColumnOrder ▸ **setColumnOrder**(`sheetId`: number, `newColumnOrder`: number[]): *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* *Defined in [src/HyperFormula.ts:1715](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L1715)* Reorders columns of a sheet according to a permutation of 0-based indexes. Parameter `newColumnOrder` should have the form `[ newPositionForColumn0, newPositionForColumn1, newPositionForColumn2, ... ]`. In other words, the value at index `i` is the new position for the column that is currently at index `i`. Note that this is the opposite of `[ previousPositionForColumn0, previousPositionForColumn1, ... ]`. This method might be used to [sort the columns of a sheet](https://hyperformula.handsontable.com/docs/guide/sorting-data.md). Returns [an array of cells whose values changed as a result of this operation](https://hyperformula.handsontable.com/docs/guide/basic-operations.md#changes-array). Note: This method may trigger dependency graph recalculation. **`fires`** [valuesUpdated](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md#valuesupdated) if recalculation was triggered by this change **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if any of its basic type argument is of wrong type **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/nosheetwithiderror.md) when the given sheet ID does not exist **`throws`** [InvalidArgumentsError](https://hyperformula.handsontable.com/docs/api/classes/invalidargumentserror.md) when columnMapping does not define correct column permutation for some subset of columns of the given sheet **`throws`** [SourceLocationHasArrayError](https://hyperformula.handsontable.com/docs/api/classes/sourcelocationhasarrayerror.md) when the selected position has array inside **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['A', 'B', 'C'] ]); // Move 'A' to index 1, 'B' to index 2, and 'C' to index 0. const newColumnOrder = [1, 2, 0]; // [ newPosForA, newPosForB, newPosForC ] const changes = hfInstance.setColumnOrder(0, newColumnOrder); // Sheet after this operation: [['C', 'A', 'B']] ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetId` | number | ID of a sheet to operate on | `newColumnOrder` | number[] | permutation of columns; array length must match the number of columns returned by [getSheetDimensions()](#getsheetdimensions) | **Returns:** *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* ___ ### swapColumnIndexes ▸ **swapColumnIndexes**(`sheetId`: number, `columnMapping`: [number, number][]): *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* *Defined in [src/HyperFormula.ts:1637](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L1637)* Reorders columns of a sheet according to a source-target mapping. Returns [an array of cells whose values changed as a result of this operation](https://hyperformula.handsontable.com/docs/guide/basic-operations.md#changes-array). Note that this method may trigger dependency graph recalculation. **`fires`** [valuesUpdated](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md#valuesupdated) if recalculation was triggered by this change **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if any of its basic type argument is of wrong type **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/nosheetwithiderror.md) when the given sheet ID does not exist **`throws`** [InvalidArgumentsError](https://hyperformula.handsontable.com/docs/api/classes/invalidargumentserror.md) when columnMapping does not define correct column permutation for some subset of columns of the given sheet **`throws`** [SourceLocationHasArrayError](https://hyperformula.handsontable.com/docs/api/classes/sourcelocationhasarrayerror.md) when the selected position has array inside **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ [1, 2, 4], [5] ]); // should set swap columns 0 and 2 in place, returns: // [{ // address: { sheet: 0, col: 2, row: 0 }, // newValue: 1, // }, // { // address: { sheet: 0, col: 2, row: 1 }, // newValue: 5, // }, // { // address: { sheet: 0, col: 0, row: 0 }, // newValue: 4, // }, // { // address: { sheet: 0, col: 0, row: 1 }, // newValue: null, // }] const changes = hfInstance.swapColumnIndexes(0, [[0, 2], [2, 0]]); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetId` | number | ID of a sheet to operate on | `columnMapping` | [number, number][] | array mapping original positions to final positions of columns | **Returns:** *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* ___ ## Cells ### doesCellHaveFormula ▸ **doesCellHaveFormula**(`cellAddress`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *boolean* *Defined in [src/HyperFormula.ts:3419](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L3419)* Returns `true` if the specified cell contains a formula. The method accepts cell coordinates as object with column, row and sheet numbers. **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/nosheetwithiderror.md) when the given sheet ID does not exist **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if cellAddress is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['=SUM(A2:A3)', '2'], ]); // should return 'true' since the A1 cell contains a formula const A1Formula = hfInstance.doesCellHaveFormula({ sheet: 0, col: 0, row: 0 }); // should return 'false' since the B1 cell does not contain a formula const B1NoFormula = hfInstance.doesCellHaveFormula({ sheet: 0, col: 1, row: 0 }); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `cellAddress` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | cell coordinates | **Returns:** *boolean* ___ ### doesCellHaveSimpleValue ▸ **doesCellHaveSimpleValue**(`cellAddress`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *boolean* *Defined in [src/HyperFormula.ts:3388](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L3388)* Returns `true` if the specified cell contains a simple value. The method accepts cell coordinates as object with column, row and sheet numbers. **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/nosheetwithiderror.md) when the given sheet ID does not exist **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if cellAddress is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['=SUM(A2:A3)', '2'], ]); // should return 'true' since the selected cell contains a simple value const isA1Simple = hfInstance.doesCellHaveSimpleValue({ sheet: 0, col: 0, row: 0 }); // should return 'false' since the selected cell does not contain a simple value const isB1Simple = hfInstance.doesCellHaveSimpleValue({ sheet: 0, col: 1, row: 0 }); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `cellAddress` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | cell coordinates | **Returns:** *boolean* ___ ### getCellFormula ▸ **getCellFormula**(`cellAddress`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *string | undefined* *Defined in [src/HyperFormula.ts:843](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L843)* Returns a normalized formula string from the cell of a given address or `undefined` for an address that does not exist and empty values. **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/nosheetwithiderror.md) when the given sheet ID does not exist **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) when cellAddress is of incorrect type **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['=SUM(1, 2, 3)', '0'], ]); // should return a normalized A1 cell formula: '=SUM(1, 2, 3)' const A1Formula = hfInstance.getCellFormula({ sheet: 0, col: 0, row: 0 }); // should return a normalized B1 cell formula: 'undefined' const B1Formula = hfInstance.getCellFormula({ sheet: 0, col: 1, row: 0 }); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `cellAddress` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | cell coordinates | **Returns:** *string | undefined* ___ ### getCellHyperlink ▸ **getCellHyperlink**(`cellAddress`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *string | undefined* *Defined in [src/HyperFormula.ts:873](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L873)* Returns the `HYPERLINK` url for a cell of a given address or `undefined` for an address that does not exist or a cell that is not `HYPERLINK` **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/nosheetwithiderror.md) when the given sheet ID does not exist **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) when cellAddress is of incorrect type **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['=HYPERLINK("https://hyperformula.handsontable.com/", "HyperFormula")', '0'], ]); // should return url of 'HYPERLINK': https://hyperformula.handsontable.com/ const A1Hyperlink = hfInstance.getCellHyperlink({ sheet: 0, col: 0, row: 0 }); // should return 'undefined' for a cell that is not 'HYPERLINK' const B1Hyperlink = hfInstance.getCellHyperlink({ sheet: 0, col: 1, row: 0 }); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `cellAddress` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | cell coordinates | **Returns:** *string | undefined* ___ ### getCellSerialized ▸ **getCellSerialized**(`cellAddress`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *[RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent)* *Defined in [src/HyperFormula.ts:905](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L905)* Returns [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent) with a serialized content of the cell of a given address: either a cell formula, an explicit value, or an error. **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/nosheetwithiderror.md) when the given sheet ID does not exist **`throws`** [EvaluationSuspendedError](https://hyperformula.handsontable.com/docs/api/classes/evaluationsuspendederror.md) when the evaluation is suspended **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) when cellAddress is of incorrect type **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['=SUM(1, 2, 3)', '0'], ]); // should return serialized content of A1 cell: '=SUM(1, 2, 3)' const cellA1Serialized = hfInstance.getCellSerialized({ sheet: 0, col: 0, row: 0 }); // should return serialized content of B1 cell: '0' const cellB1Serialized = hfInstance.getCellSerialized({ sheet: 0, col: 1, row: 0 }); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `cellAddress` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | cell coordinates | **Returns:** *[RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent)* ___ ### getCellType ▸ **getCellType**(`cellAddress`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *[CellType](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-celltype)* *Defined in [src/HyperFormula.ts:3356](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L3356)* Returns the type of a cell at a given address. The method accepts cell coordinates as object with column, row and sheet numbers. **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/nosheetwithiderror.md) when the given sheet ID does not exist **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if cellAddress is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['=SUM(A2:A3)', '2'], ]); // should return 'FORMULA', the cell of given coordinates is of this type const cellA1Type = hfInstance.getCellType({ sheet: 0, col: 0, row: 0 }); // should return 'VALUE', the cell of given coordinates is of this type const cellB1Type = hfInstance.getCellType({ sheet: 0, col: 1, row: 0 }); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `cellAddress` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | cell coordinates | **Returns:** *[CellType](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-celltype)* ___ ### getCellValue ▸ **getCellValue**(`cellAddress`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *[CellValue](https://hyperformula.handsontable.com/docs/api/globals.md#cellvalue)* *Defined in [src/HyperFormula.ts:812](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L812)* Returns the cell value of a given address. Applies rounding and post-processing. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) when cellAddress is of incorrect type **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/nosheetwithiderror.md) when the given sheet ID does not exist **`throws`** [EvaluationSuspendedError](https://hyperformula.handsontable.com/docs/api/classes/evaluationsuspendederror.md) when the evaluation is suspended **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['=SUM(1, 2, 3)', '2'], ]); // get value of A1 cell, should be '6' const A1Value = hfInstance.getCellValue({ sheet: 0, col: 0, row: 0 }); // get value of B1 cell, should be '2' const B1Value = hfInstance.getCellValue({ sheet: 0, col: 1, row: 0 }); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `cellAddress` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | cell coordinates | **Returns:** *[CellValue](https://hyperformula.handsontable.com/docs/api/globals.md#cellvalue)* ___ ### getCellValueDetailedType ▸ **getCellValueDetailedType**(`cellAddress`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *[CellValueDetailedType](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-cellvaluedetailedtype)* *Defined in [src/HyperFormula.ts:3550](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L3550)* Returns detailed type of the cell value of a given address. The method accepts cell coordinates as object with column, row and sheet numbers. For more information, see the [Types of values guide](https://hyperformula.handsontable.com/docs/guide/types-of-values.md). **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/nosheetwithiderror.md) when the given sheet ID does not exist **`throws`** [EvaluationSuspendedError](https://hyperformula.handsontable.com/docs/api/classes/evaluationsuspendederror.md) when the evaluation is suspended **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if cellAddress is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['1%', '1$'], ]); // should return 'NUMBER_PERCENT', cell value type of provided coordinates is a number with a format inference percent. const cellType = hfInstance.getCellValueDetailedType({ sheet: 0, col: 0, row: 0 }); // should return 'NUMBER_CURRENCY', cell value type of provided coordinates is a number with a format inference currency. const cellType = hfInstance.getCellValueDetailedType({ sheet: 0, col: 1, row: 0 }); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `cellAddress` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | cell coordinates | **Returns:** *[CellValueDetailedType](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-cellvaluedetailedtype)* ___ ### getCellValueFormat ▸ **getCellValueFormat**(`cellAddress`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *FormatInfo* *Defined in [src/HyperFormula.ts:3584](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L3584)* Returns auxiliary format information of the cell value of a given address. The method accepts cell coordinates as object with column, row and sheet numbers. **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/nosheetwithiderror.md) when the given sheet ID does not exist **`throws`** [EvaluationSuspendedError](https://hyperformula.handsontable.com/docs/api/classes/evaluationsuspendederror.md) when the evaluation is suspended **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if cellAddress is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['1$', '1'], ]); // should return '$', cell value type of provided coordinates is a number with a format inference currency, parsed as using '$' as currency. const cellFormat = hfInstance.getCellValueFormat({ sheet: 0, col: 0, row: 0 }); // should return undefined, cell value type of provided coordinates is a number with no format information. const cellFormat = hfInstance.getCellValueFormat({ sheet: 0, col: 1, row: 0 }); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `cellAddress` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | cell coordinates | **Returns:** *FormatInfo* ___ ### getCellValueType ▸ **getCellValueType**(`cellAddress`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *[CellValueType](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-cellvaluetype)* *Defined in [src/HyperFormula.ts:3514](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L3514)* Returns type of the cell value of a given address. The method accepts cell coordinates as object with column, row and sheet numbers. For more information, see the [Types of values guide](https://hyperformula.handsontable.com/docs/guide/types-of-values.md). **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/nosheetwithiderror.md) when the given sheet ID does not exist **`throws`** [EvaluationSuspendedError](https://hyperformula.handsontable.com/docs/api/classes/evaluationsuspendederror.md) when the evaluation is suspended **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if cellAddress is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['=SUM(1, 2, 3)', '2'], ]); // should return 'NUMBER', cell value type of provided coordinates is a number const cellValue = hfInstance.getCellValueType({ sheet: 0, col: 1, row: 0 }); // should return 'NUMBER', cell value type of provided coordinates is a number const cellValue = hfInstance.getCellValueType({ sheet: 0, col: 0, row: 0 }); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `cellAddress` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | cell coordinates | **Returns:** *[CellValueType](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-cellvaluetype)* ___ ### isCellEmpty ▸ **isCellEmpty**(`cellAddress`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *boolean* *Defined in [src/HyperFormula.ts:3451](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L3451)* Returns`true` if the specified cell is empty. The method accepts cell coordinates as object with column, row and sheet numbers. **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/nosheetwithiderror.md) when the given sheet ID does not exist **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if cellAddress is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ [null, '1'], ]); // should return 'true', cell of provided coordinates is empty const isEmpty = hfInstance.isCellEmpty({ sheet: 0, col: 0, row: 0 }); // should return 'false', cell of provided coordinates is not empty const isNotEmpty = hfInstance.isCellEmpty({ sheet: 0, col: 1, row: 0 }); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `cellAddress` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | cell coordinates | **Returns:** *boolean* ___ ### isCellPartOfArray ▸ **isCellPartOfArray**(`cellAddress`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *boolean* *Defined in [src/HyperFormula.ts:3479](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L3479)* Returns `true` if a given cell is a part of an array. The method accepts cell coordinates as object with column, row and sheet numbers. **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/nosheetwithiderror.md) when the given sheet ID does not exist **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if cellAddress is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['{=TRANSPOSE(B1:B1)}'], ]); // should return 'true', cell of provided coordinates is a part of an array const isPartOfArray = hfInstance.isCellPartOfArray({ sheet: 0, col: 0, row: 0 }); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `cellAddress` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | cell coordinates | **Returns:** *boolean* ___ ### isItPossibleToMoveCells ▸ **isItPossibleToMoveCells**(`source`: [SimpleCellRange](https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange.md), `destinationLeftCorner`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *boolean* *Defined in [src/HyperFormula.ts:2085](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L2085)* Returns information whether it is possible to move cells to a specified position in a given sheet. Checks against particular rules to ascertain that moveCells can be called. If returns `true`, doing [moveCells](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#movecells) operation won't throw any errors. Returns `false` if the operation might be disrupted and causes side effects by the fact that there is an array inside the selected columns, the target location includes an array or the provided address is invalid. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if destinationLeftCorner, source, or any of basic type arguments are of wrong type **`throws`** [SheetsNotEqual](https://hyperformula.handsontable.com/docs/api/classes/sheetsnotequal.md) if range provided has distinct sheet numbers for start and end **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['1', '2'], ]); // choose the coordinates and assign them to variables const source = { sheet: 0, col: 1, row: 0 }; const destination = { sheet: 0, col: 3, row: 0 }; // should return 'true' for this example // it is possible to move a block of width 1 and height 1 // from the corner: column 1 and row 0 of sheet 0 // into destination corner: column 3, row 0 of sheet 0 const isMovable = hfInstance.isItPossibleToMoveCells({ start: source, end: source }, destination); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `source` | [SimpleCellRange](https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange.md) | range for a moved block | `destinationLeftCorner` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | upper left address of the target cell block | **Returns:** *boolean* ___ ### isItPossibleToSetCellContents ▸ **isItPossibleToSetCellContents**(`address`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | [SimpleCellRange](https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange.md)): *boolean* *Defined in [src/HyperFormula.ts:1356](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L1356)* Returns information whether it is possible to change the content in a rectangular area bounded by the box. If returns `true`, doing [setCellContents](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#setcellcontents) operation won't throw any errors. Returns `false` if the address is invalid or the sheet does not exist. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if any of its basic type argument is of wrong type **`throws`** [SheetsNotEqual](https://hyperformula.handsontable.com/docs/api/classes/sheetsnotequal.md) if range provided has distinct sheet numbers for start and end **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['1', '2'], ]); // top left corner const address1 = { col: 0, row: 0, sheet: 0 }; // bottom right corner const address2 = { col: 1, row: 0, sheet: 0 }; // should return 'true' for this example, it is possible to set content of // width 2, height 1 in the first row and column of sheet 0 const isSettable = hfInstance.isItPossibleToSetCellContents({ start: address1, end: address2 }); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `address` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | [SimpleCellRange](https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange.md) | single cell or block of cells to check | **Returns:** *boolean* ___ ### moveCells ▸ **moveCells**(`source`: [SimpleCellRange](https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange.md), `destinationLeftCorner`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* *Defined in [src/HyperFormula.ts:2142](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L2142)* Moves the content of a cell block from source to the target location. Returns [an array of cells whose values changed as a result of this operation](https://hyperformula.handsontable.com/docs/guide/basic-operations.md#changes-array). Note that this method may trigger dependency graph recalculation. **`fires`** [valuesUpdated](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md#valuesupdated) if recalculation was triggered by this change **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/nosheetwithiderror.md) when the given sheet ID does not exist **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if destinationLeftCorner or source are of wrong type **`throws`** [InvalidArgumentsError](https://hyperformula.handsontable.com/docs/api/classes/invalidargumentserror.md) when the given arguments are invalid **`throws`** [SheetSizeLimitExceededError](https://hyperformula.handsontable.com/docs/api/classes/sheetsizelimitexceedederror.md) when performing this operation would result in sheet size limits exceeding **`throws`** [SourceLocationHasArrayError](https://hyperformula.handsontable.com/docs/api/classes/sourcelocationhasarrayerror.md) when the source location has array inside - array cannot be moved **`throws`** [TargetLocationHasArrayError](https://hyperformula.handsontable.com/docs/api/classes/targetlocationhasarrayerror.md) when the target location has array inside - cells cannot be replaced by the array **`throws`** [SheetsNotEqual](https://hyperformula.handsontable.com/docs/api/classes/sheetsnotequal.md) if range provided has distinct sheet numbers for start and end **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['=RAND()', '42'], ]); // choose the coordinates and assign them to variables const source = { sheet: 0, col: 1, row: 0 }; const destination = { sheet: 0, col: 3, row: 0 }; // should return a list of cells which values changed after the operation, // their absolute addresses and new values, for this example: // [{ // address: { sheet: 0, col: 0, row: 0 }, // newValue: 0.93524248002062, // }] const changes = hfInstance.moveCells({ start: source, end: source }, destination); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `source` | [SimpleCellRange](https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange.md) | range for a moved block | `destinationLeftCorner` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | upper left address of the target cell block | **Returns:** *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* ___ ### setCellContents ▸ **setCellContents**(`topLeftCornerAddress`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), `cellContents`: [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent)[][] | [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent)): *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* *Defined in [src/HyperFormula.ts:1409](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L1409)* Sets the content for a block of cells of a given coordinates. Returns [an array of cells whose values changed as a result of this operation](https://hyperformula.handsontable.com/docs/guide/basic-operations.md#changes-array). Note that this method may trigger dependency graph recalculation. **`fires`** [valuesUpdated](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md#valuesupdated) if recalculation was triggered by this change **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/nosheetwithiderror.md) when the given sheet ID does not exist **`throws`** [InvalidArgumentsError](https://hyperformula.handsontable.com/docs/api/classes/invalidargumentserror.md) when the value is not an array of arrays or a raw cell value **`throws`** [SheetSizeLimitExceededError](https://hyperformula.handsontable.com/docs/api/classes/sheetsizelimitexceedederror.md) when performing this operation would result in sheet size limits exceeding **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if topLeftCornerAddress argument is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['1', '2', '=A1'], ]); // should set the content, returns: // [{ // address: { sheet: 0, col: 3, row: 0 }, // newValue: 2, // }] const changes = hfInstance.setCellContents({ col: 3, row: 0, sheet: 0 }, [['=B1']]); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `topLeftCornerAddress` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | top left corner of block of cells | `cellContents` | [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent)[][] | [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent) | array with content | **Returns:** *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* ___ ## Named Expressions ### addNamedExpression ▸ **addNamedExpression**(`expressionName`: string, `expression`: [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent), `scope?`: undefined | number, `options?`: [NamedExpressionOptions](https://hyperformula.handsontable.com/docs/api/globals.md#namedexpressionoptions)): *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* *Defined in [src/HyperFormula.ts:3904](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L3904)* Adds a specified named expression. Returns [an array of cells whose values changed as a result of this operation](https://hyperformula.handsontable.com/docs/guide/basic-operations.md#changes-array). Note that this method may trigger dependency graph recalculation. **`fires`** [namedExpressionAdded](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md#namedexpressionadded) always, unless [batch](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#batch) mode is used **`fires`** [valuesUpdated](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md#valuesupdated) if recalculation was triggered by this change **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if any of its basic type argument is of wrong type **`throws`** [NamedExpressionNameIsAlreadyTakenError](https://hyperformula.handsontable.com/docs/api/classes/namedexpressionnameisalreadytakenerror.md) when the named-expression name is not available. **`throws`** [NamedExpressionNameIsInvalidError](https://hyperformula.handsontable.com/docs/api/classes/namedexpressionnameisinvaliderror.md) when the named-expression name is not valid **`throws`** [NoRelativeAddressesAllowedError](https://hyperformula.handsontable.com/docs/api/classes/norelativeaddressesallowederror.md) when the named-expression formula contains relative references **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/nosheetwithiderror.md) if no sheet with given sheetId exists **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['42'], ]); // add own expression, scope limited to 'Sheet1' (sheetId=0), the method should return a list of cells which values // changed after the operation, their absolute addresses and new values // for this example: // [{ // name: 'prettyName', // newValue: 142, // }] const changes = hfInstance.addNamedExpression('prettyName', '=Sheet1!$A$1+100', 0); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `expressionName` | string | a name of the expression to be added | `expression` | [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent) | the expression | `scope?` | undefined | number | scope definition, `sheetId` for local scope or `undefined` for global scope | `options?` | [NamedExpressionOptions](https://hyperformula.handsontable.com/docs/api/globals.md#namedexpressionoptions) | additional metadata related to named expression | **Returns:** *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* ___ ### changeNamedExpression ▸ **changeNamedExpression**(`expressionName`: string, `newExpression`: [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent), `scope?`: undefined | number, `options?`: [NamedExpressionOptions](https://hyperformula.handsontable.com/docs/api/globals.md#namedexpressionoptions)): *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* *Defined in [src/HyperFormula.ts:4126](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L4126)* Changes a given named expression to a specified formula. Returns [an array of cells whose values changed as a result of this operation](https://hyperformula.handsontable.com/docs/guide/basic-operations.md#changes-array). Note that this method may trigger dependency graph recalculation. **`fires`** [valuesUpdated](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md#valuesupdated) if recalculation was triggered by this change **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if any of its basic type argument is of wrong type **`throws`** [NamedExpressionDoesNotExistError](https://hyperformula.handsontable.com/docs/api/classes/namedexpressiondoesnotexisterror.md) when the given expression does not exist. **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/nosheetwithiderror.md) if no sheet with given sheetId exists **`throws`** [[ArrayFormulasNotSupportedError]] when the named expression formula is an array formula **`throws`** [NoRelativeAddressesAllowedError](https://hyperformula.handsontable.com/docs/api/classes/norelativeaddressesallowederror.md) when the named expression formula contains relative references **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['42'], ]); // add a named expression, scope limited to 'Sheet1' (sheetId=0) hfInstance.addNamedExpression('prettyName', '=Sheet1!$A$1+100', 0); // change the named expression const changes = hfInstance.changeNamedExpression('prettyName', '=Sheet1!$A$1+200'); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `expressionName` | string | an expression name, case-insensitive. | `newExpression` | [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent) | a new expression | `scope?` | undefined | number | scope definition, `sheetId` for local scope or `undefined` for global scope | `options?` | [NamedExpressionOptions](https://hyperformula.handsontable.com/docs/api/globals.md#namedexpressionoptions) | additional metadata related to named expression | **Returns:** *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* ___ ### getAllNamedExpressionsSerialized ▸ **getAllNamedExpressionsSerialized**(): *[SerializedNamedExpression](https://hyperformula.handsontable.com/docs/api/interfaces/serializednamedexpression.md)[]* *Defined in [src/HyperFormula.ts:4294](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L4294)* Returns all named expressions serialized. For more information, see the [Named expressions guide](https://hyperformula.handsontable.com/docs/guide/named-expressions.md). **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['42'], ['50'], ['60'], ]); // add two named expressions and one scoped hfInstance.addNamedExpression('prettyName', '=Sheet1!$A$1+100'); hfInstance.addNamedExpression('anotherPrettyName', '=Sheet1!$A$2+100'); hfInstance.addNamedExpression('prettyName3', '=Sheet1!$A$3+100', 0); // get all expressions serialized // should return: // [ // {name: 'prettyName', expression: '=Sheet1!$A$1+100', options: undefined, scope: undefined}, // {name: 'anotherPrettyName', expression: '=Sheet1!$A$2+100', options: undefined, scope: undefined}, // {name: 'alsoPrettyName', expression: '=Sheet1!$A$3+100', options: undefined, scope: 0} // ] const allExpressions = hfInstance.getAllNamedExpressionsSerialized(); ``` **Returns:** *[SerializedNamedExpression](https://hyperformula.handsontable.com/docs/api/interfaces/serializednamedexpression.md)[]* ___ ### getNamedExpression ▸ **getNamedExpression**(`expressionName`: string, `scope?`: undefined | number): *[NamedExpression](https://hyperformula.handsontable.com/docs/api/interfaces/namedexpression.md) | undefined* *Defined in [src/HyperFormula.ts:4029](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L4029)* Returns a named expression, or `undefined` for a named expression that does not exist or does not hold a formula. For more information, see the [Named expressions guide](https://hyperformula.handsontable.com/docs/guide/named-expressions.md). **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if any of its basic type argument is of wrong type **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/nosheetwithiderror.md) if no sheet with given sheetId exists **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['42'], ]); // add a named expression in 'Sheet1' (sheetId=0) hfInstance.addNamedExpression('prettyName', '=Sheet1!$A$1+100', 0); // returns a named expression that corresponds to the passed name from 'Sheet1' (sheetId=0) // for this example, returns: // {name: 'prettyName', expression: '=Sheet1!$A$1+100', options: undefined, scope: 0} const myFormula = hfInstance.getNamedExpression('prettyName', 0); // for a named expression that doesn't exist, returns 'undefined': const myFormulaTwo = hfInstance.getNamedExpression('uglyName', 0); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `expressionName` | string | expression name, case-insensitive. | `scope?` | undefined | number | scope definition, `sheetId` for local scope or `undefined` for global scope | **Returns:** *[NamedExpression](https://hyperformula.handsontable.com/docs/api/interfaces/namedexpression.md) | undefined* ___ ### getNamedExpressionFormula ▸ **getNamedExpressionFormula**(`expressionName`: string, `scope?`: undefined | number): *string | undefined* *Defined in [src/HyperFormula.ts:3984](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L3984)* Returns a normalized formula string for given named expression, or `undefined` for a named expression that does not exist or does not hold a formula. For more information, see the [Named expressions guide](https://hyperformula.handsontable.com/docs/guide/named-expressions.md). **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if any of its basic type argument is of wrong type **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/nosheetwithiderror.md) if no sheet with given sheetId exists **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['42'], ]); // add a named expression in 'Sheet1' (sheetId=0) hfInstance.addNamedExpression('prettyName', '=Sheet1!$A$1+100', 0); // returns a normalized formula string corresponding to the passed name from 'Sheet1' (sheetId=0), // '=Sheet1!A1+100' for this example const myFormula = hfInstance.getNamedExpressionFormula('prettyName', 0); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `expressionName` | string | expression name, case-insensitive. | `scope?` | undefined | number | scope definition, `sheetId` for local scope or `undefined` for global scope | **Returns:** *string | undefined* ___ ### getNamedExpressionValue ▸ **getNamedExpressionValue**(`expressionName`: string, `scope?`: undefined | number): *[CellValue](https://hyperformula.handsontable.com/docs/api/globals.md#cellvalue) | undefined* *Defined in [src/HyperFormula.ts:3942](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L3942)* Gets specified named expression value. Returns a [CellValue](https://hyperformula.handsontable.com/docs/api/globals.md#cellvalue) or undefined if the given named expression does not exist. For more information, see the [Named expressions guide](https://hyperformula.handsontable.com/docs/guide/named-expressions.md). **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if any of its basic type argument is of wrong type **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/nosheetwithiderror.md) if no sheet with given sheetId exists **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['42'], ]); // add a named expression, only 'Sheet1' (sheetId=0) considered as it is the scope hfInstance.addNamedExpression('prettyName', '=Sheet1!$A$1+100', 'Sheet1'); // returns the calculated value of a passed named expression, '142' for this example const myFormula = hfInstance.getNamedExpressionValue('prettyName', 'Sheet1'); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `expressionName` | string | expression name, case-insensitive. | `scope?` | undefined | number | scope definition, `sheetId` for local scope or `undefined` for global scope | **Returns:** *[CellValue](https://hyperformula.handsontable.com/docs/api/globals.md#cellvalue) | undefined* ___ ### isItPossibleToAddNamedExpression ▸ **isItPossibleToAddNamedExpression**(`expressionName`: string, `expression`: [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent), `scope?`: undefined | number): *boolean* *Defined in [src/HyperFormula.ts:3852](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L3852)* Returns information whether it is possible to add named expression into a specific scope. Checks against particular rules to ascertain that addNamedExpression can be called. If returns `true`, doing [addNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#addnamedexpression) operation won't throw any errors. Returns `false` if the operation might be disrupted. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if any of its basic type argument is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['42'], ]); // should return 'true' for this example, // it is possible to add named expression to global scope const isAddable = hfInstance.isItPossibleToAddNamedExpression('prettyName', '=Sheet1!$A$1+100'); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `expressionName` | string | a name of the expression to be added | `expression` | [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent) | the expression | `scope?` | undefined | number | scope definition, `sheetId` for local scope or `undefined` for global scope | **Returns:** *boolean* ___ ### isItPossibleToChangeNamedExpression ▸ **isItPossibleToChangeNamedExpression**(`expressionName`: string, `newExpression`: [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent), `scope?`: undefined | number): *boolean* *Defined in [src/HyperFormula.ts:4078](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L4078)* Returns information whether it is possible to change named expression in a specific scope. Checks against particular rules to ascertain that changeNamedExpression can be called. If returns `true`, doing [changeNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#changenamedexpression) operation won't throw any errors. Returns `false` if the operation might be disrupted. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if any of its basic type argument is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['42'], ]); // add a named expression hfInstance.addNamedExpression('prettyName', '=Sheet1!$A$1+100'); // should return 'true' for this example, // it is possible to change named expression const isAddable = hfInstance.isItPossibleToChangeNamedExpression('prettyName', '=Sheet1!$A$1+100'); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `expressionName` | string | an expression name, case-insensitive. | `newExpression` | [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent) | a new expression | `scope?` | undefined | number | scope definition, `sheetId` for local scope or `undefined` for global scope | **Returns:** *boolean* ___ ### isItPossibleToRemoveNamedExpression ▸ **isItPossibleToRemoveNamedExpression**(`expressionName`: string, `scope?`: undefined | number): *boolean* *Defined in [src/HyperFormula.ts:4162](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L4162)* Returns information whether it is possible to remove named expression from a specific scope. Checks against particular rules to ascertain that removeNamedExpression can be called. If returns `true`, doing [removeNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#removenamedexpression) operation won't throw any errors. Returns `false` if the operation might be disrupted. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if any of its basic type argument is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['42'], ]); // add a named expression hfInstance.addNamedExpression('prettyName', '=Sheet1!$A$1+100'); // should return 'true' for this example, // it is possible to change named expression const isAddable = hfInstance.isItPossibleToRemoveNamedExpression('prettyName'); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `expressionName` | string | an expression name, case-insensitive. | `scope?` | undefined | number | scope definition, `sheetId` for local scope or `undefined` for global scope | **Returns:** *boolean* ___ ### listNamedExpressions ▸ **listNamedExpressions**(`scope?`: undefined | number): *string[]* *Defined in [src/HyperFormula.ts:4256](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L4256)* Lists named expressions. - If scope parameter is provided, returns an array of expression names defined for this scope. - If scope parameter is undefined, returns an array of global expression names. For more information, see the [Named expressions guide](https://hyperformula.handsontable.com/docs/guide/named-expressions.md). **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if any of its basic type argument is of wrong type **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/nosheetwithiderror.md) if no sheet with given sheetId exists **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['42'], ['50'], ['60'], ]); // add two named expressions and one scoped hfInstance.addNamedExpression('prettyName', '=Sheet1!$A$1+100'); hfInstance.addNamedExpression('anotherPrettyName', '=Sheet1!$A$2+100'); hfInstance.addNamedExpression('alsoPrettyName', '=Sheet1!$A$3+100', 0); // list the expressions, should return: ['prettyName', 'anotherPrettyName'] for this example const listOfExpressions = hfInstance.listNamedExpressions(); // list the expressions, should return: ['alsoPrettyName'] for this example const listOfExpressions = hfInstance.listNamedExpressions(0); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `scope?` | undefined | number | scope of the named expressions, `sheetId` for local scope or `undefined` for global scope | **Returns:** *string[]* ___ ### removeNamedExpression ▸ **removeNamedExpression**(`expressionName`: string, `scope?`: undefined | number): *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* *Defined in [src/HyperFormula.ts:4207](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L4207)* Removes a named expression. Returns [an array of cells whose values changed as a result of this operation](https://hyperformula.handsontable.com/docs/guide/basic-operations.md#changes-array). Note that this method may trigger dependency graph recalculation. **`fires`** [namedExpressionRemoved](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md#namedexpressionremoved) after the expression was removed **`fires`** [valuesUpdated](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md#valuesupdated) if recalculation was triggered by this change **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if any of its basic type argument is of wrong type **`throws`** [NamedExpressionDoesNotExistError](https://hyperformula.handsontable.com/docs/api/classes/namedexpressiondoesnotexisterror.md) when the given expression does not exist. **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/nosheetwithiderror.md) if no sheet with given sheetId exists **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['42'], ]); // add a named expression hfInstance.addNamedExpression('prettyName', '=Sheet1!$A$1+100', 0); // remove the named expression const changes = hfInstance.removeNamedExpression('prettyName', 0); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `expressionName` | string | expression name, case-insensitive. | `scope?` | undefined | number | scope definition, `sheetId` for local scope or `undefined` for global scope | **Returns:** *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* ___ ## Helpers ### calculateFormula ▸ **calculateFormula**(`formulaString`: string, `sheetId`: number): *[CellValue](https://hyperformula.handsontable.com/docs/api/globals.md#cellvalue) | [CellValue](https://hyperformula.handsontable.com/docs/api/globals.md#cellvalue)[][]* *Defined in [src/HyperFormula.ts:4359](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L4359)* Calculates fire-and-forget formula, returns the calculated value. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if any of its basic type arguments is of wrong type. **`throws`** [NotAFormulaError](https://hyperformula.handsontable.com/docs/api/classes/notaformulaerror.md) when the provided string is not a valid formula (i.e., doesn't start with `=`). **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/nosheetwithiderror.md) when the provided `sheetID` doesn't exist. **`example`** ```js const hfInstance = HyperFormula.buildFromSheets({ Sheet1: [['58']], Sheet2: [['1', '2', '3'], ['4', '5', '6']] }); // returns the calculated formula's value // for this example, returns `68` const calculatedFormula = hfInstance.calculateFormula('=A1+10', 0); // for this example, returns [['11', '12', '13'], ['14', '15', '16']] const calculatedFormula = hfInstance.calculateFormula('=A1:B3+10', 1); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `formulaString` | string | A formula in a proper format, starting with `=`. | `sheetId` | number | The ID of a sheet in context of which the formula gets evaluated. | **Returns:** *[CellValue](https://hyperformula.handsontable.com/docs/api/globals.md#cellvalue) | [CellValue](https://hyperformula.handsontable.com/docs/api/globals.md#cellvalue)[][]* ___ ### getAvailableFunctions ▸ **getAvailableFunctions**(): *FunctionListEntry[]* *Defined in [src/HyperFormula.ts:4530](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L4530)* Returns metadata of all functions available in this instance for a function picker, with names translated according to the language set in this instance's configuration. Each entry contains the translated name, the language-independent canonical name, the category, and a short description. Entries are sorted alphabetically by their localized name, using the collation rules of the host environment, so the exact order of names that differ only by case or diacritics may vary between hosts. The list reflects this instance's own registry: the built-in functions and any custom (user-registered) functions, plus their aliases. An alias is listed under its own id, borrowing its target's category and description, with the target id exposed as `aliasOf`. Custom functions ship no catalogue entry, so their `category` is `'Custom'` and they carry no `shortDescription` — with one exception: the catalogue is keyed by function id, so a custom plugin registered *over* a built-in id inherits that id's entry and is listed with the built-in's category and description. That registry is a snapshot taken when the instance was built, not a live view of the global one: a function registered with [registerFunctionPlugin](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#static-registerfunctionplugin) or [registerFunction](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#static-registerfunction) afterwards reaches only the engines built later, so an engine kept across a late registration keeps reporting the set it was built with. A function with no translation entry for the configured language is omitted: the interpreter refuses to evaluate an untranslated id, so listing it would advertise a function that cannot be called — in practice, a custom plugin registered without translations for that language. A translation set to an empty string is not a missing entry: it falls back to the canonical id, so the function stays listed under its canonical name. **`example`** ```js const hfInstance = HyperFormula.buildEmpty(); // get the list of available functions, translated for the configured language const functions = hfInstance.getAvailableFunctions(); ``` **Returns:** *FunctionListEntry[]* ___ ### getCellDependents ▸ **getCellDependents**(`address`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | [SimpleCellRange](https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange.md)): *([SimpleCellRange](https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange.md) | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md))[]* *Defined in [src/HyperFormula.ts:3183](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L3183)* Returns all the out-neighbors in the [dependency graph](https://hyperformula.handsontable.com/docs/guide/dependency-graph.md) for a given cell address or range. Including: - All cells with formulas that contain the given cell address or range - Some of the ranges that contain the given cell address or range The exact result depends on the optimizations applied by the HyperFormula to the dependency graph, some of which are described in the section ["Optimizations for large ranges"](https://hyperformula.handsontable.com/docs/guide/dependency-graph.md#optimizations-for-large-ranges). The returned array includes also named expression dependents. They are represented as cell references with sheet ID `-1`. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if address is not [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) or [SimpleCellRange](https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange.md) **`throws`** [SheetsNotEqual](https://hyperformula.handsontable.com/docs/api/classes/sheetsnotequal.md) if range provided has distinct sheet numbers for start and end **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/nosheetwithiderror.md) when the given sheet ID does not exist **`example`** ```js const hfInstance = HyperFormula.buildFromArray( [ ['1', '=A1', '=A1+B1'] ] ); hfInstance.getCellDependents({ sheet: 0, col: 0, row: 0}); // returns [{ sheet: 0, col: 1, row: 0}, { sheet: 0, col: 2, row: 0}] ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `address` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | [SimpleCellRange](https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange.md) | object representation of an absolute address or range of addresses | **Returns:** *([SimpleCellRange](https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange.md) | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md))[]* ___ ### getCellPrecedents ▸ **getCellPrecedents**(`address`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | [SimpleCellRange](https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange.md)): *([SimpleCellRange](https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange.md) | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md))[]* *Defined in [src/HyperFormula.ts:3221](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L3221)* Returns all the in-neighbors in the [dependency graph](https://hyperformula.handsontable.com/docs/guide/dependency-graph.md) for a given cell address or range. In particular: - If the argument is a single cell, `getCellPrecedents()` returns all cells and ranges contained in that cell's formula. - If the argument is a range of cells, `getCellPrecedents()` returns some of the cell addresses and smaller ranges contained in that range (but not all of them). The exact result depends on the optimizations applied by the HyperFormula to the dependency graph, some of which are described in the section ["Optimizations for large ranges"](https://hyperformula.handsontable.com/docs/guide/dependency-graph.md#optimizations-for-large-ranges). The returned array includes also named expression precedents. They are represented as cell references with sheet ID `-1`. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if address is of wrong type **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/nosheetwithiderror.md) when the given sheet ID does not exist **`example`** ```js const hfInstance = HyperFormula.buildFromArray( [ ['1', '=A1', '=A1+B1'] ] ); hfInstance.getCellPrecedents({ sheet: 0, col: 2, row: 0}); // returns [{ sheet: 0, col: 0, row: 0}, { sheet: 0, col: 1, row: 0}] ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `address` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | [SimpleCellRange](https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange.md) | object representation of an absolute address or range of addresses | **Returns:** *([SimpleCellRange](https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange.md) | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md))[]* ___ ### getFunctionDetails ▸ **getFunctionDetails**(`canonicalName`: string): *FunctionDetails | undefined* *Defined in [src/HyperFormula.ts:4575](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L4575)* Returns the full metadata of a single function registered in this instance, with names translated according to the language set in this instance's configuration: the parameter list (with per-parameter optionality), the number of trailing parameters that repeat (`repeatLastArgs`), the category, a short description, and the documentation link (`documentationUrl`) and usage examples (`examples`) — every built-in authors both. Resolves both built-in and custom (user-registered) functions, as well as aliases. An alias reports its target's metadata (including examples, which spell the target's name) under the alias id, with the target id exposed as `aliasOf`. Returns `undefined` when the function id is unknown, not registered in this instance, or has no translation entry for the configured language (an untranslated id cannot be evaluated, so it is not described either, which keeps this method consistent with [getAvailableFunctions](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#getavailablefunctions)). For a custom function, `category` is `'Custom'`, there is no `shortDescription`, `documentationUrl` or `examples`, and parameters are reported positionally (`Arg1`, `Arg2`, ...). A custom plugin registered over a built-in id is the exception: the catalogue is keyed by function id, so it reports that built-in's authored metadata alongside the parameter list of the implementation actually registered. `canonicalName` is matched exactly, in two ways worth knowing: - It is **case-sensitive**, unlike formula syntax. `'SUMIF'` resolves; `'sumif'` and `'SumIf'` return `undefined`, even though `=sumif(...)` evaluates. - It must be the **canonical (English) id, never a localized name**. `localizedName` is output only: under `plPL` this method reports `localizedName: 'SUMA.JEŻELI'` for `'SUMIF'`, but passing `'SUMA.JEŻELI'` back in returns `undefined`. To look up an entry from [getAvailableFunctions](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#getavailablefunctions), pass its `canonicalName`. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if any of its basic type argument is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildEmpty(); // get the details of the SUMIF function, translated for the configured language const details = hfInstance.getFunctionDetails('SUMIF'); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `canonicalName` | string | the language-independent function id, e.g. `'SUMIF'` | **Returns:** *FunctionDetails | undefined* ___ ### getNamedExpressionsFromFormula ▸ **getNamedExpressionsFromFormula**(`formulaString`: string): *string[]* *Defined in [src/HyperFormula.ts:4390](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L4390)* Return a list of named expressions used by a formula. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if any of its basic type arguments is of wrong type. **`throws`** [NotAFormulaError](https://hyperformula.handsontable.com/docs/api/classes/notaformulaerror.md) when the provided string is not a valid formula (i.e., doesn't start with `=`). **`example`** ```js const hfInstance = HyperFormula.buildEmpty(); // returns a list of named expressions used by a formula // for this example, returns ['foo', 'bar'] const namedExpressions = hfInstance.getNamedExpressionsFromFormula('=foo+bar*2'); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `formulaString` | string | A formula in a proper format, starting with `=`. | **Returns:** *string[]* ___ ### normalizeFormula ▸ **normalizeFormula**(`formulaString`: string): *string* *Defined in [src/HyperFormula.ts:4323](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L4323)* Parses and then unparses a formula. Returns a normalized formula (e.g., restores the original capitalization of sheet names, function names, cell addresses, and named expressions). **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if any of its basic type argument is of wrong type **`throws`** [NotAFormulaError](https://hyperformula.handsontable.com/docs/api/classes/notaformulaerror.md) when the provided string is not a valid formula, i.e., does not start with "=" **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['42'], ['50'], ]); // returns '=Sheet1!$A$1+10' const normalizedFormula = hfInstance.normalizeFormula('=SHEET1!$A$1+10'); // returns '=3*$A$1' const normalizedFormula = hfInstance.normalizeFormula('=3*$a$1'); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `formulaString` | string | a formula in a proper format - it must start with "=" | **Returns:** *string* ___ ### numberToDate ▸ **numberToDate**(`inputNumber`: number): *[DateTime](https://hyperformula.handsontable.com/docs/api/globals.md#datetime)* *Defined in [src/HyperFormula.ts:4629](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L4629)* Interprets number as a date. For more information, see the [Date and time handling guide](https://hyperformula.handsontable.com/docs/guide/date-and-time-handling.md). **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if any of its basic type argument is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildEmpty(); // pass the number of days since nullDate // the method should return formatted date, for this example: // {year: 2020, month: 1, day: 15} const dateFromNumber = hfInstance.numberToDate(43845); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `inputNumber` | number | number of days since nullDate, should be non-negative, fractions are ignored. | **Returns:** *[DateTime](https://hyperformula.handsontable.com/docs/api/globals.md#datetime)* ___ ### numberToDateTime ▸ **numberToDateTime**(`inputNumber`: number): *[DateTime](https://hyperformula.handsontable.com/docs/api/globals.md#datetime)* *Defined in [src/HyperFormula.ts:4603](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L4603)* Interprets number as a date + time. For more information, see the [Date and time handling guide](https://hyperformula.handsontable.com/docs/guide/date-and-time-handling.md). **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if any of its basic type argument is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildEmpty(); // pass the number of days since nullDate // the method should return formatted date and time, for this example: // {year: 2020, month: 1, day: 15, hours: 2, minutes: 24, seconds: 0} const dateTimeFromNumber = hfInstance.numberToDateTime(43845.1); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `inputNumber` | number | number of days since nullDate, should be non-negative, fractions are interpreted as hours/minutes/seconds. | **Returns:** *[DateTime](https://hyperformula.handsontable.com/docs/api/globals.md#datetime)* ___ ### numberToTime ▸ **numberToTime**(`inputNumber`: number): *[DateTime](https://hyperformula.handsontable.com/docs/api/globals.md#datetime)* *Defined in [src/HyperFormula.ts:4654](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L4654)* Interprets number as a time (hours/minutes/seconds). For more information, see the [Date and time handling guide](https://hyperformula.handsontable.com/docs/guide/date-and-time-handling.md). **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if any of its basic type argument is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildEmpty(); // pass a number to be interpreted as a time // should return {hours: 26, minutes: 24} for this example const timeFromNumber = hfInstance.numberToTime(1.1); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `inputNumber` | number | time in 24h units. | **Returns:** *[DateTime](https://hyperformula.handsontable.com/docs/api/globals.md#datetime)* ___ ### simpleCellAddressFromString ▸ **simpleCellAddressFromString**(`cellAddress`: string, `contextSheetId`: number): *[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | undefined* *Defined in [src/HyperFormula.ts:3024](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L3024)* Computes the simple (absolute) address of a cell address, based on its string representation. - If a sheet name is present in the string representation but is not present in the engine, returns `undefined`. - If no sheet name is present in the string representation, uses `contextSheetId` as a sheet id in the returned address. For more information, see the [Cell references guide](https://hyperformula.handsontable.com/docs/guide/cell-references.md). **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if any of its basic type argument is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildEmpty(); hfInstance.addSheet('Sheet0'); //sheetId = 0 // returns { sheet: 42, col: 0, row: 0 } const simpleCellAddress = hfInstance.simpleCellAddressFromString('A1', 42); // returns { sheet: 0, col: 0, row: 5 } const simpleCellAddress = hfInstance.simpleCellAddressFromString('Sheet0!A6', 42); // returns { sheet: 0, col: 0, row: 5 } const simpleCellAddress = hfInstance.simpleCellAddressFromString('Sheet0!$A$6', 42); // returns 'undefined', as there's no 'Sheet 2' in the HyperFormula instance const simpleCellAddress = hfInstance.simpleCellAddressFromString('Sheet2!A6', 42); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `cellAddress` | string | string representation of cell address in A1 notation | `contextSheetId` | number | sheet id used to construct the simple address in case of missing sheet name in `cellAddress` argument | **Returns:** *[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | undefined* ___ ### simpleCellAddressToString ▸ **simpleCellAddressToString**(`cellAddress`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), `optionsOrContextSheetId`: object | number): *undefined | string* *Defined in [src/HyperFormula.ts:3093](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L3093)* Computes string representation of an absolute address in A1 notation. If `cellAddress.sheet` is not present in the engine, returns `undefined`. For more information, see the [Cell references guide](https://hyperformula.handsontable.com/docs/guide/cell-references.md). **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if its arguments are of wrong type **`example`** ```js const hfInstance = HyperFormula.buildEmpty(); hfInstance.addSheet('Sheet0'); //sheetId = 0 const addr = { sheet: 0, col: 1, row: 1 }; // should return 'B2' const A1Notation = hfInstance.simpleCellAddressToString(addr); // should return 'B2' const A1Notation = hfInstance.simpleCellAddressToString(addr, { includeSheetName: false }); // should return 'Sheet0!B2' const A1Notation = hfInstance.simpleCellAddressToString(addr, { includeSheetName: true }); // should return 'B2' as context sheet id is the same as addr.sheet const A1Notation = hfInstance.simpleCellAddressToString(addr, 0); // should return 'Sheet0!B2' as context sheet id is different from addr.sheet const A1Notation = hfInstance.simpleCellAddressToString(addr, 42); ``` **Parameters:** Name | Type | Default | Description | ------ | ------ | ------ | ------ | `cellAddress` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | - | object representation of an absolute address | `optionsOrContextSheetId` | object | number | {} | options object or number used as context sheet id to construct the string address (see examples) | **Returns:** *undefined | string* ___ ### simpleCellRangeFromString ▸ **simpleCellRangeFromString**(`cellRange`: string, `contextSheetId`: number): *[SimpleCellRange](https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange.md) | undefined* *Defined in [src/HyperFormula.ts:3053](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L3053)* Computes simple (absolute) address of a cell range based on its string representation. If sheet name is present in string representation but not present in the engine, returns `undefined`. For more information, see the [Cell references guide](https://hyperformula.handsontable.com/docs/guide/cell-references.md). **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/nosheetwithiderror.md) when the given sheet ID does not exist **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if any of its basic type argument is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildEmpty(); hfInstance.addSheet('Sheet0'); //sheetId = 0 // should return { start: { sheet: 0, col: 0, row: 0 }, end: { sheet: 0, col: 1, row: 0 } } const simpleCellAddress = hfInstance.simpleCellRangeFromString('A1:A2', 0); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `cellRange` | string | string representation of cell range in A1 notation | `contextSheetId` | number | sheet id used to construct the simple address in case of missing sheet name in `cellRange` argument | **Returns:** *[SimpleCellRange](https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange.md) | undefined* ___ ### simpleCellRangeToString ▸ **simpleCellRangeToString**(`cellRange`: [SimpleCellRange](https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange.md), `optionsOrContextSheetId`: object | number): *string | undefined* *Defined in [src/HyperFormula.ts:3146](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L3146)* Computes string representation of an absolute range in A1 notation. Returns `undefined` if: - `cellRange` is not a valid range, - `cellRange.start.sheet` and `cellRange.start.end` are different, - `cellRange.start.sheet` is not present in the engine, - `cellRange.start.end` is not present in the engine. Note: This method is useful only for cell ranges; does not work with column ranges and row ranges. For more information, see the [Cell references guide](https://hyperformula.handsontable.com/docs/guide/cell-references.md). **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if its arguments are of wrong type **`example`** ```js const hfInstance = HyperFormula.buildEmpty(); hfInstance.addSheet('Sheet0'); //sheetId = 0 const range = { start: { sheet: 0, col: 1, row: 1 }, end: { sheet: 0, col: 2, row: 1 } }; // should return 'B2:C2' const A1Notation = hfInstance.simpleCellRangeToString(range); // should return 'B2:C2' const A1Notation = hfInstance.simpleCellRangeToString(range, { includeSheetName: false }); // should return 'Sheet0!B2:C2' const A1Notation = hfInstance.simpleCellRangeToString(range, { includeSheetName: true }); // should return 'B2:C2' as context sheet id is the same as range.start.sheet and range.end.sheet const A1Notation = hfInstance.simpleCellRangeToString(range, 0); // should return 'Sheet0!B2:C2' as context sheet id is different from range.start.sheet and range.end.sheet const A1Notation = hfInstance.simpleCellRangeToString(range, 42); ``` **Parameters:** Name | Type | Default | Description | ------ | ------ | ------ | ------ | `cellRange` | [SimpleCellRange](https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange.md) | - | object representation of an absolute range | `optionsOrContextSheetId` | object | number | {} | options object or number used as context sheet id to construct the string address (see examples) | **Returns:** *string | undefined* ___ ### validateFormula ▸ **validateFormula**(`formulaString`: string): *boolean* *Defined in [src/HyperFormula.ts:4424](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L4424)* Validates the formula. If the provided string starts with "=" and is a parsable formula, the method returns `true`. The validation is purely grammatical: the method doesn't verify if the formula can be calculated or not. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if any of its basic type argument is of wrong type **`example`** ```js // checks if the given string is a valid formula, should return 'true' for this example const isFormula = hfInstance.validateFormula('=SUM(1, 2)'); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `formulaString` | string | a formula in a proper format - it must start with "=" | **Returns:** *boolean* ___ ## Clipboard ### clearClipboard ▸ **clearClipboard**(): *void* *Defined in [src/HyperFormula.ts:2494](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L2494)* Clears the clipboard content. **`example`** ```js // clears the clipboard, isClipboardEmpty() should return true if called afterwards hfInstance.clearClipboard(); ``` The usage of the internal clipboard is described thoroughly in the [Clipboard Operations guide](https://hyperformula.handsontable.com/docs/guide/clipboard-operations.md). **Returns:** *void* ___ ### copy ▸ **copy**(`source`: [SimpleCellRange](https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange.md)): *[CellValue](https://hyperformula.handsontable.com/docs/api/globals.md#cellvalue)[][]* *Defined in [src/HyperFormula.ts:2354](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L2354)* Stores a copy of the cell block in internal clipboard for the further paste. Returns the copied values for use in external clipboard. For more information, see the [Clipboard Operations guide](https://hyperformula.handsontable.com/docs/guide/clipboard-operations.md). **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/nosheetwithiderror.md) when the given sheet ID does not exist **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if source is of wrong type **`throws`** [SheetsNotEqual](https://hyperformula.handsontable.com/docs/api/classes/sheetsnotequal.md) if range provided has distinct sheet numbers for start and end **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['1', '2'], ]); // it copies [ [ 2 ] ] const clipboardContent = hfInstance.copy({ start: { sheet: 0, col: 1, row: 0 }, end: { sheet: 0, col: 1, row: 0 }, }); ``` The usage of the internal clipboard is described thoroughly in the [Clipboard Operations guide](https://hyperformula.handsontable.com/docs/guide/clipboard-operations.md). **Parameters:** Name | Type | Description | ------ | ------ | ------ | `source` | [SimpleCellRange](https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange.md) | rectangle range to copy | **Returns:** *[CellValue](https://hyperformula.handsontable.com/docs/api/globals.md#cellvalue)[][]* ___ ### cut ▸ **cut**(`source`: [SimpleCellRange](https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange.md)): *[CellValue](https://hyperformula.handsontable.com/docs/api/globals.md#cellvalue)[][]* *Defined in [src/HyperFormula.ts:2394](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L2394)* Stores information of the cell block in internal clipboard for further paste. Calling [paste](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#paste) right after this method is equivalent to call [moveCells](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#movecells). Almost any CRUD operation called after this method will abort the cut operation. Returns the cut values for use in external clipboard. For more information, see the [Clipboard Operations guide](https://hyperformula.handsontable.com/docs/guide/clipboard-operations.md). **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if source is of wrong type **`throws`** [SheetsNotEqual](https://hyperformula.handsontable.com/docs/api/classes/sheetsnotequal.md) if range provided has distinct sheet numbers for start and end **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/nosheetwithiderror.md) when the given sheet ID does not exist **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['1', '2'], ]); // returns the values that were cut: [ [ 1 ] ] const clipboardContent = hfInstance.cut({ start: { sheet: 0, col: 0, row: 0 }, end: { sheet: 0, col: 0, row: 0 }, }); ``` The usage of the internal clipboard is described thoroughly in the [Clipboard Operations guide](https://hyperformula.handsontable.com/docs/guide/clipboard-operations.md). **Parameters:** Name | Type | Description | ------ | ------ | ------ | `source` | [SimpleCellRange](https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange.md) | rectangle range to cut | **Returns:** *[CellValue](https://hyperformula.handsontable.com/docs/api/globals.md#cellvalue)[][]* ___ ### isClipboardEmpty ▸ **isClipboardEmpty**(): *boolean* *Defined in [src/HyperFormula.ts:2477](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L2477)* Returns information whether there is something in the clipboard. **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['1', '2'], ]); // copy desired content const clipboardContent = hfInstance.copy({ start: { sheet: 0, col: 1, row: 0 }, end: { sheet: 0, col: 1, row: 0 }, }); // returns 'false', there is content in the clipboard const isClipboardEmpty = hfInstance.isClipboardEmpty(); ``` The usage of the internal clipboard is described thoroughly in the [Clipboard Operations guide](https://hyperformula.handsontable.com/docs/guide/clipboard-operations.md). **Returns:** *boolean* ___ ### paste ▸ **paste**(`targetLeftCorner`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* *Defined in [src/HyperFormula.ts:2445](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L2445)* When called after [copy](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#copy) it pastes copied values and formulas into a cell block. When called after [cut](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#cut) it performs [moveCells](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#movecells) operation into the cell block. Does nothing if the clipboard is empty. For more information, see the [Clipboard Operations guide](https://hyperformula.handsontable.com/docs/guide/clipboard-operations.md). Returns [an array of cells whose values changed as a result of this operation](https://hyperformula.handsontable.com/docs/guide/basic-operations.md#changes-array). Note that this method may trigger dependency graph recalculation. **`fires`** [valuesUpdated](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md#valuesupdated) if recalculation was triggered by this change **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/nosheetwithiderror.md) when the given sheet ID does not exist **`throws`** [EvaluationSuspendedError](https://hyperformula.handsontable.com/docs/api/classes/evaluationsuspendederror.md) when the evaluation is suspended **`throws`** [SheetSizeLimitExceededError](https://hyperformula.handsontable.com/docs/api/classes/sheetsizelimitexceedederror.md) when performing this operation would result in sheet size limits exceeding **`throws`** [NothingToPasteError](https://hyperformula.handsontable.com/docs/api/classes/nothingtopasteerror.md) when clipboard is empty **`throws`** [TargetLocationHasArrayError](https://hyperformula.handsontable.com/docs/api/classes/targetlocationhasarrayerror.md) when the selected target area has array inside **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if targetLeftCorner is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['1', '2'], ]); // [ [ 2 ] ] was copied const clipboardContent = hfInstance.copy({ start: { sheet: 0, col: 1, row: 0 }, end: { sheet: 0, col: 1, row: 0 }, }); // returns a list of modified cells: their absolute addresses and new values const changes = hfInstance.paste({ sheet: 0, col: 1, row: 0 }); ``` The usage of the internal clipboard is described thoroughly in the [Clipboard Operations guide](https://hyperformula.handsontable.com/docs/guide/clipboard-operations.md). **Parameters:** Name | Type | Description | ------ | ------ | ------ | `targetLeftCorner` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | upper left address of the target cell block | **Returns:** *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* ___ ## Undo and Redo ### clearRedoStack ▸ **clearRedoStack**(): *void* *Defined in [src/HyperFormula.ts:2524](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L2524)* Clears the redo stack in undoRedo history. For more information, see the [Undo-Redo guide](https://hyperformula.handsontable.com/docs/guide/undo-redo.md). **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['1', '2', '3'], ]); // do an operation, for example remove columns hfInstance.removeColumns(0, [0, 1]); // undo the operation hfInstance.undo(); // redo the operation hfInstance.redo(); // clear the redo stack hfInstance.clearRedoStack(); ``` **Returns:** *void* ___ ### clearUndoStack ▸ **clearUndoStack**(): *void* *Defined in [src/HyperFormula.ts:2551](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L2551)* Clears the undo stack in undoRedo history. For more information, see the [Undo-Redo guide](https://hyperformula.handsontable.com/docs/guide/undo-redo.md). **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['1', '2', '3'], ]); // do an operation, for example remove columns hfInstance.removeColumns(0, [0, 1]); // undo the operation hfInstance.undo(); // clear the undo stack hfInstance.clearUndoStack(); ``` **Returns:** *void* ___ ### isThereSomethingToRedo ▸ **isThereSomethingToRedo**(): *boolean* *Defined in [src/HyperFormula.ts:1324](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L1324)* Checks if there is at least one operation that can be re-done. For more information, see the [Undo-Redo guide](https://hyperformula.handsontable.com/docs/guide/undo-redo.md). **`example`** ```js hfInstance.undo(); // when there is an action to redo, this returns 'true' const isSomethingToRedo = hfInstance.isThereSomethingToRedo(); ``` **Returns:** *boolean* ___ ### isThereSomethingToUndo ▸ **isThereSomethingToUndo**(): *boolean* *Defined in [src/HyperFormula.ts:1305](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L1305)* Checks if there is at least one operation that can be undone. For more information, see the [Undo-Redo guide](https://hyperformula.handsontable.com/docs/guide/undo-redo.md). **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['1'], ['2'], ['3'], ]); // perform CRUD operation, for example remove the second row hfInstance.removeRows(0, [1, 1]); // should return 'true', it is possible to undo last operation // which is removing rows in this example const isSomethingToUndo = hfInstance.isThereSomethingToUndo(); ``` **Returns:** *boolean* ___ ### redo ▸ **redo**(): *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* *Defined in [src/HyperFormula.ts:1277](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L1277)* Re-do recently undone operation. For more information, see the [Undo-Redo guide](https://hyperformula.handsontable.com/docs/guide/undo-redo.md). Returns [an array of cells whose values changed as a result of this operation](https://hyperformula.handsontable.com/docs/guide/basic-operations.md#changes-array). Note that this method may trigger dependency graph recalculation. **`fires`** [valuesUpdated](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md#valuesupdated) if recalculation was triggered by this change **`throws`** [NoOperationToRedoError](https://hyperformula.handsontable.com/docs/api/classes/nooperationtoredoerror.md) when there is no operation running that can be re-done **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['1'], ['2'], ['3'], ]); // perform CRUD operation, for example remove the second row hfInstance.removeRows(0, [1, 1]); // undo the operation, it should return previous values: [['1'], ['2'], ['3']] hfInstance.undo(); // do a redo, it should return the values after removing the second row: [['1'], ['3']] const changes = hfInstance.redo(); ``` **Returns:** *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* ___ ### undo ▸ **undo**(): *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* *Defined in [src/HyperFormula.ts:1239](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L1239)* Undo the previous operation. For more information, see the [Undo-Redo guide](https://hyperformula.handsontable.com/docs/guide/undo-redo.md). Returns [an array of cells whose values changed as a result of this operation](https://hyperformula.handsontable.com/docs/guide/basic-operations.md#changes-array). Note that this method may trigger dependency graph recalculation. **`fires`** [valuesUpdated](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md#valuesupdated) if recalculation was triggered by this change **`throws`** [NoOperationToUndoError](https://hyperformula.handsontable.com/docs/api/classes/nooperationtoundoerror.md) when there is no operation running that can be undone **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['1', '2'], ['3', ''], ]); // perform CRUD operation, for example remove the second row hfInstance.removeRows(0, [1, 1]); // undo the operation, it should return the changes const changes = hfInstance.undo(); ``` **Returns:** *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* ___ ## Batch ### batch ▸ **batch**(`batchOperations`: function): *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* *Defined in [src/HyperFormula.ts:3714](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L3714)* Runs the provided callback as a single [batch operation](https://hyperformula.handsontable.com/docs/guide/batch-operations.md) and returns the changed cells. Returns [an array of cells whose values changed as a result of all batched operations](https://hyperformula.handsontable.com/docs/guide/basic-operations.md#changes-array). Note that this method may trigger dependency graph recalculation. **`fires`** [valuesUpdated](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md#valuesupdated) if recalculation was triggered by this change **`fires`** [evaluationSuspended](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md#evaluationsuspended) always **`fires`** [evaluationResumed](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md#evaluationresumed) after the recomputation of necessary values **`example`** ```js const hfInstance = HyperFormula.buildFromSheets({ MySheet1: [ ['1'] ], MySheet2: [ ['10'] ], }); // multiple operations in a single callback will trigger evaluation only once // and only one set of changes is returned as a combined result of all // the operations that were triggered within the callback const changes = hfInstance.batch(() => { hfInstance.setCellContents({ col: 3, row: 0, sheet: 0 }, [['=B1']]); hfInstance.setCellContents({ col: 4, row: 0, sheet: 0 }, [['=A1']]); }); ``` **Parameters:** ▪ **batchOperations**: *function* a function with operations to be performed ▸ (): *void* **Returns:** *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* ___ ### isEvaluationSuspended ▸ **isEvaluationSuspended**(): *boolean* *Defined in [src/HyperFormula.ts:3823](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L3823)* Checks if the dependency graph recalculation process is [suspended](https://hyperformula.handsontable.com/docs/guide/batch-operations.md) or not. **`example`** ```js const hfInstance = HyperFormula.buildEmpty(); // suspend the evaluation hfInstance.suspendEvaluation(); // between suspendEvaluation() and resumeEvaluation() // or inside batch() callback it will return 'true', otherwise 'false' const isEvaluationSuspended = hfInstance.isEvaluationSuspended(); const changes = hfInstance.resumeEvaluation(); ``` **Returns:** *boolean* ___ ### resumeEvaluation ▸ **resumeEvaluation**(): *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* *Defined in [src/HyperFormula.ts:3797](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L3797)* Resumes the dependency graph recalculation that was [suspended](https://hyperformula.handsontable.com/docs/guide/batch-operations.md) with [suspendEvaluation](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#suspendevaluation). It also triggers the recalculation and returns [an array of cells whose values changed as a result of all batched operations](https://hyperformula.handsontable.com/docs/guide/basic-operations.md#changes-array). **`fires`** [valuesUpdated](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md#valuesupdated) if recalculation was triggered by this change **`fires`** [evaluationResumed](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md#evaluationresumed) after the recomputation of necessary values **`example`** ```js const hfInstance = HyperFormula.buildFromSheets({ MySheet1: [ ['1'] ], MySheet2: [ ['10'] ], }); // similar to batch() but operations are not within a callback, // one method suspends the recalculation // the second will resume calculations and return the changes // first, suspend the evaluation hfInstance.suspendEvaluation(); // perform operations hfInstance.setCellContents({ col: 3, row: 0, sheet: 0 }, [['=B1']]); hfInstance.setSheetContent(1, [['50'], ['60']]); // resume the evaluation const changes = hfInstance.resumeEvaluation(); ``` **Returns:** *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* ___ ### suspendEvaluation ▸ **suspendEvaluation**(): *void* *Defined in [src/HyperFormula.ts:3761](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L3761)* Suspends the dependency graph recalculation to start a [batch operation](https://hyperformula.handsontable.com/docs/guide/batch-operations.md). It allows optimizing the performance. With this method, multiple CRUD operations can be done without triggering recalculation after every operation. Suspending evaluation should result in an overall faster calculation compared to recalculating after each operation separately. To resume the evaluation use [resumeEvaluation](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#resumeevaluation). **`fires`** [evaluationSuspended](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md#evaluationsuspended) always **`example`** ```js const hfInstance = HyperFormula.buildFromSheets({ MySheet1: [ ['1'] ], MySheet2: [ ['10'] ], }); // similar to batch() but operations are not within a callback, // one method suspends the recalculation // the second will resume calculations and return the changes // suspend the evaluation with this method hfInstance.suspendEvaluation(); // perform operations hfInstance.setCellContents({ col: 3, row: 0, sheet: 0 }, [['=B1']]); hfInstance.setSheetContent(1, [['50'], ['60']]); // use resumeEvaluation to resume const changes = hfInstance.resumeEvaluation(); ``` **Returns:** *void* ___ ## Events ### off ▸ **off**‹**Event**›(`event`: Event, `listener`: Listeners[Event]): *void* *Defined in [src/HyperFormula.ts:4740](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L4740)* Unsubscribes from an event or from all events. For the list of all available events, see [Listeners](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md). **`example`** ```js const hfInstance = HyperFormula.buildEmpty(); // define a simple function to be called upon emitting an event const handler = ( ) => { console.log('baz') } // subscribe to a 'sheetAdded', pass the handler hfInstance.on('sheetAdded', handler); // add a sheet to trigger an event, // console should print 'baz' each time a sheet is added hfInstance.addSheet('FooBar'); // unsubscribe from a 'sheetAdded' hfInstance.off('sheetAdded', handler); // add a sheet, the console should not print anything hfInstance.addSheet('FooBaz'); ``` **Type parameters:** ▪ **Event**: *keyof Listeners* **Parameters:** Name | Type | Description | ------ | ------ | ------ | `event` | Event | the name of the event to subscribe to | `listener` | Listeners[Event] | to be called when event is emitted | **Returns:** *void* ___ ### on ▸ **on**‹**Event**›(`event`: Event, `listener`: Listeners[Event]): *void* *Defined in [src/HyperFormula.ts:4680](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L4680)* Subscribes to an event. For the list of all available events, see [Listeners](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md). **`example`** ```js const hfInstance = HyperFormula.buildEmpty(); // subscribe to a 'sheetAdded', pass a simple handler hfInstance.on('sheetAdded', ( ) => { console.log('foo') }); // add a sheet to trigger an event, // console should print 'foo' after each time sheet is added in this example hfInstance.addSheet('FooBar'); ``` **Type parameters:** ▪ **Event**: *keyof Listeners* **Parameters:** Name | Type | Description | ------ | ------ | ------ | `event` | Event | the name of the event to subscribe to | `listener` | Listeners[Event] | to be called when event is emitted | **Returns:** *void* ___ ### once ▸ **once**‹**Event**›(`event`: Event, `listener`: Listeners[Event]): *void* *Defined in [src/HyperFormula.ts:4706](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L4706)* Subscribes to an event once. For the list of all available events, see [Listeners](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md). **`example`** ```js const hfInstance = HyperFormula.buildEmpty(); // subscribe to a 'sheetAdded', pass a simple handler hfInstance.once('sheetAdded', ( ) => { console.log('foo') }); // call addSheet twice, // console should print 'foo' only once when the sheet is added in this example hfInstance.addSheet('FooBar'); hfInstance.addSheet('FooBaz'); ``` **Type parameters:** ▪ **Event**: *keyof Listeners* **Parameters:** Name | Type | Description | ------ | ------ | ------ | `event` | Event | the name of the event to subscribe to | `listener` | Listeners[Event] | to be called when event is emitted | **Returns:** *void* ___ ## Custom Functions ### getAllFunctionPlugins ▸ **getAllFunctionPlugins**(): *FunctionPluginDefinition[]* *Defined in [src/HyperFormula.ts:4493](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L4493)* Returns classes of all plugins registered in this instance of HyperFormula **`example`** ```js const hfInstance = HyperFormula.buildEmpty(); // return classes of all plugins registered, assign to a variable const allNames = hfInstance.getAllFunctionPlugins(); ``` **Returns:** *FunctionPluginDefinition[]* ___ ### getFunctionPlugin ▸ **getFunctionPlugin**(`functionId`: string): *FunctionPluginDefinition | undefined* *Defined in [src/HyperFormula.ts:4475](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L4475)* Returns class of a plugin used by function with given id For more information, see the [Custom functions guide](https://hyperformula.handsontable.com/docs/guide/custom-functions.md). **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if any of its basic type argument is of wrong type **`example`** ```js // import your own plugin import { MyExamplePlugin } from './file_with_your_plugin'; const hfInstance = HyperFormula.buildEmpty(); // register a plugin HyperFormula.registerFunctionPlugin(MyExamplePlugin); // get the plugin const myPlugin = hfInstance.getFunctionPlugin('EXAMPLE'); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `functionId` | string | id of a function, e.g., 'SUMIF' | **Returns:** *FunctionPluginDefinition | undefined* ___ ### getRegisteredFunctionNames ▸ **getRegisteredFunctionNames**(): *string[]* *Defined in [src/HyperFormula.ts:4445](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L4445)* Returns translated names of all functions registered in this instance of HyperFormula according to the language set in the configuration **`example`** ```js const hfInstance = HyperFormula.buildEmpty(); // return translated names of all functions, assign to a variable const allNames = hfInstance.getRegisteredFunctionNames(); ``` **Returns:** *string[]* ___ ## Static Methods ### getAllFunctionPlugins ▸ **getAllFunctionPlugins**(): *FunctionPluginDefinition[]* *Defined in [src/HyperFormula.ts:652](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L652)* Returns classes of all plugins registered in HyperFormula. **`example`** ```js // return classes of all plugins const allClasses = HyperFormula.getAllFunctionPlugins(); ``` **Returns:** *FunctionPluginDefinition[]* ___ ### getFunctionPlugin ▸ **getFunctionPlugin**(`functionId`: string): *FunctionPluginDefinition | undefined* *Defined in [src/HyperFormula.ts:636](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L636)* Returns class of a plugin used by function with given id For more information, see the [Custom functions guide](https://hyperformula.handsontable.com/docs/guide/custom-functions.md). **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if any of its basic type argument is of wrong type **`example`** ```js // import your own plugin import { MyExamplePlugin } from './file_with_your_plugin'; // register a plugin HyperFormula.registerFunctionPlugin(MyExamplePlugin); // return the class of a given plugin const myFunctionClass = HyperFormula.getFunctionPlugin('EXAMPLE'); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `functionId` | string | id of a function, e.g., 'SUMIF' | **Returns:** *FunctionPluginDefinition | undefined* ___ ### getLanguage ▸ **getLanguage**(`languageCode`: string): *TranslationPackage* *Defined in [src/HyperFormula.ts:375](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L375)* Returns registered language from its code string. For more information, see the [Localizing functions guide](https://hyperformula.handsontable.com/docs/guide/localizing-functions.md). **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if any of its basic type argument is of wrong type **`throws`** [LanguageNotRegisteredError](https://hyperformula.handsontable.com/docs/api/classes/languagenotregisterederror.md) when trying to retrieve not registered language **`example`** ```js // return registered language const language = HyperFormula.getLanguage('enGB'); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `languageCode` | string | code string of the translation package | **Returns:** *TranslationPackage* ___ ### getRegisteredFunctionNames ▸ **getRegisteredFunctionNames**(`code`: string): *string[]* *Defined in [src/HyperFormula.ts:606](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L606)* Returns translated names of all registered functions for a given language **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if any of its basic type argument is of wrong type **`example`** ```js // return a list of function names registered for enGB const allNames = HyperFormula.getRegisteredFunctionNames('enGB'); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `code` | string | language code | **Returns:** *string[]* ___ ### getRegisteredLanguagesCodes ▸ **getRegisteredLanguagesCodes**(): *string[]* *Defined in [src/HyperFormula.ts:456](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L456)* Returns all registered languages codes. **`example`** ```js // should return all registered language codes: ['enGB', 'plPL'] const registeredLanguages = HyperFormula.getRegisteredLanguagesCodes(); ``` **Returns:** *string[]* ___ ### registerFunction ▸ **registerFunction**(`functionId`: string, `plugin`: FunctionPluginDefinition, `translations?`: FunctionTranslationsPackage): *void* *Defined in [src/HyperFormula.ts:540](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L540)* Registers a function with a given id if such exists in a plugin. For more information, see the [Custom functions guide](https://hyperformula.handsontable.com/docs/guide/custom-functions.md). Note: This method does not affect the existing HyperFormula instances. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if any of its basic type argument is of wrong type **`throws`** [FunctionPluginValidationError](https://hyperformula.handsontable.com/docs/api/classes/functionpluginvalidationerror.md) when function with a given id does not exist in plugin or plugin class definition is not consistent with metadata **`throws`** [ProtectedFunctionTranslationError](https://hyperformula.handsontable.com/docs/api/classes/protectedfunctiontranslationerror.md) when trying to register translation for protected function **`example`** ```js // import your own plugin import { MyExamplePlugin } from './file_with_your_plugin'; // register a function HyperFormula.registerFunction('EXAMPLE', MyExamplePlugin); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `functionId` | string | function id, e.g., 'SUMIF' | `plugin` | FunctionPluginDefinition | plugin class | `translations?` | FunctionTranslationsPackage | translations for the function name | **Returns:** *void* ___ ### registerFunctionPlugin ▸ **registerFunctionPlugin**(`plugin`: FunctionPluginDefinition, `translations?`: FunctionTranslationsPackage): *void* *Defined in [src/HyperFormula.ts:486](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L486)* Registers all functions in a given plugin with optional translations. For more information, see the [Custom functions guide](https://hyperformula.handsontable.com/docs/guide/custom-functions.md). Note: FunctionPlugins must be registered prior to the creation of HyperFormula instances in which they are used. HyperFormula instances created prior to the registration of a FunctionPlugin are unable to access the FunctionPlugin. Registering a FunctionPlugin with [[custom-functions]] requires the translations parameter. **`throws`** [FunctionPluginValidationError](https://hyperformula.handsontable.com/docs/api/classes/functionpluginvalidationerror.md) when plugin class definition is not consistent with metadata **`throws`** [ProtectedFunctionTranslationError](https://hyperformula.handsontable.com/docs/api/classes/protectedfunctiontranslationerror.md) when trying to register translation for protected function **`example`** ```js // import your own plugin import { MyExamplePlugin } from './file_with_your_plugin'; // register the plugin HyperFormula.registerFunctionPlugin(MyExamplePlugin); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `plugin` | FunctionPluginDefinition | plugin class | `translations?` | FunctionTranslationsPackage | optional package of function names translations | **Returns:** *void* ___ ### registerLanguage ▸ **registerLanguage**(`languageCode`: string, `languagePackage`: RawTranslationPackage): *void* *Defined in [src/HyperFormula.ts:406](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L406)* Registers language under given code string. For more information, see the [Localizing functions guide](https://hyperformula.handsontable.com/docs/guide/localizing-functions.md). **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if any of its basic type argument is of wrong type **`throws`** [ProtectedFunctionTranslationError](https://hyperformula.handsontable.com/docs/api/classes/protectedfunctiontranslationerror.md) when trying to register translation for protected function **`throws`** [LanguageAlreadyRegisteredError](https://hyperformula.handsontable.com/docs/api/classes/languagealreadyregisterederror.md) when given language is already registered **`example`** ```js // return registered language HyperFormula.registerLanguage('enUS', enUS); const engine = HyperFormula.buildEmpty({language: 'enUS'}); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `languageCode` | string | code string of the translation package | `languagePackage` | RawTranslationPackage | translation package to be registered | **Returns:** *void* ___ ### unregisterAllFunctions ▸ **unregisterAllFunctions**(): *void* *Defined in [src/HyperFormula.ts:587](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L587)* Clears function registry. Note: This method does not affect the existing HyperFormula instances. **`example`** ```js HyperFormula.unregisterAllFunctions(); ``` **Returns:** *void* ___ ### unregisterFunction ▸ **unregisterFunction**(`functionId`: string): *void* *Defined in [src/HyperFormula.ts:570](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L570)* Unregisters a function with a given id. For more information, see the [Custom functions guide](https://hyperformula.handsontable.com/docs/guide/custom-functions.md). Note: This method does not affect the existing HyperFormula instances. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if any of its basic type argument is of wrong type **`example`** ```js // import your own plugin import { MyExamplePlugin } from './file_with_your_plugin'; // register a function HyperFormula.registerFunction('EXAMPLE', MyExamplePlugin); // unregister a function HyperFormula.unregisterFunction('EXAMPLE'); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `functionId` | string | function id, e.g., 'SUMIF' | **Returns:** *void* ___ ### unregisterFunctionPlugin ▸ **unregisterFunctionPlugin**(`plugin`: FunctionPluginDefinition): *void* *Defined in [src/HyperFormula.ts:510](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L510)* Unregisters all functions defined in given plugin. For more information, see the [Custom functions guide](https://hyperformula.handsontable.com/docs/guide/custom-functions.md). Note: This method does not affect the existing HyperFormula instances. **`example`** ```js // get the class of a plugin const registeredPluginClass = HyperFormula.getFunctionPlugin('EXAMPLE'); // unregister all functions defined in a plugin of ID 'EXAMPLE' HyperFormula.unregisterFunctionPlugin(registeredPluginClass); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `plugin` | FunctionPluginDefinition | plugin class | **Returns:** *void* ___ ### unregisterLanguage ▸ **unregisterLanguage**(`languageCode`: string): *void* *Defined in [src/HyperFormula.ts:436](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L436)* Unregisters language that is registered under given code string. For more information, see the [Localizing functions guide](https://hyperformula.handsontable.com/docs/guide/localizing-functions.md). **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if any of its basic type argument is of wrong type **`throws`** [LanguageNotRegisteredError](https://hyperformula.handsontable.com/docs/api/classes/languagenotregisterederror.md) when given language is not registered **`example`** ```js // register the language for the instance HyperFormula.registerLanguage('plPL', plPL); // unregister plPL HyperFormula.unregisterLanguage('plPL'); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `languageCode` | string | code string of the translation package | **Returns:** *void* --- ## HyperFormulaNS URL: https://hyperformula.handsontable.com/docs/api/classes/hyperformulans # HyperFormulaNS Aggregate class for default export ## Other ### ArraySize ▪ **ArraySize**: *[ArraySize](https://hyperformula.handsontable.com/docs/api/classes/arraysize.md)* = ArraySize *Defined in [src/index.ts:79](https://github.com/handsontable/hyperformula/blob/a18429c/src/index.ts#L79)* ___ ### CellError ▪ **CellError**: *[CellError](https://hyperformula.handsontable.com/docs/api/classes/cellerror.md)* = CellError *Defined in [src/index.ts:67](https://github.com/handsontable/hyperformula/blob/a18429c/src/index.ts#L67)* ___ ### CellType ▪ **CellType**: *[CellType](https://hyperformula.handsontable.com/docs/api/enums/celltype.md)* = CellType *Defined in [src/index.ts:68](https://github.com/handsontable/hyperformula/blob/a18429c/src/index.ts#L68)* ___ ### CellValueDetailedType ▪ **CellValueDetailedType**: *object* = CellValueDetailedType *Defined in [src/index.ts:70](https://github.com/handsontable/hyperformula/blob/a18429c/src/index.ts#L70)* #### Type declaration: ___ ### CellValueType ▪ **CellValueType**: *object* = CellValueType *Defined in [src/index.ts:69](https://github.com/handsontable/hyperformula/blob/a18429c/src/index.ts#L69)* #### Type declaration: ___ ### ConfigValueTooBigError ▪ **ConfigValueTooBigError**: *[ConfigValueTooBigError](https://hyperformula.handsontable.com/docs/api/classes/configvaluetoobigerror.md)* = ConfigValueTooBigError *Defined in [src/index.ts:74](https://github.com/handsontable/hyperformula/blob/a18429c/src/index.ts#L74)* ___ ### ConfigValueTooSmallError ▪ **ConfigValueTooSmallError**: *[ConfigValueTooSmallError](https://hyperformula.handsontable.com/docs/api/classes/configvaluetoosmallerror.md)* = ConfigValueTooSmallError *Defined in [src/index.ts:75](https://github.com/handsontable/hyperformula/blob/a18429c/src/index.ts#L75)* ___ ### DetailedCellError ▪ **DetailedCellError**: *[DetailedCellError](https://hyperformula.handsontable.com/docs/api/classes/detailedcellerror.md)* = DetailedCellError *Defined in [src/index.ts:71](https://github.com/handsontable/hyperformula/blob/a18429c/src/index.ts#L71)* ___ ### EmptyValue ▪ **EmptyValue**: *symbol* = EmptyValue *Defined in [src/index.ts:81](https://github.com/handsontable/hyperformula/blob/a18429c/src/index.ts#L81)* ___ ### ErrorType ▪ **ErrorType**: *[ErrorType](https://hyperformula.handsontable.com/docs/api/enums/errortype.md)* = ErrorType *Defined in [src/index.ts:66](https://github.com/handsontable/hyperformula/blob/a18429c/src/index.ts#L66)* ___ ### EvaluationSuspendedError ▪ **EvaluationSuspendedError**: *[EvaluationSuspendedError](https://hyperformula.handsontable.com/docs/api/classes/evaluationsuspendederror.md)* = EvaluationSuspendedError *Defined in [src/index.ts:76](https://github.com/handsontable/hyperformula/blob/a18429c/src/index.ts#L76)* ___ ### ExpectedOneOfValuesError ▪ **ExpectedOneOfValuesError**: *[ExpectedOneOfValuesError](https://hyperformula.handsontable.com/docs/api/classes/expectedoneofvalueserror.md)* = ExpectedOneOfValuesError *Defined in [src/index.ts:77](https://github.com/handsontable/hyperformula/blob/a18429c/src/index.ts#L77)* ___ ### ExpectedValueOfTypeError ▪ **ExpectedValueOfTypeError**: *[ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md)* = ExpectedValueOfTypeError *Defined in [src/index.ts:78](https://github.com/handsontable/hyperformula/blob/a18429c/src/index.ts#L78)* ___ ### ExportedCellChange ▪ **ExportedCellChange**: *[ExportedCellChange](https://hyperformula.handsontable.com/docs/api/classes/exportedcellchange.md)* = ExportedCellChange *Defined in [src/index.ts:72](https://github.com/handsontable/hyperformula/blob/a18429c/src/index.ts#L72)* ___ ### ExportedNamedExpressionChange ▪ **ExportedNamedExpressionChange**: *[ExportedNamedExpressionChange](https://hyperformula.handsontable.com/docs/api/classes/exportednamedexpressionchange.md)* = ExportedNamedExpressionChange *Defined in [src/index.ts:73](https://github.com/handsontable/hyperformula/blob/a18429c/src/index.ts#L73)* ___ ### FunctionArgumentType ▪ **FunctionArgumentType**: *FunctionArgumentType* = FunctionArgumentType *Defined in [src/index.ts:83](https://github.com/handsontable/hyperformula/blob/a18429c/src/index.ts#L83)* ___ ### FunctionPlugin ▪ **FunctionPlugin**: *FunctionPlugin* = FunctionPlugin *Defined in [src/index.ts:82](https://github.com/handsontable/hyperformula/blob/a18429c/src/index.ts#L82)* ___ ### FunctionPluginValidationError ▪ **FunctionPluginValidationError**: *[FunctionPluginValidationError](https://hyperformula.handsontable.com/docs/api/classes/functionpluginvalidationerror.md)* = FunctionPluginValidationError *Defined in [src/index.ts:84](https://github.com/handsontable/hyperformula/blob/a18429c/src/index.ts#L84)* ___ ### HyperFormula ▪ **HyperFormula**: *[HyperFormula](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md)* = HyperFormula *Defined in [src/index.ts:65](https://github.com/handsontable/hyperformula/blob/a18429c/src/index.ts#L65)* ___ ### InvalidAddressError ▪ **InvalidAddressError**: *[InvalidAddressError](https://hyperformula.handsontable.com/docs/api/classes/invalidaddresserror.md)* = InvalidAddressError *Defined in [src/index.ts:85](https://github.com/handsontable/hyperformula/blob/a18429c/src/index.ts#L85)* ___ ### InvalidArgumentsError ▪ **InvalidArgumentsError**: *[InvalidArgumentsError](https://hyperformula.handsontable.com/docs/api/classes/invalidargumentserror.md)* = InvalidArgumentsError *Defined in [src/index.ts:86](https://github.com/handsontable/hyperformula/blob/a18429c/src/index.ts#L86)* ___ ### LanguageAlreadyRegisteredError ▪ **LanguageAlreadyRegisteredError**: *[LanguageAlreadyRegisteredError](https://hyperformula.handsontable.com/docs/api/classes/languagealreadyregisterederror.md)* = LanguageAlreadyRegisteredError *Defined in [src/index.ts:88](https://github.com/handsontable/hyperformula/blob/a18429c/src/index.ts#L88)* ___ ### LanguageNotRegisteredError ▪ **LanguageNotRegisteredError**: *[LanguageNotRegisteredError](https://hyperformula.handsontable.com/docs/api/classes/languagenotregisterederror.md)* = LanguageNotRegisteredError *Defined in [src/index.ts:87](https://github.com/handsontable/hyperformula/blob/a18429c/src/index.ts#L87)* ___ ### MissingTranslationError ▪ **MissingTranslationError**: *[MissingTranslationError](https://hyperformula.handsontable.com/docs/api/classes/missingtranslationerror.md)* = MissingTranslationError *Defined in [src/index.ts:89](https://github.com/handsontable/hyperformula/blob/a18429c/src/index.ts#L89)* ___ ### NamedExpressionDoesNotExistError ▪ **NamedExpressionDoesNotExistError**: *[NamedExpressionDoesNotExistError](https://hyperformula.handsontable.com/docs/api/classes/namedexpressiondoesnotexisterror.md)* = NamedExpressionDoesNotExistError *Defined in [src/index.ts:90](https://github.com/handsontable/hyperformula/blob/a18429c/src/index.ts#L90)* ___ ### NamedExpressionNameIsAlreadyTakenError ▪ **NamedExpressionNameIsAlreadyTakenError**: *[NamedExpressionNameIsAlreadyTakenError](https://hyperformula.handsontable.com/docs/api/classes/namedexpressionnameisalreadytakenerror.md)* = NamedExpressionNameIsAlreadyTakenError *Defined in [src/index.ts:91](https://github.com/handsontable/hyperformula/blob/a18429c/src/index.ts#L91)* ___ ### NamedExpressionNameIsInvalidError ▪ **NamedExpressionNameIsInvalidError**: *[NamedExpressionNameIsInvalidError](https://hyperformula.handsontable.com/docs/api/classes/namedexpressionnameisinvaliderror.md)* = NamedExpressionNameIsInvalidError *Defined in [src/index.ts:92](https://github.com/handsontable/hyperformula/blob/a18429c/src/index.ts#L92)* ___ ### NoOperationToRedoError ▪ **NoOperationToRedoError**: *[NoOperationToRedoError](https://hyperformula.handsontable.com/docs/api/classes/nooperationtoredoerror.md)* = NoOperationToRedoError *Defined in [src/index.ts:93](https://github.com/handsontable/hyperformula/blob/a18429c/src/index.ts#L93)* ___ ### NoOperationToUndoError ▪ **NoOperationToUndoError**: *[NoOperationToUndoError](https://hyperformula.handsontable.com/docs/api/classes/nooperationtoundoerror.md)* = NoOperationToUndoError *Defined in [src/index.ts:94](https://github.com/handsontable/hyperformula/blob/a18429c/src/index.ts#L94)* ___ ### NoRelativeAddressesAllowedError ▪ **NoRelativeAddressesAllowedError**: *[NoRelativeAddressesAllowedError](https://hyperformula.handsontable.com/docs/api/classes/norelativeaddressesallowederror.md)* = NoRelativeAddressesAllowedError *Defined in [src/index.ts:95](https://github.com/handsontable/hyperformula/blob/a18429c/src/index.ts#L95)* ___ ### NoSheetWithIdError ▪ **NoSheetWithIdError**: *[NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/nosheetwithiderror.md)* = NoSheetWithIdError *Defined in [src/index.ts:96](https://github.com/handsontable/hyperformula/blob/a18429c/src/index.ts#L96)* ___ ### NoSheetWithNameError ▪ **NoSheetWithNameError**: *[NoSheetWithNameError](https://hyperformula.handsontable.com/docs/api/classes/nosheetwithnameerror.md)* = NoSheetWithNameError *Defined in [src/index.ts:97](https://github.com/handsontable/hyperformula/blob/a18429c/src/index.ts#L97)* ___ ### NotAFormulaError ▪ **NotAFormulaError**: *[NotAFormulaError](https://hyperformula.handsontable.com/docs/api/classes/notaformulaerror.md)* = NotAFormulaError *Defined in [src/index.ts:98](https://github.com/handsontable/hyperformula/blob/a18429c/src/index.ts#L98)* ___ ### NothingToPasteError ▪ **NothingToPasteError**: *[NothingToPasteError](https://hyperformula.handsontable.com/docs/api/classes/nothingtopasteerror.md)* = NothingToPasteError *Defined in [src/index.ts:99](https://github.com/handsontable/hyperformula/blob/a18429c/src/index.ts#L99)* ___ ### ProtectedFunctionTranslationError ▪ **ProtectedFunctionTranslationError**: *[ProtectedFunctionTranslationError](https://hyperformula.handsontable.com/docs/api/classes/protectedfunctiontranslationerror.md)* = ProtectedFunctionTranslationError *Defined in [src/index.ts:100](https://github.com/handsontable/hyperformula/blob/a18429c/src/index.ts#L100)* ___ ### SheetNameAlreadyTakenError ▪ **SheetNameAlreadyTakenError**: *[SheetNameAlreadyTakenError](https://hyperformula.handsontable.com/docs/api/classes/sheetnamealreadytakenerror.md)* = SheetNameAlreadyTakenError *Defined in [src/index.ts:101](https://github.com/handsontable/hyperformula/blob/a18429c/src/index.ts#L101)* ___ ### SheetSizeLimitExceededError ▪ **SheetSizeLimitExceededError**: *[SheetSizeLimitExceededError](https://hyperformula.handsontable.com/docs/api/classes/sheetsizelimitexceedederror.md)* = SheetSizeLimitExceededError *Defined in [src/index.ts:102](https://github.com/handsontable/hyperformula/blob/a18429c/src/index.ts#L102)* ___ ### SimpleRangeValue ▪ **SimpleRangeValue**: *[SimpleRangeValue](https://hyperformula.handsontable.com/docs/api/classes/simplerangevalue.md)* = SimpleRangeValue *Defined in [src/index.ts:80](https://github.com/handsontable/hyperformula/blob/a18429c/src/index.ts#L80)* ___ ### SourceLocationHasArrayError ▪ **SourceLocationHasArrayError**: *[SourceLocationHasArrayError](https://hyperformula.handsontable.com/docs/api/classes/sourcelocationhasarrayerror.md)* = SourceLocationHasArrayError *Defined in [src/index.ts:103](https://github.com/handsontable/hyperformula/blob/a18429c/src/index.ts#L103)* ___ ### TargetLocationHasArrayError ▪ **TargetLocationHasArrayError**: *[TargetLocationHasArrayError](https://hyperformula.handsontable.com/docs/api/classes/targetlocationhasarrayerror.md)* = TargetLocationHasArrayError *Defined in [src/index.ts:104](https://github.com/handsontable/hyperformula/blob/a18429c/src/index.ts#L104)* ___ ### UnableToParseError ▪ **UnableToParseError**: *[UnableToParseError](https://hyperformula.handsontable.com/docs/api/classes/unabletoparseerror.md)* = UnableToParseError *Defined in [src/index.ts:105](https://github.com/handsontable/hyperformula/blob/a18429c/src/index.ts#L105)* ___ ## Static Properties ### buildDate ▪ **buildDate**: *string* = process.env.HT_BUILD_DATE as string *Defined in [src/HyperFormula.ts:105](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L105)* Latest build date. ___ ### languages ▪ **languages**: *Record‹string, RawTranslationPackage›* *Defined in [src/HyperFormula.ts:121](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L121)* When using the UMD build, this property contains all available languages to use with the [registerLanguage](#registerlanguage) method. For more information, see the [Localizing functions](https://hyperformula.handsontable.com/docs/guide/localizing-functions.md) guide. ___ ### releaseDate ▪ **releaseDate**: *string* = process.env.HT_RELEASE_DATE as string *Defined in [src/HyperFormula.ts:112](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L112)* A release date. ___ ### version ▪ **version**: *string* = process.env.HT_VERSION as string *Defined in [src/HyperFormula.ts:98](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L98)* Version of the HyperFormula. ## Static Accessors ### defaultConfig • **get defaultConfig**(): *[ConfigParams](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md)* *Defined in [src/HyperFormula.ts:160](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L160)* Returns all of HyperFormula's default [configuration options](https://hyperformula.handsontable.com/docs/guide/configuration-options.md). **`example`** ```js // returns all default configuration options const defaultConfig = HyperFormula.defaultConfig; ``` **`category`** Static Accessors **Returns:** *[ConfigParams](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md)* ## Factories ### buildEmpty ▸ **buildEmpty**(`configInput`: Partial‹[ConfigParams](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md)›, `namedExpressions`: [SerializedNamedExpression](https://hyperformula.handsontable.com/docs/api/interfaces/serializednamedexpression.md)[]): *[HyperFormula](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md)* *Defined in [src/HyperFormula.ts:353](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L353)* Builds an empty engine instance. Can be configured with the optional parameter that represents a [ConfigParams](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md). If not specified the engine will be built with the default configuration. **`example`** ```js const namedExpressions = [ { name: 'theUltimateQuestionOfLife', expression: '=42', }, ]; // build with no initial data and with optional config parameter maxColumns const hfInstance = HyperFormula.buildEmpty({ maxColumns: 1000 }, namedExpressions); ``` **Parameters:** Name | Type | Default | Description | ------ | ------ | ------ | ------ | `configInput` | Partial‹[ConfigParams](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md)› | {} | engine configuration | `namedExpressions` | [SerializedNamedExpression](https://hyperformula.handsontable.com/docs/api/interfaces/serializednamedexpression.md)[] | [] | starting named expressions | **Returns:** *[HyperFormula](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md)* ___ ### buildFromArray ▸ **buildFromArray**(`sheet`: [Sheet](https://hyperformula.handsontable.com/docs/api/globals.md#sheet), `configInput`: Partial‹[ConfigParams](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md)›, `namedExpressions`: [SerializedNamedExpression](https://hyperformula.handsontable.com/docs/api/interfaces/serializednamedexpression.md)[]): *[HyperFormula](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md)* *Defined in [src/HyperFormula.ts:279](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L279)* Builds the engine for a sheet from a two-dimensional array representation. The engine is created with a single sheet. Can be configured with the optional second parameter that represents a [ConfigParams](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md). If not specified, the engine will be built with the default configuration. **`throws`** [SheetSizeLimitExceededError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-sheetsizelimitexceedederror) when sheet size exceeds the limits **`throws`** [InvalidArgumentsError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-invalidargumentserror) when sheet is not an array of arrays **`throws`** [FunctionPluginValidationError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-functionpluginvalidationerror) when plugin class definition is not consistent with metadata **`example`** ```js // data represented as an array const sheetData = [ ['0', '=SUM(1, 2, 3)', '52'], ['=SUM(A1:C1)', '', '=A1'], ['2', '=SUM(A1:C1)', '=theUltimateQuestionOfLife'], ]; const namedExpressions = [ { name: 'theUltimateQuestionOfLife', expression: '=42', }, ]; // method with optional config parameter maxColumns const hfInstance = HyperFormula.buildFromArray(sheetData, { maxColumns: 1000 }, namedExpressions); ``` **Parameters:** Name | Type | Default | Description | ------ | ------ | ------ | ------ | `sheet` | [Sheet](https://hyperformula.handsontable.com/docs/api/globals.md#sheet) | - | two-dimensional array representation of sheet | `configInput` | Partial‹[ConfigParams](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md)› | {} | engine configuration | `namedExpressions` | [SerializedNamedExpression](https://hyperformula.handsontable.com/docs/api/interfaces/serializednamedexpression.md)[] | [] | starting named expressions | **Returns:** *[HyperFormula](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md)* ___ ### buildFromSheets ▸ **buildFromSheets**(`sheets`: [Sheets](https://hyperformula.handsontable.com/docs/api/globals.md#sheets), `configInput`: Partial‹[ConfigParams](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md)›, `namedExpressions`: [SerializedNamedExpression](https://hyperformula.handsontable.com/docs/api/interfaces/serializednamedexpression.md)[]): *[HyperFormula](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md)* *Defined in [src/HyperFormula.ts:326](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L326)* Builds the engine from an object containing multiple sheets with names. The engine is created with one or more sheets. Can be configured with the optional second parameter that represents a [ConfigParams](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md). If not specified the engine will be built with the default configuration. **`throws`** [SheetSizeLimitExceededError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-sheetsizelimitexceedederror) when sheet size exceeds the limits **`throws`** [InvalidArgumentsError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-invalidargumentserror) when any sheet is not an array of arrays **`throws`** [FunctionPluginValidationError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-functionpluginvalidationerror) when plugin class definition is not consistent with metadata **`example`** ```js // data represented as an object with sheets: Sheet1 and Sheet2 const sheetData = { 'Sheet1': [ ['1', '', '=Sheet2!$A1'], ['', '2', '=SUM(1, 2, 3)'], ['=Sheet2!$A2', '2', ''], ], 'Sheet2': [ ['', '4', '=Sheet1!$B1'], ['', '8', '=SUM(9, 3, 3)'], ['=Sheet1!$B1', '2', '=theUltimateQuestionOfLife'], ], }; const namedExpressions = [ { name: 'theUltimateQuestionOfLife', expression: '=42', }, ]; // method with optional config parameter useColumnIndex const hfInstance = HyperFormula.buildFromSheets(sheetData, { useColumnIndex: true }, namedExpressions); ``` **Parameters:** Name | Type | Default | Description | ------ | ------ | ------ | ------ | `sheets` | [Sheets](https://hyperformula.handsontable.com/docs/api/globals.md#sheets) | - | object with sheets definition | `configInput` | Partial‹[ConfigParams](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md)› | {} | engine configuration | `namedExpressions` | [SerializedNamedExpression](https://hyperformula.handsontable.com/docs/api/interfaces/serializednamedexpression.md)[] | [] | starting named expressions | **Returns:** *[HyperFormula](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md)* ___ ## Instance ### destroy ▸ **destroy**(): *void* *Defined in [src/HyperFormula.ts:4755](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L4755)* Destroys instance of HyperFormula. **`example`** ```js // destroys the instance hfInstance.destroy(); ``` **Returns:** *void* ___ ### getConfig ▸ **getConfig**(): *[ConfigParams](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md)* *Defined in [src/HyperFormula.ts:1180](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L1180)* Returns current configuration of the engine instance. For more information, see the [Configuration options guide](https://hyperformula.handsontable.com/docs/guide/configuration-options.md). **`example`** ```js // should return all config metadata including default and those which were added const hfConfig = hfInstance.getConfig(); ``` **Returns:** *[ConfigParams](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md)* ___ ### rebuildAndRecalculate ▸ **rebuildAndRecalculate**(): *void* *Defined in [src/HyperFormula.ts:1194](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L1194)* Rebuilds the HyperFormula instance preserving the current sheets data. **`example`** ```js hfInstance.rebuildAndRecalculate(); ``` **Returns:** *void* ___ ### updateConfig ▸ **updateConfig**(`newParams`: Partial‹[ConfigParams](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md)›): *void* *Defined in [src/HyperFormula.ts:1157](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L1157)* Updates the config with given new metadata. It is an expensive operation, as it might trigger rebuilding the engine and recalculation of all formulas. For more information, see the [Configuration options guide](https://hyperformula.handsontable.com/docs/guide/configuration-options.md). **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) when some parameters of config are of wrong type (e.g., currencySymbol) **`throws`** [ConfigValueEmpty](https://hyperformula.handsontable.com/docs/api/classes/configvalueempty.md) when some parameters of config are of invalid value (e.g., currencySymbol) **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['1', '2'], ]); // add a config param, for example maxColumns, // you can check the configuration with getConfig method hfInstance.updateConfig({ maxColumns: 1000 }); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `newParams` | Partial‹[ConfigParams](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md)› | configuration options to be updated or added | **Returns:** *void* ___ ## Sheets ### addSheet ▸ **addSheet**(`sheetName?`: undefined | string): *string* *Defined in [src/HyperFormula.ts:2771](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L2771)* Adds a new sheet to the HyperFormula instance. Returns given or autogenerated name of a new sheet. Note that this method may trigger dependency graph recalculation. **`fires`** [sheetAdded](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md#sheetadded) after the sheet was added **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if any of its basic type argument is of wrong type **`throws`** [SheetNameAlreadyTakenError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-sheetnamealreadytakenerror) when sheet with a given name already exists **`example`** ```js const hfInstance = HyperFormula.buildFromSheets({ MySheet1: [ ['1'] ], MySheet2: [ ['10'] ], }); // should return 'MySheet3' const nameProvided = hfInstance.addSheet('MySheet3'); // should return autogenerated 'Sheet4' // because no name was provided and 3 other ones already exist const generatedName = hfInstance.addSheet(); ``` **Parameters:** Name | Type | ------ | ------ | `sheetName?` | undefined | string | **Returns:** *string* ___ ### clearSheet ▸ **clearSheet**(`sheetId`: number): *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* *Defined in [src/HyperFormula.ts:2919](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L2919)* Clears the sheet content. Double-checks if the sheet exists. Returns [an array of cells whose values changed as a result of this operation](https://hyperformula.handsontable.com/docs/guide/basic-operations.md#changes-array). Note that this method may trigger dependency graph recalculation. **`fires`** [valuesUpdated](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md#valuesupdated) if recalculation was triggered by this change **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if any of its basic type argument is of wrong type **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-nosheetwithiderror) when the given sheet ID does not exist **`example`** ```js const hfInstance = HyperFormula.buildFromSheets({ MySheet1: [ ['=SUM(MySheet2!A1:A2)'] ], MySheet2: [ ['10'] ], }); // should return a list of cells which values changed after the operation, // their absolute addresses and new values, in this example it will return: // [{ // address: { sheet: 0, col: 0, row: 0 }, // newValue: 0, // }] const changes = hfInstance.clearSheet(0); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetId` | number | sheet ID. | **Returns:** *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* ___ ### countSheets ▸ **countSheets**(): *number* *Defined in [src/HyperFormula.ts:3608](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L3608)* Returns the number of existing sheets. **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['1', '2'], ]); // should return the number of sheets which is '1' const sheetsCount = hfInstance.countSheets(); ``` **Returns:** *number* ___ ### doesSheetExist ▸ **doesSheetExist**(`sheetName`: string): *boolean* *Defined in [src/HyperFormula.ts:3327](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L3327)* Returns `true` whether sheet with a given name exists. The method accepts sheet name to be checked. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if any of its basic type argument is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildFromSheets({ MySheet1: [ ['1'] ], MySheet2: [ ['10'] ], }); // should return 'true' since 'MySheet1' exists const sheetExist = hfInstance.doesSheetExist('MySheet1'); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetName` | string | name of the sheet, case-insensitive. | **Returns:** *boolean* ___ ### getAllSheetsDimensions ▸ **getAllSheetsDimensions**(): *Record‹string, [SheetDimensions](https://hyperformula.handsontable.com/docs/api/globals.md#sheetdimensions)›* *Defined in [src/HyperFormula.ts:1033](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L1033)* Returns a map containing dimensions of all sheets for the engine instance represented as a key-value pairs where keys are sheet IDs and dimensions are returned as numbers, width and height respectively. **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-nosheetwithiderror) when the given sheet ID does not exist **`example`** ```js const hfInstance = HyperFormula.buildFromSheets({ Sheet1: [ ['1', '2', '=Sheet2!$A1'], ], Sheet2: [ ['3'], ['4'], ], }); // should return the dimensions of all sheets: // { Sheet1: { width: 3, height: 1 }, Sheet2: { width: 1, height: 2 } } const allSheetsDimensions = hfInstance.getAllSheetsDimensions(); ``` **Returns:** *Record‹string, [SheetDimensions](https://hyperformula.handsontable.com/docs/api/globals.md#sheetdimensions)›* ___ ### getAllSheetsFormulas ▸ **getAllSheetsFormulas**(): *Record‹string, (string | undefined)[][]›* *Defined in [src/HyperFormula.ts:1104](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L1104)* Returns formulas of all sheets in a form of an object which property keys are strings and values are 2D arrays of strings or possibly `undefined` when the call does not contain a formula. **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['1', '2', '=A1+10'], ]); // should return only formulas: { Sheet1: [ [ undefined, undefined, '=A1+10' ] ] } const allSheetsFormulas = hfInstance.getAllSheetsFormulas(); ``` **Returns:** *Record‹string, (string | undefined)[][]›* ___ ### getAllSheetsSerialized ▸ **getAllSheetsSerialized**(): *Record‹string, [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent)[][]›* *Defined in [src/HyperFormula.ts:1129](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L1129)* Returns formulas or values of all sheets in a form of an object which property keys are strings and values are 2D arrays of [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent). Each non-formula cell is serialized to the exact value it was set with, preserving its type. For example, a cell set with the string `'1'` is serialized as the string `'1'`, while a cell set with the number `1` is serialized as the number `1`. **`throws`** [EvaluationSuspendedError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-evaluationsuspendederror) when the evaluation is suspended **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['1', 2, '=A1+10'], ]); // should return all sheets serialized content: { Sheet1: [ [ '1', 2, '=A1+10' ] ] } // note: the string '1' stays a string and the number 2 stays a number const allSheetsSerialized = hfInstance.getAllSheetsSerialized(); ``` **Returns:** *Record‹string, [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent)[][]›* ___ ### getAllSheetsValues ▸ **getAllSheetsValues**(): *Record‹string, [CellValue](https://hyperformula.handsontable.com/docs/api/globals.md#cellvalue)[][]›* *Defined in [src/HyperFormula.ts:1085](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L1085)* Returns values of all sheets in a form of an object which property keys are strings and values are 2D arrays of [CellValue](https://hyperformula.handsontable.com/docs/api/globals.md#cellvalue). **`throws`** [EvaluationSuspendedError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-evaluationsuspendederror) when the evaluation is suspended **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['1', '=A1+10', '3'], ]); // should return all sheets values: { Sheet1: [ [ 1, 11, 3 ] ] } const allSheetsValues = hfInstance.getAllSheetsValues(); ``` **Returns:** *Record‹string, [CellValue](https://hyperformula.handsontable.com/docs/api/globals.md#cellvalue)[][]›* ___ ### getSheetDimensions ▸ **getSheetDimensions**(`sheetId`: number): *[SheetDimensions](https://hyperformula.handsontable.com/docs/api/globals.md#sheetdimensions)* *Defined in [src/HyperFormula.ts:1060](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L1060)* Returns dimensions of a specified sheet. The sheet dimensions is represented with numbers: width and height. Note: Due to the memory optimizations, some of the empty bottom rows and rightmost columns are not counted to the dimensions. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if any of its basic type argument is of wrong type **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-nosheetwithiderror) when the given sheet ID does not exist **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['1', '2', '=Sheet2!$A1'], ]); // should return provided sheet's dimensions: { width: 3, height: 1 } const sheetDimensions = hfInstance.getSheetDimensions(0); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetId` | number | sheet ID number | **Returns:** *[SheetDimensions](https://hyperformula.handsontable.com/docs/api/globals.md#sheetdimensions)* ___ ### getSheetFormulas ▸ **getSheetFormulas**(`sheetId`: number): *(string | undefined)[][]* *Defined in [src/HyperFormula.ts:970](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L970)* Returns an array with normalized formula strings from [Sheet](https://hyperformula.handsontable.com/docs/api/globals.md#sheet) or `undefined` for a cells that have no value. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if any of its basic type argument is of wrong type **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-nosheetwithiderror) when the given sheet ID does not exist **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['0', '=SUM(1, 2, 3)', '=A1'], ['1', '=TEXT(A2, "0.0%")', '=C1'], ['2', '=SUM(A1:C1)', '=C1'], ]); // should return all formulas of a sheet: // [ // [undefined, '=SUM(1, 2, 3)', '=A1'], // [undefined, '=TEXT(A2, "0.0%")', '=C1'], // [undefined, '=SUM(A1:C1)', '=C1'], // ]; const sheetFormulas = hfInstance.getSheetFormulas(0); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetId` | number | sheet ID number | **Returns:** *(string | undefined)[][]* ___ ### getSheetId ▸ **getSheetId**(`sheetName`: string): *number | undefined* *Defined in [src/HyperFormula.ts:3302](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L3302)* Returns a unique sheet ID assigned to the sheet with a given name or `undefined` if the sheet does not exist. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if any of its basic type argument is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildFromSheets({ MySheet1: [ ['1'] ], MySheet2: [ ['10'] ], }); // should return '0' because 'MySheet1' is of ID '0' const sheetID = hfInstance.getSheetId('MySheet1'); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetName` | string | name of the sheet, for which we want to retrieve ID, case-insensitive. | **Returns:** *number | undefined* ___ ### getSheetName ▸ **getSheetName**(`sheetId`: number): *string | undefined* *Defined in [src/HyperFormula.ts:3256](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L3256)* Returns a unique sheet name assigned to the sheet of a given ID or `undefined` if the there is no sheet with a given ID. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if any of its basic type argument is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildFromSheets({ MySheet1: [ ['1'] ], MySheet2: [ ['10'] ], }); // should return 'MySheet2' as this sheet is the second one const sheetName = hfInstance.getSheetName(1); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetId` | number | ID of the sheet, for which we want to retrieve name | **Returns:** *string | undefined* ___ ### getSheetNames ▸ **getSheetNames**(): *string[]* *Defined in [src/HyperFormula.ts:3278](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L3278)* List all sheet names. Returns an array of sheet names as strings. **`example`** ```js const hfInstance = HyperFormula.buildFromSheets({ MySheet1: [ ['1'] ], MySheet2: [ ['10'] ], }); // should return all sheets names: ['MySheet1', 'MySheet2'] const sheetNames = hfInstance.getSheetNames(); ``` **Returns:** *string[]* ___ ### getSheetSerialized ▸ **getSheetSerialized**(`sheetId`: number): *[RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent)[][]* *Defined in [src/HyperFormula.ts:1003](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L1003)* Returns an array of arrays of [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent) with serialized content of cells from [Sheet](https://hyperformula.handsontable.com/docs/api/globals.md#sheet), either a cell formula or an explicit value. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if any of its basic type argument is of wrong type **`throws`** [EvaluationSuspendedError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-evaluationsuspendederror) when the evaluation is suspended **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-nosheetwithiderror) when the given sheet ID does not exist **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['0', '=SUM(1, 2, 3)', '=A1'], ['1', '=TEXT(A2, "0.0%")', '=C1'], ['2', '=SUM(A1:C1)', '=C1'], ]); // should return: // [ // ['0', '=SUM(1, 2, 3)', '=A1'], // ['1', '=TEXT(A2, "0.0%")', '=C1'], // ['2', '=SUM(A1:C1)', '=C1'], // ]; const serializedContent = hfInstance.getSheetSerialized(0); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetId` | number | sheet ID number | **Returns:** *[RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent)[][]* ___ ### getSheetValues ▸ **getSheetValues**(`sheetId`: number): *[CellValue](https://hyperformula.handsontable.com/docs/api/globals.md#cellvalue)[][]* *Defined in [src/HyperFormula.ts:937](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L937)* Returns an array of arrays of [CellValue](https://hyperformula.handsontable.com/docs/api/globals.md#cellvalue) with values of all cells from [Sheet](https://hyperformula.handsontable.com/docs/api/globals.md#sheet). Applies rounding and post-processing. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if any of its basic type argument is of wrong type **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-nosheetwithiderror) when the given sheet ID does not exist **`throws`** [EvaluationSuspendedError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-evaluationsuspendederror) when the evaluation is suspended **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['0', '=SUM(1, 2, 3)', '=A1'], ['1', '=TEXT(A2, "0.0%")', '=C1'], ['2', '=SUM(A1:C1)', '=C1'], ]); // should return all values of a sheet: [[0, 6, 0], [1, '1.0%', 0], [2, 6, 0]] const sheetValues = hfInstance.getSheetValues(0); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetId` | number | sheet ID number | **Returns:** *[CellValue](https://hyperformula.handsontable.com/docs/api/globals.md#cellvalue)[][]* ___ ### isItPossibleToAddSheet ▸ **isItPossibleToAddSheet**(`sheetName`: string): *boolean* *Defined in [src/HyperFormula.ts:2732](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L2732)* Returns information whether it is possible to add a sheet to the engine. Checks against particular rules to ascertain that addSheet can be called. If returns `true`, doing [addSheet](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#addsheet) operation won't throw any errors, and it is possible to add sheet with provided name. Returns `false` if the chosen name is already used. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if any of its basic type argument is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildFromSheets({ MySheet1: [ ['1'] ], MySheet2: [ ['10'] ], }); // should return 'false' because 'MySheet2' already exists const isAddable = hfInstance.isItPossibleToAddSheet('MySheet2'); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetName` | string | sheet name, case-insensitive | **Returns:** *boolean* ___ ### isItPossibleToClearSheet ▸ **isItPossibleToClearSheet**(`sheetId`: number): *boolean* *Defined in [src/HyperFormula.ts:2877](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L2877)* Returns information whether it is possible to clear a specified sheet. If returns `true`, doing [clearSheet](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#clearsheet) operation won't throw any errors, provided sheet exists and its content can be cleared. Returns `false` otherwise **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if any of its basic type argument is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildFromSheets({ MySheet1: [ ['1'] ], MySheet2: [ ['10'] ], }); // should return 'true' because 'MySheet2' exists and can be cleared const isClearable = hfInstance.isItPossibleToClearSheet(1); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetId` | number | sheet ID. | **Returns:** *boolean* ___ ### isItPossibleToRemoveSheet ▸ **isItPossibleToRemoveSheet**(`sheetId`: number): *boolean* *Defined in [src/HyperFormula.ts:2803](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L2803)* Returns information whether it is possible to remove sheet for the engine. Returns `true` if the provided sheet exists, and therefore it can be removed, doing [removeSheet](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#removesheet) operation won't throw any errors. Returns `false` otherwise **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if any of its basic type argument is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildFromSheets({ MySheet1: [ ['1'] ], MySheet2: [ ['10'] ], }); // should return 'true' because sheet with ID 1 exists and is removable const isRemovable = hfInstance.isItPossibleToRemoveSheet(1); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetId` | number | sheet ID. | **Returns:** *boolean* ___ ### isItPossibleToRenameSheet ▸ **isItPossibleToRenameSheet**(`sheetId`: number, `newName`: string): *boolean* *Defined in [src/HyperFormula.ts:3635](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L3635)* Returns information whether it is possible to rename sheet. Returns `true` if the sheet with provided id exists and new name is available Returns `false` if sheet cannot be renamed **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if any of its basic type argument is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildFromSheets({ MySheet1: [ ['1'] ], MySheet2: [ ['10'] ], }); // returns true hfInstance.isItPossibleToRenameSheet(0, 'MySheet0'); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetId` | number | a sheet number | `newName` | string | a name of the sheet to be given | **Returns:** *boolean* ___ ### isItPossibleToReplaceSheetContent ▸ **isItPossibleToReplaceSheetContent**(`sheetId`: number, `values`: [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent)[][]): *boolean* *Defined in [src/HyperFormula.ts:2949](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L2949)* Returns information whether it is possible to replace the sheet content. If returns `true`, doing [setSheetContent](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#setsheetcontent) operation won't throw any errors, the provided sheet exists and then its content can be replaced. Returns `false` otherwise **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if any of its basic type argument is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildFromSheets({ MySheet1: [ ['1'] ], MySheet2: [ ['10'] ], }); // should return 'true' because sheet of ID 0 exists // and the provided content can be placed in this sheet const isReplaceable = hfInstance.isItPossibleToReplaceSheetContent(0, [['50'], ['60']]); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetId` | number | sheet ID. | `values` | [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent)[][] | array of new values | **Returns:** *boolean* ___ ### removeSheet ▸ **removeSheet**(`sheetId`: number): *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* *Defined in [src/HyperFormula.ts:2846](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L2846)* Removes a sheet Returns [an array of cells whose values changed as a result of this operation](https://hyperformula.handsontable.com/docs/guide/basic-operations.md#changes-array). Note that this method may trigger dependency graph recalculation. **`fires`** [sheetRemoved](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md#sheetremoved) after the sheet was removed **`fires`** [valuesUpdated](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md#valuesupdated) if recalculation was triggered by this change **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if any of its basic type argument is of wrong type **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-nosheetwithiderror) when the given sheet ID does not exist **`example`** ```js const hfInstance = HyperFormula.buildFromSheets({ MySheet1: [ ['=SUM(MySheet2!A1:A2)'] ], MySheet2: [ ['10'] ], }); // should return a list of cells which values changed after the operation, // their absolute addresses and new values, in this example it will return: // [{ // address: { sheet: 0, col: 0, row: 0 }, // newValue: { error: [CellError], value: '#REF!' }, // }] const changes = hfInstance.removeSheet(1); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetId` | number | sheet ID. | **Returns:** *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* ___ ### renameSheet ▸ **renameSheet**(`sheetId`: number, `newName`: string): *void* *Defined in [src/HyperFormula.ts:3673](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L3673)* Renames a specified sheet. Note that this method may trigger dependency graph recalculation. **`fires`** [sheetRenamed](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md#sheetrenamed) after the sheet was renamed **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if any of its basic type argument is of wrong type **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-nosheetwithiderror) when the given sheet ID does not exist **`throws`** [SheetNameAlreadyTakenError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-sheetnamealreadytakenerror) when the provided sheet name already exists **`example`** ```js const hfInstance = HyperFormula.buildFromSheets({ MySheet1: [ ['1'] ], MySheet2: [ ['10'] ], }); // renames the sheet 'MySheet1' hfInstance.renameSheet(0, 'MySheet0'); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetId` | number | a sheet ID | `newName` | string | a name of the sheet to be given, if is the same as the old one the method does nothing | **Returns:** *void* ___ ### setSheetContent ▸ **setSheetContent**(`sheetId`: number, `values`: [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent)[][]): *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* *Defined in [src/HyperFormula.ts:2986](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L2986)* Replaces the sheet content with new values. Returns [an array of cells whose values changed as a result of this operation](https://hyperformula.handsontable.com/docs/guide/basic-operations.md#changes-array). **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if any of its basic type argument is of wrong type **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-nosheetwithiderror) when the given sheet ID does not exist **`throws`** [InvalidArgumentsError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-invalidargumentserror) when values argument is not an array of arrays **`example`** ```js const hfInstance = HyperFormula.buildFromSheets({ MySheet1: [ ['1'] ], MySheet2: [ ['10'] ], }); // should return a list of cells which values changed after the operation, // their absolute addresses and new values const changes = hfInstance.setSheetContent(0, [['50'], ['60']]); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetId` | number | sheet ID. | `values` | [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent)[][] | array of new values | **Returns:** *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* ___ ## Ranges ### getFillRangeData ▸ **getFillRangeData**(`source`: [SimpleCellRange](https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange.md), `target`: [SimpleCellRange](https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange.md), `offsetsFromTarget`: boolean): *[RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent)[][]* *Defined in [src/HyperFormula.ts:2688](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L2688)* Returns values to fill target range using source range, with properly extending the range using wrap-around heuristic. **`throws`** [EvaluationSuspendedError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-evaluationsuspendederror) when the evaluation is suspended **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if source or target are of wrong type **`throws`** [SheetsNotEqual](https://hyperformula.handsontable.com/docs/api/classes/sheetsnotequal.md) if range provided has distinct sheet numbers for start and end **`example`** ```js const hfInstance = HyperFormula.buildFromArray([[1, '=A1'], ['=$A$1', '2']]); // should return [['2', '=$A$1', '2'], ['=A3', 1, '=C3'], ['2', '=$A$1', '2']] hfInstance.getFillRangeData( {start: {sheet: 0, row: 0, col: 0}, end: {sheet: 0, row: 1, col: 1}}, {start: {sheet: 0, row: 1, col: 1}, end: {sheet: 0, row: 3, col: 3}}); ``` **Parameters:** Name | Type | Default | Description | ------ | ------ | ------ | ------ | `source` | [SimpleCellRange](https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange.md) | - | of data | `target` | [SimpleCellRange](https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange.md) | - | range where data is intended to be put | `offsetsFromTarget` | boolean | false | if true, offsets are computed from target corner, otherwise from source corner | **Returns:** *[RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent)[][]* ___ ### getRangeFormulas ▸ **getRangeFormulas**(`source`: [SimpleCellRange](https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange.md)): *(string | undefined)[][]* *Defined in [src/HyperFormula.ts:2615](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L2615)* Returns cell formulas in given range. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if source is of wrong type **`throws`** [SheetsNotEqual](https://hyperformula.handsontable.com/docs/api/classes/sheetsnotequal.md) if range provided has distinct sheet numbers for start and end **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-nosheetwithiderror) when the given sheet ID does not exist **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['=SUM(1, 2)', '2', '10'], ['5', '6', '7'], ['40', '30', '20'], ]); // returns cell formulas of a given range only: // [ [ '=SUM(1, 2)', undefined ], [ undefined, undefined ] ] const rangeFormulas = hfInstance.getRangeFormulas({ start: { sheet: 0, col: 0, row: 0 }, end: { sheet: 0, col: 1, row: 1 } }); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `source` | [SimpleCellRange](https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange.md) | rectangular range | **Returns:** *(string | undefined)[][]* ___ ### getRangeSerialized ▸ **getRangeSerialized**(`source`: [SimpleCellRange](https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange.md)): *[RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent)[][]* *Defined in [src/HyperFormula.ts:2654](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L2654)* Returns serialized cells in given range. Each non-formula cell is serialized to the exact value it was set with, preserving its type (e.g., a cell set with the string `'2'` is serialized as the string `'2'`, while a cell set with the number `2` is serialized as the number `2`). **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if source is of wrong type **`throws`** [SheetsNotEqual](https://hyperformula.handsontable.com/docs/api/classes/sheetsnotequal.md) if range provided has distinct sheet numbers for start and end **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-nosheetwithiderror) when the given sheet ID does not exist **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['=SUM(1, 2)', 2, 10], [5, 6, 7], [40, 30, 20], ]); // should return serialized cell content for the given range: // [ [ '=SUM(1, 2)', 2 ], [ 5, 6 ] ] const rangeSerialized = hfInstance.getRangeSerialized({ start: { sheet: 0, col: 0, row: 0 }, end: { sheet: 0, col: 1, row: 1 } }); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `source` | [SimpleCellRange](https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange.md) | rectangular range | **Returns:** *[RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent)[][]* ___ ### getRangeValues ▸ **getRangeValues**(`source`: [SimpleCellRange](https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange.md)): *[CellValue](https://hyperformula.handsontable.com/docs/api/globals.md#cellvalue)[][]* *Defined in [src/HyperFormula.ts:2579](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L2579)* Returns the cell content of a given range in a [CellValue](https://hyperformula.handsontable.com/docs/api/globals.md#cellvalue)[][] format. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if source is of wrong type **`throws`** [SheetsNotEqual](https://hyperformula.handsontable.com/docs/api/classes/sheetsnotequal.md) if range provided has distinct sheet numbers for start and end **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-nosheetwithiderror) when the given sheet ID does not exist **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['=SUM(1, 2)', '2', '10'], ['5', '6', '7'], ['40', '30', '20'], ]); // returns calculated cells content: [ [ 3, 2 ], [ 5, 6 ] ] const rangeValues = hfInstance.getRangeValues({ start: { sheet: 0, col: 0, row: 0 }, end: { sheet: 0, col: 1, row: 1 } }); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `source` | [SimpleCellRange](https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange.md) | rectangular range | **Returns:** *[CellValue](https://hyperformula.handsontable.com/docs/api/globals.md#cellvalue)[][]* ___ ## Rows ### addRows ▸ **addRows**(`sheetId`: number, ...`indexes`: [ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[]): *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* *Defined in [src/HyperFormula.ts:1826](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L1826)* Adds multiple rows into a specified position in a given sheet. Does nothing if rows are outside effective sheet size. Returns [an array of cells whose values changed as a result of this operation](https://hyperformula.handsontable.com/docs/guide/basic-operations.md#changes-array). Note that this method may trigger dependency graph recalculation. **`fires`** [valuesUpdated](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md#valuesupdated) if recalculation was triggered by this change **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if any of its basic type argument is of wrong type **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-nosheetwithiderror) when the given sheet ID does not exist **`throws`** [SheetSizeLimitExceededError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-sheetsizelimitexceedederror) when performing this operation would result in sheet size limits exceeding **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['1'], ['2'], ]); // should return a list of cells which values changed after the operation, // their absolute addresses and new values const changes = hfInstance.addRows(0, [0, 1]); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetId` | number | sheet ID in which rows will be added | `...indexes` | [ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[] | non-contiguous indexes with format [row, amount], where row is a row number above which the rows will be added | **Returns:** *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* ___ ### isItPossibleToAddRows ▸ **isItPossibleToAddRows**(`sheetId`: number, ...`indexes`: [ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[]): *boolean* *Defined in [src/HyperFormula.ts:1784](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L1784)* Returns information whether it is possible to add rows into a specified position in a given sheet. Checks against particular rules to ascertain that addRows can be called. If returns `true`, doing [addRows](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#addrows) operation won't throw any errors. Returns `false` if adding rows would exceed the sheet size limit or given arguments are invalid. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if any of its basic type argument is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['1', '2', '3'], ]); // should return 'true' for this example, // it is possible to add one row in the second row of sheet 0 const isAddable = hfInstance.isItPossibleToAddRows(0, [1, 1]); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetId` | number | sheet ID in which rows will be added | `...indexes` | [ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[] | non-contiguous indexes with format [row, amount], where row is a row number above which the rows will be added | **Returns:** *boolean* ___ ### isItPossibleToMoveRows ▸ **isItPossibleToMoveRows**(`sheetId`: number, `startRow`: number, `numberOfRows`: number, `targetRow`: number): *boolean* *Defined in [src/HyperFormula.ts:2181](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L2181)* Returns information whether it is possible to move a particular number of rows to a specified position in a given sheet. Checks against particular rules to ascertain that moveRows can be called. If returns `true`, doing [moveRows](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#moverows) operation won't throw any errors. Returns `false` if the operation might be disrupted and causes side effects by the fact that there is an array inside the selected rows, the target location includes an array or the provided address is invalid. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if any of its basic type argument is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['1'], ['2'], ]); // should return 'true' for this example // it is possible to move one row from row 0 into row 2 const isMovable = hfInstance.isItPossibleToMoveRows(0, 0, 1, 2); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetId` | number | a sheet number in which the operation will be performed | `startRow` | number | number of the first row to move | `numberOfRows` | number | number of rows to move | `targetRow` | number | row number before which rows will be moved | **Returns:** *boolean* ___ ### isItPossibleToRemoveRows ▸ **isItPossibleToRemoveRows**(`sheetId`: number, ...`indexes`: [ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[]): *boolean* *Defined in [src/HyperFormula.ts:1857](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L1857)* Returns information whether it is possible to remove rows from a specified position in a given sheet. Checks against particular rules to ascertain that removeRows can be called. If returns `true`, doing [removeRows](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#removerows) operation won't throw any errors. Returns `false` if given arguments are invalid. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if any of its basic type argument is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['1'], ['2'], ]); // should return 'true' for this example // it is possible to remove one row from row 1 of sheet 0 const isRemovable = hfInstance.isItPossibleToRemoveRows(0, [1, 1]); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetId` | number | sheet ID from which rows will be removed | `...indexes` | [ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[] | non-contiguous indexes with format: [row, amount] | **Returns:** *boolean* ___ ### isItPossibleToSetRowOrder ▸ **isItPossibleToSetRowOrder**(`sheetId`: number, `newRowOrder`: number[]): *boolean* *Defined in [src/HyperFormula.ts:1579](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L1579)* Checks if it is possible to reorder rows of a sheet according to a permutation. Parameter `newRowOrder` should have the form `[ newPositionForRow0, newPositionForRow1, newPositionForRow2, ... ]`, i.e. the value at index `i` is the new position for the row that is currently at index `i`. See [setRowOrder](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#setroworder) for details. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if any of its basic type argument is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['A'], ['B'], ['C'] ]); // returns true hfInstance.isItPossibleToSetRowOrder(0, [1, 2, 0]); // returns false (array length must match the number of rows) hfInstance.isItPossibleToSetRowOrder(0, [2]); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetId` | number | ID of a sheet to operate on | `newRowOrder` | number[] | permutation of rows | **Returns:** *boolean* ___ ### isItPossibleToSwapRowIndexes ▸ **isItPossibleToSwapRowIndexes**(`sheetId`: number, `rowMapping`: [number, number][]): *boolean* *Defined in [src/HyperFormula.ts:1492](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L1492)* Checks if it is possible to reorder rows of a sheet according to a source-target mapping. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if any of its basic type argument is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ [1], [2], [4, 5], ]); // returns true const isSwappable = hfInstance.isItPossibleToSwapRowIndexes(0, [[0, 2], [2, 0]]); // returns false const isSwappable = hfInstance.isItPossibleToSwapRowIndexes(0, [[0, 1]]); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetId` | number | ID of a sheet to operate on | `rowMapping` | [number, number][] | array mapping original positions to final positions of rows | **Returns:** *boolean* ___ ### moveRows ▸ **moveRows**(`sheetId`: number, `startRow`: number, `numberOfRows`: number, `targetRow`: number): *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* *Defined in [src/HyperFormula.ts:2228](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L2228)* Moves a particular number of rows to a specified position in a given sheet. Returns [an array of cells whose values changed as a result of this operation](https://hyperformula.handsontable.com/docs/guide/basic-operations.md#changes-array). Note that this method may trigger dependency graph recalculation. **`fires`** [valuesUpdated](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md#valuesupdated) if recalculation was triggered by this change **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-nosheetwithiderror) when the given sheet ID does not exist **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if any of its basic type argument is of wrong type **`throws`** [InvalidArgumentsError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-invalidargumentserror) when the given arguments are invalid **`throws`** [SourceLocationHasArrayError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-sourcelocationhasarrayerror) when the source location has array inside - array cannot be moved **`throws`** [TargetLocationHasArrayError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-targetlocationhasarrayerror) when the target location has array inside - cells cannot be replaced by the array **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['1'], ['2'], ]); // should return a list of cells which values changed after the operation, // their absolute addresses and new values const changes = hfInstance.moveRows(0, 0, 1, 2); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetId` | number | a sheet number in which the operation will be performed | `startRow` | number | number of the first row to move | `numberOfRows` | number | number of rows to move | `targetRow` | number | row number before which rows will be moved | **Returns:** *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* ___ ### removeRows ▸ **removeRows**(`sheetId`: number, ...`indexes`: [ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[]): *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* *Defined in [src/HyperFormula.ts:1898](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L1898)* Removes multiple rows from a specified position in a given sheet. Does nothing if rows are outside the effective sheet size. Returns [an array of cells whose values changed as a result of this operation](https://hyperformula.handsontable.com/docs/guide/basic-operations.md#changes-array). Note that this method may trigger dependency graph recalculation. **`fires`** [valuesUpdated](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md#valuesupdated) if recalculation was triggered by this change **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if any of its basic type argument is of wrong type **`throws`** [InvalidArgumentsError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-invalidargumentserror) when the given arguments are invalid **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-nosheetwithiderror) when the given sheet ID does not exist **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['1'], ['2'], ]); // should return: [{ sheet: 0, col: 1, row: 2, value: null }] for this example const changes = hfInstance.removeRows(0, [1, 1]); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetId` | number | sheet ID from which rows will be removed | `...indexes` | [ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[] | non-contiguous indexes with format: [row, amount] | **Returns:** *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* ___ ### setRowOrder ▸ **setRowOrder**(`sheetId`: number, `newRowOrder`: number[]): *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* *Defined in [src/HyperFormula.ts:1544](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L1544)* Reorders rows of a sheet according to a permutation of 0-based indexes. Parameter `newRowOrder` should have the form `[ newPositionForRow0, newPositionForRow1, newPositionForRow2, ... ]`. In other words, the value at index `i` is the new position for the row that is currently at index `i`. Note that this is the opposite of `[ previousPositionForRow0, previousPositionForRow1, ... ]`. This method might be used to [sort the rows of a sheet](https://hyperformula.handsontable.com/docs/guide/sorting-data.md). Returns [an array of cells whose values changed as a result of this operation](https://hyperformula.handsontable.com/docs/guide/basic-operations.md#changes-array). Note: This method may trigger dependency graph recalculation. **`fires`** [valuesUpdated](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md#valuesupdated) if recalculation was triggered by this change **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if any of its basic type argument is of wrong type **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-nosheetwithiderror) when the given sheet ID does not exist **`throws`** [InvalidArgumentsError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-invalidargumentserror) when rowMapping does not define correct row permutation for some subset of rows of the given sheet **`throws`** [SourceLocationHasArrayError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-sourcelocationhasarrayerror) when the selected position has array inside **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['A'], ['B'], ['C'] ]); // Move 'A' to index 1, 'B' to index 2, and 'C' to index 0. const newRowOrder = [1, 2, 0]; // [ newPosForA, newPosForB, newPosForC ] const changes = hfInstance.setRowOrder(0, newRowOrder); // Sheet after this operation: [['C'], ['A'], ['B']] ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetId` | number | ID of a sheet to operate on | `newRowOrder` | number[] | permutation of rows; array length must match the number of rows returned by [getSheetDimensions()](#getsheetdimensions) | **Returns:** *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* ___ ### swapRowIndexes ▸ **swapRowIndexes**(`sheetId`: number, `rowMapping`: [number, number][]): *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* *Defined in [src/HyperFormula.ts:1461](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L1461)* Reorders rows of a sheet according to a source-target mapping. Returns [an array of cells whose values changed as a result of this operation](https://hyperformula.handsontable.com/docs/guide/basic-operations.md#changes-array). Note that this method may trigger dependency graph recalculation. **`fires`** [valuesUpdated](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md#valuesupdated) if recalculation was triggered by this change **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if any of its basic type argument is of wrong type **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-nosheetwithiderror) when the given sheet ID does not exist **`throws`** [InvalidArgumentsError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-invalidargumentserror) when rowMapping does not define correct row permutation for some subset of rows of the given sheet **`throws`** [SourceLocationHasArrayError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-sourcelocationhasarrayerror) when the selected position has array inside **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ [1], [2], [4, 5], ]); // should set swap rows 0 and 2 in place, returns: // [{ // address: { sheet: 0, col: 0, row: 2 }, // newValue: 1, // }, // { // address: { sheet: 0, col: 1, row: 2 }, // newValue: null, // }, // { // address: { sheet: 0, col: 0, row: 0 }, // newValue: 4, // }, // { // address: { sheet: 0, col: 1, row: 0 }, // newValue: 5, // }] const changes = hfInstance.swapRowIndexes(0, [[0, 2], [2, 0]]); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetId` | number | ID of a sheet to operate on | `rowMapping` | [number, number][] | array mapping original positions to final positions of rows | **Returns:** *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* ___ ## Columns ### addColumns ▸ **addColumns**(`sheetId`: number, ...`indexes`: [ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[]): *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* *Defined in [src/HyperFormula.ts:1974](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L1974)* Adds multiple columns into a specified position in a given sheet. Does nothing if the columns are outside the effective sheet size. Returns [an array of cells whose values changed as a result of this operation](https://hyperformula.handsontable.com/docs/guide/basic-operations.md#changes-array). Note that this method may trigger dependency graph recalculation. **`fires`** [valuesUpdated](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md#valuesupdated) if recalculation was triggered by this change **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if any of its basic type argument is of wrong type **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-nosheetwithiderror) when the given sheet ID does not exist **`throws`** [InvalidArgumentsError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-invalidargumentserror) when the given arguments are invalid **`throws`** [SheetSizeLimitExceededError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-sheetsizelimitexceedederror) when performing this operation would result in sheet size limits exceeding **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['=RAND()', '42'], ]); // should return a list of cells which values changed after the operation, // their absolute addresses and new values, for this example: // [{ // address: { sheet: 0, col: 1, row: 0 }, // newValue: 0.92754862796338, // }] const changes = hfInstance.addColumns(0, [0, 1]); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetId` | number | sheet ID in which columns will be added | `...indexes` | [ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[] | non-contiguous indexes with format: [column, amount], where column is a column number from which new columns will be added | **Returns:** *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* ___ ### isItPossibleToAddColumns ▸ **isItPossibleToAddColumns**(`sheetId`: number, ...`indexes`: [ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[]): *boolean* *Defined in [src/HyperFormula.ts:1928](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L1928)* Returns information whether it is possible to add columns into a specified position in a given sheet. Checks against particular rules to ascertain that addColumns can be called. If returns `true`, doing [addColumns](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#addcolumns) operation won't throw any errors. Returns `false` if adding columns would exceed the sheet size limit or given arguments are invalid. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if any of its basic type argument is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['1', '2'], ]); // should return 'true' for this example, // it is possible to add 1 column in sheet 0, at column 1 const isAddable = hfInstance.isItPossibleToAddColumns(0, [1, 1]); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetId` | number | sheet ID in which columns will be added | `...indexes` | [ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[] | non-contiguous indexes with format: [column, amount], where column is a column number from which new columns will be added | **Returns:** *boolean* ___ ### isItPossibleToMoveColumns ▸ **isItPossibleToMoveColumns**(`sheetId`: number, `startColumn`: number, `numberOfColumns`: number, `targetColumn`: number): *boolean* *Defined in [src/HyperFormula.ts:2263](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L2263)* Returns information whether it is possible to move a particular number of columns to a specified position in a given sheet. Checks against particular rules to ascertain that moveColumns can be called. If returns `true`, doing [moveColumns](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#movecolumns) operation won't throw any errors. Returns `false` if the operation might be disrupted and causes side effects by the fact that there is an array inside the selected columns, the target location includes an array or the provided address is invalid. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if any of its basic type argument is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['1', '2'], ]); // should return 'true' for this example // it is possible to move one column from column 1 into column 2 of sheet 0 const isMovable = hfInstance.isItPossibleToMoveColumns(0, 1, 1, 2); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetId` | number | a sheet number in which the operation will be performed | `startColumn` | number | number of the first column to move | `numberOfColumns` | number | number of columns to move | `targetColumn` | number | column number before which columns will be moved | **Returns:** *boolean* ___ ### isItPossibleToRemoveColumns ▸ **isItPossibleToRemoveColumns**(`sheetId`: number, ...`indexes`: [ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[]): *boolean* *Defined in [src/HyperFormula.ts:2004](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L2004)* Returns information whether it is possible to remove columns from a specified position in a given sheet. Checks against particular rules to ascertain that removeColumns can be called. If returns `true`, doing [removeColumns](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#removecolumns) operation won't throw any errors. Returns `false` if given arguments are invalid. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if any of its basic type argument is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['1', '2'], ]); // should return 'true' for this example // it is possible to remove one column, in place of the second column of sheet 0 const isRemovable = hfInstance.isItPossibleToRemoveColumns(0, [1, 1]); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetId` | number | sheet ID from which columns will be removed | `...indexes` | [ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[] | non-contiguous indexes with format [column, amount] | **Returns:** *boolean* ___ ### isItPossibleToSetColumnOrder ▸ **isItPossibleToSetColumnOrder**(`sheetId`: number, `newColumnOrder`: number[]): *boolean* *Defined in [src/HyperFormula.ts:1748](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L1748)* Checks if it is possible to reorder columns of a sheet according to a permutation. Parameter `newColumnOrder` should have the form `[ newPositionForColumn0, newPositionForColumn1, newPositionForColumn2, ... ]`, i.e. the value at index `i` is the new position for the column that is currently at index `i`. See [setColumnOrder](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#setcolumnorder) for details. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if any of its basic type argument is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['A', 'B', 'C'] ]); // returns true hfInstance.isItPossibleToSetColumnOrder(0, [1, 2, 0]); // returns false (array length must match the number of columns) hfInstance.isItPossibleToSetColumnOrder(0, [1]); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetId` | number | ID of a sheet to operate on | `newColumnOrder` | number[] | permutation of columns | **Returns:** *boolean* ___ ### isItPossibleToSwapColumnIndexes ▸ **isItPossibleToSwapColumnIndexes**(`sheetId`: number, `columnMapping`: [number, number][]): *boolean* *Defined in [src/HyperFormula.ts:1665](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L1665)* Checks if it is possible to reorder columns of a sheet according to a source-target mapping. **`fires`** [valuesUpdated](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md#valuesupdated) if recalculation was triggered by this change **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if any of its basic type argument is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ [1, 2, 4], [5] ]); // returns true hfInstance.isItPossibleToSwapColumnIndexes(0, [[0, 2], [2, 0]]); // returns false hfInstance.isItPossibleToSwapColumnIndexes(0, [[0, 1]]); ``` **Parameters:** Name | Type | ------ | ------ | `sheetId` | number | `columnMapping` | [number, number][] | **Returns:** *boolean* ___ ### moveColumns ▸ **moveColumns**(`sheetId`: number, `startColumn`: number, `numberOfColumns`: number, `targetColumn`: number): *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* *Defined in [src/HyperFormula.ts:2316](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L2316)* Moves a particular number of columns to a specified position in a given sheet. Returns [an array of cells whose values changed as a result of this operation](https://hyperformula.handsontable.com/docs/guide/basic-operations.md#changes-array). Note that this method may trigger dependency graph recalculation. **`fires`** [valuesUpdated](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md#valuesupdated) if recalculation was triggered by this change **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-nosheetwithiderror) when the given sheet ID does not exist **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if any of its basic type argument is of wrong type **`throws`** [InvalidArgumentsError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-invalidargumentserror) when the given arguments are invalid **`throws`** [SourceLocationHasArrayError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-sourcelocationhasarrayerror) when the source location has array inside - array cannot be moved **`throws`** [TargetLocationHasArrayError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-targetlocationhasarrayerror) when the target location has array inside - cells cannot be replaced by the array **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['1', '2', '3', '=RAND()', '=SUM(A1:C1)'], ]); // should return a list of cells which values changed after the operation, // their absolute addresses and new values, for this example: // [{ // address: { sheet: 0, col: 1, row: 0 }, // newValue: 0.16210054671639, // }, { // address: { sheet: 0, col: 4, row: 0 }, // newValue: 6.16210054671639, // }] const changes = hfInstance.moveColumns(0, 1, 1, 2); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetId` | number | a sheet number in which the operation will be performed | `startColumn` | number | number of the first column to move | `numberOfColumns` | number | number of columns to move | `targetColumn` | number | column number before which columns will be moved | **Returns:** *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* ___ ### removeColumns ▸ **removeColumns**(`sheetId`: number, ...`indexes`: [ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[]): *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* *Defined in [src/HyperFormula.ts:2049](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L2049)* Removes multiple columns from a specified position in a given sheet. Does nothing if columns are outside the effective sheet size. Returns [an array of cells whose values changed as a result of this operation](https://hyperformula.handsontable.com/docs/guide/basic-operations.md#changes-array). Note that this method may trigger dependency graph recalculation. **`fires`** [valuesUpdated](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md#valuesupdated) if recalculation was triggered by this change **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if any of its basic type argument is of wrong type **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-nosheetwithiderror) when the given sheet ID does not exist **`throws`** [InvalidArgumentsError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-invalidargumentserror) when the given arguments are invalid **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['0', '=SUM(1, 2, 3)', '=A1'], ]); // should return a list of cells which values changed after the operation, // their absolute addresses and new values, in this example it will return: // [{ // address: { sheet: 0, col: 1, row: 0 }, // newValue: { error: [CellError], value: '#REF!' }, // }] const changes = hfInstance.removeColumns(0, [0, 1]); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetId` | number | sheet ID from which columns will be removed | `...indexes` | [ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[] | non-contiguous indexes with format: [column, amount] | **Returns:** *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* ___ ### setColumnOrder ▸ **setColumnOrder**(`sheetId`: number, `newColumnOrder`: number[]): *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* *Defined in [src/HyperFormula.ts:1715](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L1715)* Reorders columns of a sheet according to a permutation of 0-based indexes. Parameter `newColumnOrder` should have the form `[ newPositionForColumn0, newPositionForColumn1, newPositionForColumn2, ... ]`. In other words, the value at index `i` is the new position for the column that is currently at index `i`. Note that this is the opposite of `[ previousPositionForColumn0, previousPositionForColumn1, ... ]`. This method might be used to [sort the columns of a sheet](https://hyperformula.handsontable.com/docs/guide/sorting-data.md). Returns [an array of cells whose values changed as a result of this operation](https://hyperformula.handsontable.com/docs/guide/basic-operations.md#changes-array). Note: This method may trigger dependency graph recalculation. **`fires`** [valuesUpdated](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md#valuesupdated) if recalculation was triggered by this change **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if any of its basic type argument is of wrong type **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-nosheetwithiderror) when the given sheet ID does not exist **`throws`** [InvalidArgumentsError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-invalidargumentserror) when columnMapping does not define correct column permutation for some subset of columns of the given sheet **`throws`** [SourceLocationHasArrayError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-sourcelocationhasarrayerror) when the selected position has array inside **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['A', 'B', 'C'] ]); // Move 'A' to index 1, 'B' to index 2, and 'C' to index 0. const newColumnOrder = [1, 2, 0]; // [ newPosForA, newPosForB, newPosForC ] const changes = hfInstance.setColumnOrder(0, newColumnOrder); // Sheet after this operation: [['C', 'A', 'B']] ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetId` | number | ID of a sheet to operate on | `newColumnOrder` | number[] | permutation of columns; array length must match the number of columns returned by [getSheetDimensions()](#getsheetdimensions) | **Returns:** *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* ___ ### swapColumnIndexes ▸ **swapColumnIndexes**(`sheetId`: number, `columnMapping`: [number, number][]): *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* *Defined in [src/HyperFormula.ts:1637](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L1637)* Reorders columns of a sheet according to a source-target mapping. Returns [an array of cells whose values changed as a result of this operation](https://hyperformula.handsontable.com/docs/guide/basic-operations.md#changes-array). Note that this method may trigger dependency graph recalculation. **`fires`** [valuesUpdated](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md#valuesupdated) if recalculation was triggered by this change **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if any of its basic type argument is of wrong type **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-nosheetwithiderror) when the given sheet ID does not exist **`throws`** [InvalidArgumentsError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-invalidargumentserror) when columnMapping does not define correct column permutation for some subset of columns of the given sheet **`throws`** [SourceLocationHasArrayError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-sourcelocationhasarrayerror) when the selected position has array inside **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ [1, 2, 4], [5] ]); // should set swap columns 0 and 2 in place, returns: // [{ // address: { sheet: 0, col: 2, row: 0 }, // newValue: 1, // }, // { // address: { sheet: 0, col: 2, row: 1 }, // newValue: 5, // }, // { // address: { sheet: 0, col: 0, row: 0 }, // newValue: 4, // }, // { // address: { sheet: 0, col: 0, row: 1 }, // newValue: null, // }] const changes = hfInstance.swapColumnIndexes(0, [[0, 2], [2, 0]]); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetId` | number | ID of a sheet to operate on | `columnMapping` | [number, number][] | array mapping original positions to final positions of columns | **Returns:** *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* ___ ## Cells ### doesCellHaveFormula ▸ **doesCellHaveFormula**(`cellAddress`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *boolean* *Defined in [src/HyperFormula.ts:3419](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L3419)* Returns `true` if the specified cell contains a formula. The method accepts cell coordinates as object with column, row and sheet numbers. **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-nosheetwithiderror) when the given sheet ID does not exist **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if cellAddress is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['=SUM(A2:A3)', '2'], ]); // should return 'true' since the A1 cell contains a formula const A1Formula = hfInstance.doesCellHaveFormula({ sheet: 0, col: 0, row: 0 }); // should return 'false' since the B1 cell does not contain a formula const B1NoFormula = hfInstance.doesCellHaveFormula({ sheet: 0, col: 1, row: 0 }); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `cellAddress` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | cell coordinates | **Returns:** *boolean* ___ ### doesCellHaveSimpleValue ▸ **doesCellHaveSimpleValue**(`cellAddress`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *boolean* *Defined in [src/HyperFormula.ts:3388](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L3388)* Returns `true` if the specified cell contains a simple value. The method accepts cell coordinates as object with column, row and sheet numbers. **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-nosheetwithiderror) when the given sheet ID does not exist **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if cellAddress is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['=SUM(A2:A3)', '2'], ]); // should return 'true' since the selected cell contains a simple value const isA1Simple = hfInstance.doesCellHaveSimpleValue({ sheet: 0, col: 0, row: 0 }); // should return 'false' since the selected cell does not contain a simple value const isB1Simple = hfInstance.doesCellHaveSimpleValue({ sheet: 0, col: 1, row: 0 }); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `cellAddress` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | cell coordinates | **Returns:** *boolean* ___ ### getCellFormula ▸ **getCellFormula**(`cellAddress`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *string | undefined* *Defined in [src/HyperFormula.ts:843](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L843)* Returns a normalized formula string from the cell of a given address or `undefined` for an address that does not exist and empty values. **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-nosheetwithiderror) when the given sheet ID does not exist **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) when cellAddress is of incorrect type **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['=SUM(1, 2, 3)', '0'], ]); // should return a normalized A1 cell formula: '=SUM(1, 2, 3)' const A1Formula = hfInstance.getCellFormula({ sheet: 0, col: 0, row: 0 }); // should return a normalized B1 cell formula: 'undefined' const B1Formula = hfInstance.getCellFormula({ sheet: 0, col: 1, row: 0 }); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `cellAddress` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | cell coordinates | **Returns:** *string | undefined* ___ ### getCellHyperlink ▸ **getCellHyperlink**(`cellAddress`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *string | undefined* *Defined in [src/HyperFormula.ts:873](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L873)* Returns the `HYPERLINK` url for a cell of a given address or `undefined` for an address that does not exist or a cell that is not `HYPERLINK` **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-nosheetwithiderror) when the given sheet ID does not exist **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) when cellAddress is of incorrect type **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['=HYPERLINK("https://hyperformula.handsontable.com/", "HyperFormula")', '0'], ]); // should return url of 'HYPERLINK': https://hyperformula.handsontable.com/ const A1Hyperlink = hfInstance.getCellHyperlink({ sheet: 0, col: 0, row: 0 }); // should return 'undefined' for a cell that is not 'HYPERLINK' const B1Hyperlink = hfInstance.getCellHyperlink({ sheet: 0, col: 1, row: 0 }); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `cellAddress` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | cell coordinates | **Returns:** *string | undefined* ___ ### getCellSerialized ▸ **getCellSerialized**(`cellAddress`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *[RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent)* *Defined in [src/HyperFormula.ts:905](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L905)* Returns [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent) with a serialized content of the cell of a given address: either a cell formula, an explicit value, or an error. **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-nosheetwithiderror) when the given sheet ID does not exist **`throws`** [EvaluationSuspendedError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-evaluationsuspendederror) when the evaluation is suspended **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) when cellAddress is of incorrect type **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['=SUM(1, 2, 3)', '0'], ]); // should return serialized content of A1 cell: '=SUM(1, 2, 3)' const cellA1Serialized = hfInstance.getCellSerialized({ sheet: 0, col: 0, row: 0 }); // should return serialized content of B1 cell: '0' const cellB1Serialized = hfInstance.getCellSerialized({ sheet: 0, col: 1, row: 0 }); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `cellAddress` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | cell coordinates | **Returns:** *[RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent)* ___ ### getCellType ▸ **getCellType**(`cellAddress`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *[CellType](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-celltype)* *Defined in [src/HyperFormula.ts:3356](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L3356)* Returns the type of a cell at a given address. The method accepts cell coordinates as object with column, row and sheet numbers. **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-nosheetwithiderror) when the given sheet ID does not exist **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if cellAddress is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['=SUM(A2:A3)', '2'], ]); // should return 'FORMULA', the cell of given coordinates is of this type const cellA1Type = hfInstance.getCellType({ sheet: 0, col: 0, row: 0 }); // should return 'VALUE', the cell of given coordinates is of this type const cellB1Type = hfInstance.getCellType({ sheet: 0, col: 1, row: 0 }); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `cellAddress` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | cell coordinates | **Returns:** *[CellType](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-celltype)* ___ ### getCellValue ▸ **getCellValue**(`cellAddress`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *[CellValue](https://hyperformula.handsontable.com/docs/api/globals.md#cellvalue)* *Defined in [src/HyperFormula.ts:812](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L812)* Returns the cell value of a given address. Applies rounding and post-processing. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) when cellAddress is of incorrect type **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-nosheetwithiderror) when the given sheet ID does not exist **`throws`** [EvaluationSuspendedError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-evaluationsuspendederror) when the evaluation is suspended **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['=SUM(1, 2, 3)', '2'], ]); // get value of A1 cell, should be '6' const A1Value = hfInstance.getCellValue({ sheet: 0, col: 0, row: 0 }); // get value of B1 cell, should be '2' const B1Value = hfInstance.getCellValue({ sheet: 0, col: 1, row: 0 }); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `cellAddress` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | cell coordinates | **Returns:** *[CellValue](https://hyperformula.handsontable.com/docs/api/globals.md#cellvalue)* ___ ### getCellValueDetailedType ▸ **getCellValueDetailedType**(`cellAddress`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *[CellValueDetailedType](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-cellvaluedetailedtype)* *Defined in [src/HyperFormula.ts:3550](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L3550)* Returns detailed type of the cell value of a given address. The method accepts cell coordinates as object with column, row and sheet numbers. For more information, see the [Types of values guide](https://hyperformula.handsontable.com/docs/guide/types-of-values.md). **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-nosheetwithiderror) when the given sheet ID does not exist **`throws`** [EvaluationSuspendedError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-evaluationsuspendederror) when the evaluation is suspended **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if cellAddress is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['1%', '1$'], ]); // should return 'NUMBER_PERCENT', cell value type of provided coordinates is a number with a format inference percent. const cellType = hfInstance.getCellValueDetailedType({ sheet: 0, col: 0, row: 0 }); // should return 'NUMBER_CURRENCY', cell value type of provided coordinates is a number with a format inference currency. const cellType = hfInstance.getCellValueDetailedType({ sheet: 0, col: 1, row: 0 }); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `cellAddress` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | cell coordinates | **Returns:** *[CellValueDetailedType](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-cellvaluedetailedtype)* ___ ### getCellValueFormat ▸ **getCellValueFormat**(`cellAddress`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *FormatInfo* *Defined in [src/HyperFormula.ts:3584](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L3584)* Returns auxiliary format information of the cell value of a given address. The method accepts cell coordinates as object with column, row and sheet numbers. **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-nosheetwithiderror) when the given sheet ID does not exist **`throws`** [EvaluationSuspendedError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-evaluationsuspendederror) when the evaluation is suspended **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if cellAddress is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['1$', '1'], ]); // should return '$', cell value type of provided coordinates is a number with a format inference currency, parsed as using '$' as currency. const cellFormat = hfInstance.getCellValueFormat({ sheet: 0, col: 0, row: 0 }); // should return undefined, cell value type of provided coordinates is a number with no format information. const cellFormat = hfInstance.getCellValueFormat({ sheet: 0, col: 1, row: 0 }); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `cellAddress` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | cell coordinates | **Returns:** *FormatInfo* ___ ### getCellValueType ▸ **getCellValueType**(`cellAddress`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *[CellValueType](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-cellvaluetype)* *Defined in [src/HyperFormula.ts:3514](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L3514)* Returns type of the cell value of a given address. The method accepts cell coordinates as object with column, row and sheet numbers. For more information, see the [Types of values guide](https://hyperformula.handsontable.com/docs/guide/types-of-values.md). **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-nosheetwithiderror) when the given sheet ID does not exist **`throws`** [EvaluationSuspendedError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-evaluationsuspendederror) when the evaluation is suspended **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if cellAddress is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['=SUM(1, 2, 3)', '2'], ]); // should return 'NUMBER', cell value type of provided coordinates is a number const cellValue = hfInstance.getCellValueType({ sheet: 0, col: 1, row: 0 }); // should return 'NUMBER', cell value type of provided coordinates is a number const cellValue = hfInstance.getCellValueType({ sheet: 0, col: 0, row: 0 }); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `cellAddress` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | cell coordinates | **Returns:** *[CellValueType](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-cellvaluetype)* ___ ### isCellEmpty ▸ **isCellEmpty**(`cellAddress`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *boolean* *Defined in [src/HyperFormula.ts:3451](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L3451)* Returns`true` if the specified cell is empty. The method accepts cell coordinates as object with column, row and sheet numbers. **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-nosheetwithiderror) when the given sheet ID does not exist **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if cellAddress is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ [null, '1'], ]); // should return 'true', cell of provided coordinates is empty const isEmpty = hfInstance.isCellEmpty({ sheet: 0, col: 0, row: 0 }); // should return 'false', cell of provided coordinates is not empty const isNotEmpty = hfInstance.isCellEmpty({ sheet: 0, col: 1, row: 0 }); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `cellAddress` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | cell coordinates | **Returns:** *boolean* ___ ### isCellPartOfArray ▸ **isCellPartOfArray**(`cellAddress`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *boolean* *Defined in [src/HyperFormula.ts:3479](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L3479)* Returns `true` if a given cell is a part of an array. The method accepts cell coordinates as object with column, row and sheet numbers. **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-nosheetwithiderror) when the given sheet ID does not exist **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if cellAddress is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['{=TRANSPOSE(B1:B1)}'], ]); // should return 'true', cell of provided coordinates is a part of an array const isPartOfArray = hfInstance.isCellPartOfArray({ sheet: 0, col: 0, row: 0 }); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `cellAddress` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | cell coordinates | **Returns:** *boolean* ___ ### isItPossibleToMoveCells ▸ **isItPossibleToMoveCells**(`source`: [SimpleCellRange](https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange.md), `destinationLeftCorner`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *boolean* *Defined in [src/HyperFormula.ts:2085](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L2085)* Returns information whether it is possible to move cells to a specified position in a given sheet. Checks against particular rules to ascertain that moveCells can be called. If returns `true`, doing [moveCells](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#movecells) operation won't throw any errors. Returns `false` if the operation might be disrupted and causes side effects by the fact that there is an array inside the selected columns, the target location includes an array or the provided address is invalid. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if destinationLeftCorner, source, or any of basic type arguments are of wrong type **`throws`** [SheetsNotEqual](https://hyperformula.handsontable.com/docs/api/classes/sheetsnotequal.md) if range provided has distinct sheet numbers for start and end **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['1', '2'], ]); // choose the coordinates and assign them to variables const source = { sheet: 0, col: 1, row: 0 }; const destination = { sheet: 0, col: 3, row: 0 }; // should return 'true' for this example // it is possible to move a block of width 1 and height 1 // from the corner: column 1 and row 0 of sheet 0 // into destination corner: column 3, row 0 of sheet 0 const isMovable = hfInstance.isItPossibleToMoveCells({ start: source, end: source }, destination); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `source` | [SimpleCellRange](https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange.md) | range for a moved block | `destinationLeftCorner` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | upper left address of the target cell block | **Returns:** *boolean* ___ ### isItPossibleToSetCellContents ▸ **isItPossibleToSetCellContents**(`address`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | [SimpleCellRange](https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange.md)): *boolean* *Defined in [src/HyperFormula.ts:1356](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L1356)* Returns information whether it is possible to change the content in a rectangular area bounded by the box. If returns `true`, doing [setCellContents](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#setcellcontents) operation won't throw any errors. Returns `false` if the address is invalid or the sheet does not exist. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if any of its basic type argument is of wrong type **`throws`** [SheetsNotEqual](https://hyperformula.handsontable.com/docs/api/classes/sheetsnotequal.md) if range provided has distinct sheet numbers for start and end **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['1', '2'], ]); // top left corner const address1 = { col: 0, row: 0, sheet: 0 }; // bottom right corner const address2 = { col: 1, row: 0, sheet: 0 }; // should return 'true' for this example, it is possible to set content of // width 2, height 1 in the first row and column of sheet 0 const isSettable = hfInstance.isItPossibleToSetCellContents({ start: address1, end: address2 }); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `address` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | [SimpleCellRange](https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange.md) | single cell or block of cells to check | **Returns:** *boolean* ___ ### moveCells ▸ **moveCells**(`source`: [SimpleCellRange](https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange.md), `destinationLeftCorner`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* *Defined in [src/HyperFormula.ts:2142](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L2142)* Moves the content of a cell block from source to the target location. Returns [an array of cells whose values changed as a result of this operation](https://hyperformula.handsontable.com/docs/guide/basic-operations.md#changes-array). Note that this method may trigger dependency graph recalculation. **`fires`** [valuesUpdated](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md#valuesupdated) if recalculation was triggered by this change **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-nosheetwithiderror) when the given sheet ID does not exist **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if destinationLeftCorner or source are of wrong type **`throws`** [InvalidArgumentsError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-invalidargumentserror) when the given arguments are invalid **`throws`** [SheetSizeLimitExceededError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-sheetsizelimitexceedederror) when performing this operation would result in sheet size limits exceeding **`throws`** [SourceLocationHasArrayError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-sourcelocationhasarrayerror) when the source location has array inside - array cannot be moved **`throws`** [TargetLocationHasArrayError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-targetlocationhasarrayerror) when the target location has array inside - cells cannot be replaced by the array **`throws`** [SheetsNotEqual](https://hyperformula.handsontable.com/docs/api/classes/sheetsnotequal.md) if range provided has distinct sheet numbers for start and end **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['=RAND()', '42'], ]); // choose the coordinates and assign them to variables const source = { sheet: 0, col: 1, row: 0 }; const destination = { sheet: 0, col: 3, row: 0 }; // should return a list of cells which values changed after the operation, // their absolute addresses and new values, for this example: // [{ // address: { sheet: 0, col: 0, row: 0 }, // newValue: 0.93524248002062, // }] const changes = hfInstance.moveCells({ start: source, end: source }, destination); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `source` | [SimpleCellRange](https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange.md) | range for a moved block | `destinationLeftCorner` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | upper left address of the target cell block | **Returns:** *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* ___ ### setCellContents ▸ **setCellContents**(`topLeftCornerAddress`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), `cellContents`: [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent)[][] | [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent)): *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* *Defined in [src/HyperFormula.ts:1409](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L1409)* Sets the content for a block of cells of a given coordinates. Returns [an array of cells whose values changed as a result of this operation](https://hyperformula.handsontable.com/docs/guide/basic-operations.md#changes-array). Note that this method may trigger dependency graph recalculation. **`fires`** [valuesUpdated](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md#valuesupdated) if recalculation was triggered by this change **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-nosheetwithiderror) when the given sheet ID does not exist **`throws`** [InvalidArgumentsError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-invalidargumentserror) when the value is not an array of arrays or a raw cell value **`throws`** [SheetSizeLimitExceededError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-sheetsizelimitexceedederror) when performing this operation would result in sheet size limits exceeding **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if topLeftCornerAddress argument is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['1', '2', '=A1'], ]); // should set the content, returns: // [{ // address: { sheet: 0, col: 3, row: 0 }, // newValue: 2, // }] const changes = hfInstance.setCellContents({ col: 3, row: 0, sheet: 0 }, [['=B1']]); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `topLeftCornerAddress` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | top left corner of block of cells | `cellContents` | [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent)[][] | [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent) | array with content | **Returns:** *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* ___ ## Named Expressions ### addNamedExpression ▸ **addNamedExpression**(`expressionName`: string, `expression`: [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent), `scope?`: undefined | number, `options?`: [NamedExpressionOptions](https://hyperformula.handsontable.com/docs/api/globals.md#namedexpressionoptions)): *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* *Defined in [src/HyperFormula.ts:3904](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L3904)* Adds a specified named expression. Returns [an array of cells whose values changed as a result of this operation](https://hyperformula.handsontable.com/docs/guide/basic-operations.md#changes-array). Note that this method may trigger dependency graph recalculation. **`fires`** [namedExpressionAdded](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md#namedexpressionadded) always, unless [batch](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#batch) mode is used **`fires`** [valuesUpdated](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md#valuesupdated) if recalculation was triggered by this change **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if any of its basic type argument is of wrong type **`throws`** [NamedExpressionNameIsAlreadyTakenError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-namedexpressionnameisalreadytakenerror) when the named-expression name is not available. **`throws`** [NamedExpressionNameIsInvalidError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-namedexpressionnameisinvaliderror) when the named-expression name is not valid **`throws`** [NoRelativeAddressesAllowedError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-norelativeaddressesallowederror) when the named-expression formula contains relative references **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-nosheetwithiderror) if no sheet with given sheetId exists **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['42'], ]); // add own expression, scope limited to 'Sheet1' (sheetId=0), the method should return a list of cells which values // changed after the operation, their absolute addresses and new values // for this example: // [{ // name: 'prettyName', // newValue: 142, // }] const changes = hfInstance.addNamedExpression('prettyName', '=Sheet1!$A$1+100', 0); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `expressionName` | string | a name of the expression to be added | `expression` | [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent) | the expression | `scope?` | undefined | number | scope definition, `sheetId` for local scope or `undefined` for global scope | `options?` | [NamedExpressionOptions](https://hyperformula.handsontable.com/docs/api/globals.md#namedexpressionoptions) | additional metadata related to named expression | **Returns:** *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* ___ ### changeNamedExpression ▸ **changeNamedExpression**(`expressionName`: string, `newExpression`: [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent), `scope?`: undefined | number, `options?`: [NamedExpressionOptions](https://hyperformula.handsontable.com/docs/api/globals.md#namedexpressionoptions)): *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* *Defined in [src/HyperFormula.ts:4126](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L4126)* Changes a given named expression to a specified formula. Returns [an array of cells whose values changed as a result of this operation](https://hyperformula.handsontable.com/docs/guide/basic-operations.md#changes-array). Note that this method may trigger dependency graph recalculation. **`fires`** [valuesUpdated](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md#valuesupdated) if recalculation was triggered by this change **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if any of its basic type argument is of wrong type **`throws`** [NamedExpressionDoesNotExistError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-namedexpressiondoesnotexisterror) when the given expression does not exist. **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-nosheetwithiderror) if no sheet with given sheetId exists **`throws`** [[ArrayFormulasNotSupportedError]] when the named expression formula is an array formula **`throws`** [NoRelativeAddressesAllowedError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-norelativeaddressesallowederror) when the named expression formula contains relative references **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['42'], ]); // add a named expression, scope limited to 'Sheet1' (sheetId=0) hfInstance.addNamedExpression('prettyName', '=Sheet1!$A$1+100', 0); // change the named expression const changes = hfInstance.changeNamedExpression('prettyName', '=Sheet1!$A$1+200'); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `expressionName` | string | an expression name, case-insensitive. | `newExpression` | [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent) | a new expression | `scope?` | undefined | number | scope definition, `sheetId` for local scope or `undefined` for global scope | `options?` | [NamedExpressionOptions](https://hyperformula.handsontable.com/docs/api/globals.md#namedexpressionoptions) | additional metadata related to named expression | **Returns:** *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* ___ ### getAllNamedExpressionsSerialized ▸ **getAllNamedExpressionsSerialized**(): *[SerializedNamedExpression](https://hyperformula.handsontable.com/docs/api/interfaces/serializednamedexpression.md)[]* *Defined in [src/HyperFormula.ts:4294](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L4294)* Returns all named expressions serialized. For more information, see the [Named expressions guide](https://hyperformula.handsontable.com/docs/guide/named-expressions.md). **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['42'], ['50'], ['60'], ]); // add two named expressions and one scoped hfInstance.addNamedExpression('prettyName', '=Sheet1!$A$1+100'); hfInstance.addNamedExpression('anotherPrettyName', '=Sheet1!$A$2+100'); hfInstance.addNamedExpression('prettyName3', '=Sheet1!$A$3+100', 0); // get all expressions serialized // should return: // [ // {name: 'prettyName', expression: '=Sheet1!$A$1+100', options: undefined, scope: undefined}, // {name: 'anotherPrettyName', expression: '=Sheet1!$A$2+100', options: undefined, scope: undefined}, // {name: 'alsoPrettyName', expression: '=Sheet1!$A$3+100', options: undefined, scope: 0} // ] const allExpressions = hfInstance.getAllNamedExpressionsSerialized(); ``` **Returns:** *[SerializedNamedExpression](https://hyperformula.handsontable.com/docs/api/interfaces/serializednamedexpression.md)[]* ___ ### getNamedExpression ▸ **getNamedExpression**(`expressionName`: string, `scope?`: undefined | number): *[NamedExpression](https://hyperformula.handsontable.com/docs/api/interfaces/namedexpression.md) | undefined* *Defined in [src/HyperFormula.ts:4029](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L4029)* Returns a named expression, or `undefined` for a named expression that does not exist or does not hold a formula. For more information, see the [Named expressions guide](https://hyperformula.handsontable.com/docs/guide/named-expressions.md). **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if any of its basic type argument is of wrong type **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-nosheetwithiderror) if no sheet with given sheetId exists **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['42'], ]); // add a named expression in 'Sheet1' (sheetId=0) hfInstance.addNamedExpression('prettyName', '=Sheet1!$A$1+100', 0); // returns a named expression that corresponds to the passed name from 'Sheet1' (sheetId=0) // for this example, returns: // {name: 'prettyName', expression: '=Sheet1!$A$1+100', options: undefined, scope: 0} const myFormula = hfInstance.getNamedExpression('prettyName', 0); // for a named expression that doesn't exist, returns 'undefined': const myFormulaTwo = hfInstance.getNamedExpression('uglyName', 0); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `expressionName` | string | expression name, case-insensitive. | `scope?` | undefined | number | scope definition, `sheetId` for local scope or `undefined` for global scope | **Returns:** *[NamedExpression](https://hyperformula.handsontable.com/docs/api/interfaces/namedexpression.md) | undefined* ___ ### getNamedExpressionFormula ▸ **getNamedExpressionFormula**(`expressionName`: string, `scope?`: undefined | number): *string | undefined* *Defined in [src/HyperFormula.ts:3984](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L3984)* Returns a normalized formula string for given named expression, or `undefined` for a named expression that does not exist or does not hold a formula. For more information, see the [Named expressions guide](https://hyperformula.handsontable.com/docs/guide/named-expressions.md). **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if any of its basic type argument is of wrong type **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-nosheetwithiderror) if no sheet with given sheetId exists **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['42'], ]); // add a named expression in 'Sheet1' (sheetId=0) hfInstance.addNamedExpression('prettyName', '=Sheet1!$A$1+100', 0); // returns a normalized formula string corresponding to the passed name from 'Sheet1' (sheetId=0), // '=Sheet1!A1+100' for this example const myFormula = hfInstance.getNamedExpressionFormula('prettyName', 0); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `expressionName` | string | expression name, case-insensitive. | `scope?` | undefined | number | scope definition, `sheetId` for local scope or `undefined` for global scope | **Returns:** *string | undefined* ___ ### getNamedExpressionValue ▸ **getNamedExpressionValue**(`expressionName`: string, `scope?`: undefined | number): *[CellValue](https://hyperformula.handsontable.com/docs/api/globals.md#cellvalue) | undefined* *Defined in [src/HyperFormula.ts:3942](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L3942)* Gets specified named expression value. Returns a [CellValue](https://hyperformula.handsontable.com/docs/api/globals.md#cellvalue) or undefined if the given named expression does not exist. For more information, see the [Named expressions guide](https://hyperformula.handsontable.com/docs/guide/named-expressions.md). **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if any of its basic type argument is of wrong type **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-nosheetwithiderror) if no sheet with given sheetId exists **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['42'], ]); // add a named expression, only 'Sheet1' (sheetId=0) considered as it is the scope hfInstance.addNamedExpression('prettyName', '=Sheet1!$A$1+100', 'Sheet1'); // returns the calculated value of a passed named expression, '142' for this example const myFormula = hfInstance.getNamedExpressionValue('prettyName', 'Sheet1'); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `expressionName` | string | expression name, case-insensitive. | `scope?` | undefined | number | scope definition, `sheetId` for local scope or `undefined` for global scope | **Returns:** *[CellValue](https://hyperformula.handsontable.com/docs/api/globals.md#cellvalue) | undefined* ___ ### isItPossibleToAddNamedExpression ▸ **isItPossibleToAddNamedExpression**(`expressionName`: string, `expression`: [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent), `scope?`: undefined | number): *boolean* *Defined in [src/HyperFormula.ts:3852](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L3852)* Returns information whether it is possible to add named expression into a specific scope. Checks against particular rules to ascertain that addNamedExpression can be called. If returns `true`, doing [addNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#addnamedexpression) operation won't throw any errors. Returns `false` if the operation might be disrupted. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if any of its basic type argument is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['42'], ]); // should return 'true' for this example, // it is possible to add named expression to global scope const isAddable = hfInstance.isItPossibleToAddNamedExpression('prettyName', '=Sheet1!$A$1+100'); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `expressionName` | string | a name of the expression to be added | `expression` | [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent) | the expression | `scope?` | undefined | number | scope definition, `sheetId` for local scope or `undefined` for global scope | **Returns:** *boolean* ___ ### isItPossibleToChangeNamedExpression ▸ **isItPossibleToChangeNamedExpression**(`expressionName`: string, `newExpression`: [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent), `scope?`: undefined | number): *boolean* *Defined in [src/HyperFormula.ts:4078](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L4078)* Returns information whether it is possible to change named expression in a specific scope. Checks against particular rules to ascertain that changeNamedExpression can be called. If returns `true`, doing [changeNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#changenamedexpression) operation won't throw any errors. Returns `false` if the operation might be disrupted. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if any of its basic type argument is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['42'], ]); // add a named expression hfInstance.addNamedExpression('prettyName', '=Sheet1!$A$1+100'); // should return 'true' for this example, // it is possible to change named expression const isAddable = hfInstance.isItPossibleToChangeNamedExpression('prettyName', '=Sheet1!$A$1+100'); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `expressionName` | string | an expression name, case-insensitive. | `newExpression` | [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent) | a new expression | `scope?` | undefined | number | scope definition, `sheetId` for local scope or `undefined` for global scope | **Returns:** *boolean* ___ ### isItPossibleToRemoveNamedExpression ▸ **isItPossibleToRemoveNamedExpression**(`expressionName`: string, `scope?`: undefined | number): *boolean* *Defined in [src/HyperFormula.ts:4162](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L4162)* Returns information whether it is possible to remove named expression from a specific scope. Checks against particular rules to ascertain that removeNamedExpression can be called. If returns `true`, doing [removeNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#removenamedexpression) operation won't throw any errors. Returns `false` if the operation might be disrupted. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if any of its basic type argument is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['42'], ]); // add a named expression hfInstance.addNamedExpression('prettyName', '=Sheet1!$A$1+100'); // should return 'true' for this example, // it is possible to change named expression const isAddable = hfInstance.isItPossibleToRemoveNamedExpression('prettyName'); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `expressionName` | string | an expression name, case-insensitive. | `scope?` | undefined | number | scope definition, `sheetId` for local scope or `undefined` for global scope | **Returns:** *boolean* ___ ### listNamedExpressions ▸ **listNamedExpressions**(`scope?`: undefined | number): *string[]* *Defined in [src/HyperFormula.ts:4256](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L4256)* Lists named expressions. - If scope parameter is provided, returns an array of expression names defined for this scope. - If scope parameter is undefined, returns an array of global expression names. For more information, see the [Named expressions guide](https://hyperformula.handsontable.com/docs/guide/named-expressions.md). **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if any of its basic type argument is of wrong type **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-nosheetwithiderror) if no sheet with given sheetId exists **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['42'], ['50'], ['60'], ]); // add two named expressions and one scoped hfInstance.addNamedExpression('prettyName', '=Sheet1!$A$1+100'); hfInstance.addNamedExpression('anotherPrettyName', '=Sheet1!$A$2+100'); hfInstance.addNamedExpression('alsoPrettyName', '=Sheet1!$A$3+100', 0); // list the expressions, should return: ['prettyName', 'anotherPrettyName'] for this example const listOfExpressions = hfInstance.listNamedExpressions(); // list the expressions, should return: ['alsoPrettyName'] for this example const listOfExpressions = hfInstance.listNamedExpressions(0); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `scope?` | undefined | number | scope of the named expressions, `sheetId` for local scope or `undefined` for global scope | **Returns:** *string[]* ___ ### removeNamedExpression ▸ **removeNamedExpression**(`expressionName`: string, `scope?`: undefined | number): *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* *Defined in [src/HyperFormula.ts:4207](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L4207)* Removes a named expression. Returns [an array of cells whose values changed as a result of this operation](https://hyperformula.handsontable.com/docs/guide/basic-operations.md#changes-array). Note that this method may trigger dependency graph recalculation. **`fires`** [namedExpressionRemoved](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md#namedexpressionremoved) after the expression was removed **`fires`** [valuesUpdated](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md#valuesupdated) if recalculation was triggered by this change **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if any of its basic type argument is of wrong type **`throws`** [NamedExpressionDoesNotExistError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-namedexpressiondoesnotexisterror) when the given expression does not exist. **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-nosheetwithiderror) if no sheet with given sheetId exists **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['42'], ]); // add a named expression hfInstance.addNamedExpression('prettyName', '=Sheet1!$A$1+100', 0); // remove the named expression const changes = hfInstance.removeNamedExpression('prettyName', 0); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `expressionName` | string | expression name, case-insensitive. | `scope?` | undefined | number | scope definition, `sheetId` for local scope or `undefined` for global scope | **Returns:** *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* ___ ## Helpers ### calculateFormula ▸ **calculateFormula**(`formulaString`: string, `sheetId`: number): *[CellValue](https://hyperformula.handsontable.com/docs/api/globals.md#cellvalue) | [CellValue](https://hyperformula.handsontable.com/docs/api/globals.md#cellvalue)[][]* *Defined in [src/HyperFormula.ts:4359](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L4359)* Calculates fire-and-forget formula, returns the calculated value. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if any of its basic type arguments is of wrong type. **`throws`** [NotAFormulaError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-notaformulaerror) when the provided string is not a valid formula (i.e., doesn't start with `=`). **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-nosheetwithiderror) when the provided `sheetID` doesn't exist. **`example`** ```js const hfInstance = HyperFormula.buildFromSheets({ Sheet1: [['58']], Sheet2: [['1', '2', '3'], ['4', '5', '6']] }); // returns the calculated formula's value // for this example, returns `68` const calculatedFormula = hfInstance.calculateFormula('=A1+10', 0); // for this example, returns [['11', '12', '13'], ['14', '15', '16']] const calculatedFormula = hfInstance.calculateFormula('=A1:B3+10', 1); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `formulaString` | string | A formula in a proper format, starting with `=`. | `sheetId` | number | The ID of a sheet in context of which the formula gets evaluated. | **Returns:** *[CellValue](https://hyperformula.handsontable.com/docs/api/globals.md#cellvalue) | [CellValue](https://hyperformula.handsontable.com/docs/api/globals.md#cellvalue)[][]* ___ ### getAvailableFunctions ▸ **getAvailableFunctions**(): *FunctionListEntry[]* *Defined in [src/HyperFormula.ts:4530](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L4530)* Returns metadata of all functions available in this instance for a function picker, with names translated according to the language set in this instance's configuration. Each entry contains the translated name, the language-independent canonical name, the category, and a short description. Entries are sorted alphabetically by their localized name, using the collation rules of the host environment, so the exact order of names that differ only by case or diacritics may vary between hosts. The list reflects this instance's own registry: the built-in functions and any custom (user-registered) functions, plus their aliases. An alias is listed under its own id, borrowing its target's category and description, with the target id exposed as `aliasOf`. Custom functions ship no catalogue entry, so their `category` is `'Custom'` and they carry no `shortDescription` — with one exception: the catalogue is keyed by function id, so a custom plugin registered *over* a built-in id inherits that id's entry and is listed with the built-in's category and description. That registry is a snapshot taken when the instance was built, not a live view of the global one: a function registered with [registerFunctionPlugin](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-registerfunctionplugin) or [registerFunction](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-registerfunction) afterwards reaches only the engines built later, so an engine kept across a late registration keeps reporting the set it was built with. A function with no translation entry for the configured language is omitted: the interpreter refuses to evaluate an untranslated id, so listing it would advertise a function that cannot be called — in practice, a custom plugin registered without translations for that language. A translation set to an empty string is not a missing entry: it falls back to the canonical id, so the function stays listed under its canonical name. **`example`** ```js const hfInstance = HyperFormula.buildEmpty(); // get the list of available functions, translated for the configured language const functions = hfInstance.getAvailableFunctions(); ``` **Returns:** *FunctionListEntry[]* ___ ### getCellDependents ▸ **getCellDependents**(`address`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | [SimpleCellRange](https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange.md)): *([SimpleCellRange](https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange.md) | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md))[]* *Defined in [src/HyperFormula.ts:3183](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L3183)* Returns all the out-neighbors in the [dependency graph](https://hyperformula.handsontable.com/docs/guide/dependency-graph.md) for a given cell address or range. Including: - All cells with formulas that contain the given cell address or range - Some of the ranges that contain the given cell address or range The exact result depends on the optimizations applied by the HyperFormula to the dependency graph, some of which are described in the section ["Optimizations for large ranges"](https://hyperformula.handsontable.com/docs/guide/dependency-graph.md#optimizations-for-large-ranges). The returned array includes also named expression dependents. They are represented as cell references with sheet ID `-1`. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if address is not [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) or [SimpleCellRange](https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange.md) **`throws`** [SheetsNotEqual](https://hyperformula.handsontable.com/docs/api/classes/sheetsnotequal.md) if range provided has distinct sheet numbers for start and end **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-nosheetwithiderror) when the given sheet ID does not exist **`example`** ```js const hfInstance = HyperFormula.buildFromArray( [ ['1', '=A1', '=A1+B1'] ] ); hfInstance.getCellDependents({ sheet: 0, col: 0, row: 0}); // returns [{ sheet: 0, col: 1, row: 0}, { sheet: 0, col: 2, row: 0}] ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `address` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | [SimpleCellRange](https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange.md) | object representation of an absolute address or range of addresses | **Returns:** *([SimpleCellRange](https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange.md) | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md))[]* ___ ### getCellPrecedents ▸ **getCellPrecedents**(`address`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | [SimpleCellRange](https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange.md)): *([SimpleCellRange](https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange.md) | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md))[]* *Defined in [src/HyperFormula.ts:3221](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L3221)* Returns all the in-neighbors in the [dependency graph](https://hyperformula.handsontable.com/docs/guide/dependency-graph.md) for a given cell address or range. In particular: - If the argument is a single cell, `getCellPrecedents()` returns all cells and ranges contained in that cell's formula. - If the argument is a range of cells, `getCellPrecedents()` returns some of the cell addresses and smaller ranges contained in that range (but not all of them). The exact result depends on the optimizations applied by the HyperFormula to the dependency graph, some of which are described in the section ["Optimizations for large ranges"](https://hyperformula.handsontable.com/docs/guide/dependency-graph.md#optimizations-for-large-ranges). The returned array includes also named expression precedents. They are represented as cell references with sheet ID `-1`. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if address is of wrong type **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-nosheetwithiderror) when the given sheet ID does not exist **`example`** ```js const hfInstance = HyperFormula.buildFromArray( [ ['1', '=A1', '=A1+B1'] ] ); hfInstance.getCellPrecedents({ sheet: 0, col: 2, row: 0}); // returns [{ sheet: 0, col: 0, row: 0}, { sheet: 0, col: 1, row: 0}] ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `address` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | [SimpleCellRange](https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange.md) | object representation of an absolute address or range of addresses | **Returns:** *([SimpleCellRange](https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange.md) | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md))[]* ___ ### getFunctionDetails ▸ **getFunctionDetails**(`canonicalName`: string): *FunctionDetails | undefined* *Defined in [src/HyperFormula.ts:4575](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L4575)* Returns the full metadata of a single function registered in this instance, with names translated according to the language set in this instance's configuration: the parameter list (with per-parameter optionality), the number of trailing parameters that repeat (`repeatLastArgs`), the category, a short description, and the documentation link (`documentationUrl`) and usage examples (`examples`) — every built-in authors both. Resolves both built-in and custom (user-registered) functions, as well as aliases. An alias reports its target's metadata (including examples, which spell the target's name) under the alias id, with the target id exposed as `aliasOf`. Returns `undefined` when the function id is unknown, not registered in this instance, or has no translation entry for the configured language (an untranslated id cannot be evaluated, so it is not described either, which keeps this method consistent with [getAvailableFunctions](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#getavailablefunctions)). For a custom function, `category` is `'Custom'`, there is no `shortDescription`, `documentationUrl` or `examples`, and parameters are reported positionally (`Arg1`, `Arg2`, ...). A custom plugin registered over a built-in id is the exception: the catalogue is keyed by function id, so it reports that built-in's authored metadata alongside the parameter list of the implementation actually registered. `canonicalName` is matched exactly, in two ways worth knowing: - It is **case-sensitive**, unlike formula syntax. `'SUMIF'` resolves; `'sumif'` and `'SumIf'` return `undefined`, even though `=sumif(...)` evaluates. - It must be the **canonical (English) id, never a localized name**. `localizedName` is output only: under `plPL` this method reports `localizedName: 'SUMA.JEŻELI'` for `'SUMIF'`, but passing `'SUMA.JEŻELI'` back in returns `undefined`. To look up an entry from [getAvailableFunctions](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#getavailablefunctions), pass its `canonicalName`. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if any of its basic type argument is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildEmpty(); // get the details of the SUMIF function, translated for the configured language const details = hfInstance.getFunctionDetails('SUMIF'); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `canonicalName` | string | the language-independent function id, e.g. `'SUMIF'` | **Returns:** *FunctionDetails | undefined* ___ ### getNamedExpressionsFromFormula ▸ **getNamedExpressionsFromFormula**(`formulaString`: string): *string[]* *Defined in [src/HyperFormula.ts:4390](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L4390)* Return a list of named expressions used by a formula. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if any of its basic type arguments is of wrong type. **`throws`** [NotAFormulaError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-notaformulaerror) when the provided string is not a valid formula (i.e., doesn't start with `=`). **`example`** ```js const hfInstance = HyperFormula.buildEmpty(); // returns a list of named expressions used by a formula // for this example, returns ['foo', 'bar'] const namedExpressions = hfInstance.getNamedExpressionsFromFormula('=foo+bar*2'); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `formulaString` | string | A formula in a proper format, starting with `=`. | **Returns:** *string[]* ___ ### normalizeFormula ▸ **normalizeFormula**(`formulaString`: string): *string* *Defined in [src/HyperFormula.ts:4323](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L4323)* Parses and then unparses a formula. Returns a normalized formula (e.g., restores the original capitalization of sheet names, function names, cell addresses, and named expressions). **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if any of its basic type argument is of wrong type **`throws`** [NotAFormulaError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-notaformulaerror) when the provided string is not a valid formula, i.e., does not start with "=" **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['42'], ['50'], ]); // returns '=Sheet1!$A$1+10' const normalizedFormula = hfInstance.normalizeFormula('=SHEET1!$A$1+10'); // returns '=3*$A$1' const normalizedFormula = hfInstance.normalizeFormula('=3*$a$1'); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `formulaString` | string | a formula in a proper format - it must start with "=" | **Returns:** *string* ___ ### numberToDate ▸ **numberToDate**(`inputNumber`: number): *[DateTime](https://hyperformula.handsontable.com/docs/api/globals.md#datetime)* *Defined in [src/HyperFormula.ts:4629](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L4629)* Interprets number as a date. For more information, see the [Date and time handling guide](https://hyperformula.handsontable.com/docs/guide/date-and-time-handling.md). **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if any of its basic type argument is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildEmpty(); // pass the number of days since nullDate // the method should return formatted date, for this example: // {year: 2020, month: 1, day: 15} const dateFromNumber = hfInstance.numberToDate(43845); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `inputNumber` | number | number of days since nullDate, should be non-negative, fractions are ignored. | **Returns:** *[DateTime](https://hyperformula.handsontable.com/docs/api/globals.md#datetime)* ___ ### numberToDateTime ▸ **numberToDateTime**(`inputNumber`: number): *[DateTime](https://hyperformula.handsontable.com/docs/api/globals.md#datetime)* *Defined in [src/HyperFormula.ts:4603](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L4603)* Interprets number as a date + time. For more information, see the [Date and time handling guide](https://hyperformula.handsontable.com/docs/guide/date-and-time-handling.md). **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if any of its basic type argument is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildEmpty(); // pass the number of days since nullDate // the method should return formatted date and time, for this example: // {year: 2020, month: 1, day: 15, hours: 2, minutes: 24, seconds: 0} const dateTimeFromNumber = hfInstance.numberToDateTime(43845.1); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `inputNumber` | number | number of days since nullDate, should be non-negative, fractions are interpreted as hours/minutes/seconds. | **Returns:** *[DateTime](https://hyperformula.handsontable.com/docs/api/globals.md#datetime)* ___ ### numberToTime ▸ **numberToTime**(`inputNumber`: number): *[DateTime](https://hyperformula.handsontable.com/docs/api/globals.md#datetime)* *Defined in [src/HyperFormula.ts:4654](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L4654)* Interprets number as a time (hours/minutes/seconds). For more information, see the [Date and time handling guide](https://hyperformula.handsontable.com/docs/guide/date-and-time-handling.md). **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if any of its basic type argument is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildEmpty(); // pass a number to be interpreted as a time // should return {hours: 26, minutes: 24} for this example const timeFromNumber = hfInstance.numberToTime(1.1); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `inputNumber` | number | time in 24h units. | **Returns:** *[DateTime](https://hyperformula.handsontable.com/docs/api/globals.md#datetime)* ___ ### simpleCellAddressFromString ▸ **simpleCellAddressFromString**(`cellAddress`: string, `contextSheetId`: number): *[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | undefined* *Defined in [src/HyperFormula.ts:3024](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L3024)* Computes the simple (absolute) address of a cell address, based on its string representation. - If a sheet name is present in the string representation but is not present in the engine, returns `undefined`. - If no sheet name is present in the string representation, uses `contextSheetId` as a sheet id in the returned address. For more information, see the [Cell references guide](https://hyperformula.handsontable.com/docs/guide/cell-references.md). **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if any of its basic type argument is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildEmpty(); hfInstance.addSheet('Sheet0'); //sheetId = 0 // returns { sheet: 42, col: 0, row: 0 } const simpleCellAddress = hfInstance.simpleCellAddressFromString('A1', 42); // returns { sheet: 0, col: 0, row: 5 } const simpleCellAddress = hfInstance.simpleCellAddressFromString('Sheet0!A6', 42); // returns { sheet: 0, col: 0, row: 5 } const simpleCellAddress = hfInstance.simpleCellAddressFromString('Sheet0!$A$6', 42); // returns 'undefined', as there's no 'Sheet 2' in the HyperFormula instance const simpleCellAddress = hfInstance.simpleCellAddressFromString('Sheet2!A6', 42); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `cellAddress` | string | string representation of cell address in A1 notation | `contextSheetId` | number | sheet id used to construct the simple address in case of missing sheet name in `cellAddress` argument | **Returns:** *[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | undefined* ___ ### simpleCellAddressToString ▸ **simpleCellAddressToString**(`cellAddress`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), `optionsOrContextSheetId`: object | number): *undefined | string* *Defined in [src/HyperFormula.ts:3093](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L3093)* Computes string representation of an absolute address in A1 notation. If `cellAddress.sheet` is not present in the engine, returns `undefined`. For more information, see the [Cell references guide](https://hyperformula.handsontable.com/docs/guide/cell-references.md). **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if its arguments are of wrong type **`example`** ```js const hfInstance = HyperFormula.buildEmpty(); hfInstance.addSheet('Sheet0'); //sheetId = 0 const addr = { sheet: 0, col: 1, row: 1 }; // should return 'B2' const A1Notation = hfInstance.simpleCellAddressToString(addr); // should return 'B2' const A1Notation = hfInstance.simpleCellAddressToString(addr, { includeSheetName: false }); // should return 'Sheet0!B2' const A1Notation = hfInstance.simpleCellAddressToString(addr, { includeSheetName: true }); // should return 'B2' as context sheet id is the same as addr.sheet const A1Notation = hfInstance.simpleCellAddressToString(addr, 0); // should return 'Sheet0!B2' as context sheet id is different from addr.sheet const A1Notation = hfInstance.simpleCellAddressToString(addr, 42); ``` **Parameters:** Name | Type | Default | Description | ------ | ------ | ------ | ------ | `cellAddress` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | - | object representation of an absolute address | `optionsOrContextSheetId` | object | number | {} | options object or number used as context sheet id to construct the string address (see examples) | **Returns:** *undefined | string* ___ ### simpleCellRangeFromString ▸ **simpleCellRangeFromString**(`cellRange`: string, `contextSheetId`: number): *[SimpleCellRange](https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange.md) | undefined* *Defined in [src/HyperFormula.ts:3053](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L3053)* Computes simple (absolute) address of a cell range based on its string representation. If sheet name is present in string representation but not present in the engine, returns `undefined`. For more information, see the [Cell references guide](https://hyperformula.handsontable.com/docs/guide/cell-references.md). **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-nosheetwithiderror) when the given sheet ID does not exist **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if any of its basic type argument is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildEmpty(); hfInstance.addSheet('Sheet0'); //sheetId = 0 // should return { start: { sheet: 0, col: 0, row: 0 }, end: { sheet: 0, col: 1, row: 0 } } const simpleCellAddress = hfInstance.simpleCellRangeFromString('A1:A2', 0); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `cellRange` | string | string representation of cell range in A1 notation | `contextSheetId` | number | sheet id used to construct the simple address in case of missing sheet name in `cellRange` argument | **Returns:** *[SimpleCellRange](https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange.md) | undefined* ___ ### simpleCellRangeToString ▸ **simpleCellRangeToString**(`cellRange`: [SimpleCellRange](https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange.md), `optionsOrContextSheetId`: object | number): *string | undefined* *Defined in [src/HyperFormula.ts:3146](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L3146)* Computes string representation of an absolute range in A1 notation. Returns `undefined` if: - `cellRange` is not a valid range, - `cellRange.start.sheet` and `cellRange.start.end` are different, - `cellRange.start.sheet` is not present in the engine, - `cellRange.start.end` is not present in the engine. Note: This method is useful only for cell ranges; does not work with column ranges and row ranges. For more information, see the [Cell references guide](https://hyperformula.handsontable.com/docs/guide/cell-references.md). **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if its arguments are of wrong type **`example`** ```js const hfInstance = HyperFormula.buildEmpty(); hfInstance.addSheet('Sheet0'); //sheetId = 0 const range = { start: { sheet: 0, col: 1, row: 1 }, end: { sheet: 0, col: 2, row: 1 } }; // should return 'B2:C2' const A1Notation = hfInstance.simpleCellRangeToString(range); // should return 'B2:C2' const A1Notation = hfInstance.simpleCellRangeToString(range, { includeSheetName: false }); // should return 'Sheet0!B2:C2' const A1Notation = hfInstance.simpleCellRangeToString(range, { includeSheetName: true }); // should return 'B2:C2' as context sheet id is the same as range.start.sheet and range.end.sheet const A1Notation = hfInstance.simpleCellRangeToString(range, 0); // should return 'Sheet0!B2:C2' as context sheet id is different from range.start.sheet and range.end.sheet const A1Notation = hfInstance.simpleCellRangeToString(range, 42); ``` **Parameters:** Name | Type | Default | Description | ------ | ------ | ------ | ------ | `cellRange` | [SimpleCellRange](https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange.md) | - | object representation of an absolute range | `optionsOrContextSheetId` | object | number | {} | options object or number used as context sheet id to construct the string address (see examples) | **Returns:** *string | undefined* ___ ### validateFormula ▸ **validateFormula**(`formulaString`: string): *boolean* *Defined in [src/HyperFormula.ts:4424](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L4424)* Validates the formula. If the provided string starts with "=" and is a parsable formula, the method returns `true`. The validation is purely grammatical: the method doesn't verify if the formula can be calculated or not. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if any of its basic type argument is of wrong type **`example`** ```js // checks if the given string is a valid formula, should return 'true' for this example const isFormula = hfInstance.validateFormula('=SUM(1, 2)'); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `formulaString` | string | a formula in a proper format - it must start with "=" | **Returns:** *boolean* ___ ## Clipboard ### clearClipboard ▸ **clearClipboard**(): *void* *Defined in [src/HyperFormula.ts:2494](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L2494)* Clears the clipboard content. **`example`** ```js // clears the clipboard, isClipboardEmpty() should return true if called afterwards hfInstance.clearClipboard(); ``` The usage of the internal clipboard is described thoroughly in the [Clipboard Operations guide](https://hyperformula.handsontable.com/docs/guide/clipboard-operations.md). **Returns:** *void* ___ ### copy ▸ **copy**(`source`: [SimpleCellRange](https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange.md)): *[CellValue](https://hyperformula.handsontable.com/docs/api/globals.md#cellvalue)[][]* *Defined in [src/HyperFormula.ts:2354](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L2354)* Stores a copy of the cell block in internal clipboard for the further paste. Returns the copied values for use in external clipboard. For more information, see the [Clipboard Operations guide](https://hyperformula.handsontable.com/docs/guide/clipboard-operations.md). **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-nosheetwithiderror) when the given sheet ID does not exist **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if source is of wrong type **`throws`** [SheetsNotEqual](https://hyperformula.handsontable.com/docs/api/classes/sheetsnotequal.md) if range provided has distinct sheet numbers for start and end **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['1', '2'], ]); // it copies [ [ 2 ] ] const clipboardContent = hfInstance.copy({ start: { sheet: 0, col: 1, row: 0 }, end: { sheet: 0, col: 1, row: 0 }, }); ``` The usage of the internal clipboard is described thoroughly in the [Clipboard Operations guide](https://hyperformula.handsontable.com/docs/guide/clipboard-operations.md). **Parameters:** Name | Type | Description | ------ | ------ | ------ | `source` | [SimpleCellRange](https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange.md) | rectangle range to copy | **Returns:** *[CellValue](https://hyperformula.handsontable.com/docs/api/globals.md#cellvalue)[][]* ___ ### cut ▸ **cut**(`source`: [SimpleCellRange](https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange.md)): *[CellValue](https://hyperformula.handsontable.com/docs/api/globals.md#cellvalue)[][]* *Defined in [src/HyperFormula.ts:2394](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L2394)* Stores information of the cell block in internal clipboard for further paste. Calling [paste](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#paste) right after this method is equivalent to call [moveCells](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#movecells). Almost any CRUD operation called after this method will abort the cut operation. Returns the cut values for use in external clipboard. For more information, see the [Clipboard Operations guide](https://hyperformula.handsontable.com/docs/guide/clipboard-operations.md). **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if source is of wrong type **`throws`** [SheetsNotEqual](https://hyperformula.handsontable.com/docs/api/classes/sheetsnotequal.md) if range provided has distinct sheet numbers for start and end **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-nosheetwithiderror) when the given sheet ID does not exist **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['1', '2'], ]); // returns the values that were cut: [ [ 1 ] ] const clipboardContent = hfInstance.cut({ start: { sheet: 0, col: 0, row: 0 }, end: { sheet: 0, col: 0, row: 0 }, }); ``` The usage of the internal clipboard is described thoroughly in the [Clipboard Operations guide](https://hyperformula.handsontable.com/docs/guide/clipboard-operations.md). **Parameters:** Name | Type | Description | ------ | ------ | ------ | `source` | [SimpleCellRange](https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange.md) | rectangle range to cut | **Returns:** *[CellValue](https://hyperformula.handsontable.com/docs/api/globals.md#cellvalue)[][]* ___ ### isClipboardEmpty ▸ **isClipboardEmpty**(): *boolean* *Defined in [src/HyperFormula.ts:2477](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L2477)* Returns information whether there is something in the clipboard. **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['1', '2'], ]); // copy desired content const clipboardContent = hfInstance.copy({ start: { sheet: 0, col: 1, row: 0 }, end: { sheet: 0, col: 1, row: 0 }, }); // returns 'false', there is content in the clipboard const isClipboardEmpty = hfInstance.isClipboardEmpty(); ``` The usage of the internal clipboard is described thoroughly in the [Clipboard Operations guide](https://hyperformula.handsontable.com/docs/guide/clipboard-operations.md). **Returns:** *boolean* ___ ### paste ▸ **paste**(`targetLeftCorner`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* *Defined in [src/HyperFormula.ts:2445](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L2445)* When called after [copy](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#copy) it pastes copied values and formulas into a cell block. When called after [cut](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#cut) it performs [moveCells](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#movecells) operation into the cell block. Does nothing if the clipboard is empty. For more information, see the [Clipboard Operations guide](https://hyperformula.handsontable.com/docs/guide/clipboard-operations.md). Returns [an array of cells whose values changed as a result of this operation](https://hyperformula.handsontable.com/docs/guide/basic-operations.md#changes-array). Note that this method may trigger dependency graph recalculation. **`fires`** [valuesUpdated](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md#valuesupdated) if recalculation was triggered by this change **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-nosheetwithiderror) when the given sheet ID does not exist **`throws`** [EvaluationSuspendedError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-evaluationsuspendederror) when the evaluation is suspended **`throws`** [SheetSizeLimitExceededError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-sheetsizelimitexceedederror) when performing this operation would result in sheet size limits exceeding **`throws`** [NothingToPasteError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-nothingtopasteerror) when clipboard is empty **`throws`** [TargetLocationHasArrayError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-targetlocationhasarrayerror) when the selected target area has array inside **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if targetLeftCorner is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['1', '2'], ]); // [ [ 2 ] ] was copied const clipboardContent = hfInstance.copy({ start: { sheet: 0, col: 1, row: 0 }, end: { sheet: 0, col: 1, row: 0 }, }); // returns a list of modified cells: their absolute addresses and new values const changes = hfInstance.paste({ sheet: 0, col: 1, row: 0 }); ``` The usage of the internal clipboard is described thoroughly in the [Clipboard Operations guide](https://hyperformula.handsontable.com/docs/guide/clipboard-operations.md). **Parameters:** Name | Type | Description | ------ | ------ | ------ | `targetLeftCorner` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | upper left address of the target cell block | **Returns:** *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* ___ ## Undo and Redo ### clearRedoStack ▸ **clearRedoStack**(): *void* *Defined in [src/HyperFormula.ts:2524](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L2524)* Clears the redo stack in undoRedo history. For more information, see the [Undo-Redo guide](https://hyperformula.handsontable.com/docs/guide/undo-redo.md). **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['1', '2', '3'], ]); // do an operation, for example remove columns hfInstance.removeColumns(0, [0, 1]); // undo the operation hfInstance.undo(); // redo the operation hfInstance.redo(); // clear the redo stack hfInstance.clearRedoStack(); ``` **Returns:** *void* ___ ### clearUndoStack ▸ **clearUndoStack**(): *void* *Defined in [src/HyperFormula.ts:2551](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L2551)* Clears the undo stack in undoRedo history. For more information, see the [Undo-Redo guide](https://hyperformula.handsontable.com/docs/guide/undo-redo.md). **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['1', '2', '3'], ]); // do an operation, for example remove columns hfInstance.removeColumns(0, [0, 1]); // undo the operation hfInstance.undo(); // clear the undo stack hfInstance.clearUndoStack(); ``` **Returns:** *void* ___ ### isThereSomethingToRedo ▸ **isThereSomethingToRedo**(): *boolean* *Defined in [src/HyperFormula.ts:1324](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L1324)* Checks if there is at least one operation that can be re-done. For more information, see the [Undo-Redo guide](https://hyperformula.handsontable.com/docs/guide/undo-redo.md). **`example`** ```js hfInstance.undo(); // when there is an action to redo, this returns 'true' const isSomethingToRedo = hfInstance.isThereSomethingToRedo(); ``` **Returns:** *boolean* ___ ### isThereSomethingToUndo ▸ **isThereSomethingToUndo**(): *boolean* *Defined in [src/HyperFormula.ts:1305](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L1305)* Checks if there is at least one operation that can be undone. For more information, see the [Undo-Redo guide](https://hyperformula.handsontable.com/docs/guide/undo-redo.md). **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['1'], ['2'], ['3'], ]); // perform CRUD operation, for example remove the second row hfInstance.removeRows(0, [1, 1]); // should return 'true', it is possible to undo last operation // which is removing rows in this example const isSomethingToUndo = hfInstance.isThereSomethingToUndo(); ``` **Returns:** *boolean* ___ ### redo ▸ **redo**(): *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* *Defined in [src/HyperFormula.ts:1277](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L1277)* Re-do recently undone operation. For more information, see the [Undo-Redo guide](https://hyperformula.handsontable.com/docs/guide/undo-redo.md). Returns [an array of cells whose values changed as a result of this operation](https://hyperformula.handsontable.com/docs/guide/basic-operations.md#changes-array). Note that this method may trigger dependency graph recalculation. **`fires`** [valuesUpdated](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md#valuesupdated) if recalculation was triggered by this change **`throws`** [NoOperationToRedoError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-nooperationtoredoerror) when there is no operation running that can be re-done **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['1'], ['2'], ['3'], ]); // perform CRUD operation, for example remove the second row hfInstance.removeRows(0, [1, 1]); // undo the operation, it should return previous values: [['1'], ['2'], ['3']] hfInstance.undo(); // do a redo, it should return the values after removing the second row: [['1'], ['3']] const changes = hfInstance.redo(); ``` **Returns:** *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* ___ ### undo ▸ **undo**(): *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* *Defined in [src/HyperFormula.ts:1239](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L1239)* Undo the previous operation. For more information, see the [Undo-Redo guide](https://hyperformula.handsontable.com/docs/guide/undo-redo.md). Returns [an array of cells whose values changed as a result of this operation](https://hyperformula.handsontable.com/docs/guide/basic-operations.md#changes-array). Note that this method may trigger dependency graph recalculation. **`fires`** [valuesUpdated](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md#valuesupdated) if recalculation was triggered by this change **`throws`** [NoOperationToUndoError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-nooperationtoundoerror) when there is no operation running that can be undone **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['1', '2'], ['3', ''], ]); // perform CRUD operation, for example remove the second row hfInstance.removeRows(0, [1, 1]); // undo the operation, it should return the changes const changes = hfInstance.undo(); ``` **Returns:** *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* ___ ## Batch ### batch ▸ **batch**(`batchOperations`: function): *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* *Defined in [src/HyperFormula.ts:3714](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L3714)* Runs the provided callback as a single [batch operation](https://hyperformula.handsontable.com/docs/guide/batch-operations.md) and returns the changed cells. Returns [an array of cells whose values changed as a result of all batched operations](https://hyperformula.handsontable.com/docs/guide/basic-operations.md#changes-array). Note that this method may trigger dependency graph recalculation. **`fires`** [valuesUpdated](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md#valuesupdated) if recalculation was triggered by this change **`fires`** [evaluationSuspended](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md#evaluationsuspended) always **`fires`** [evaluationResumed](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md#evaluationresumed) after the recomputation of necessary values **`example`** ```js const hfInstance = HyperFormula.buildFromSheets({ MySheet1: [ ['1'] ], MySheet2: [ ['10'] ], }); // multiple operations in a single callback will trigger evaluation only once // and only one set of changes is returned as a combined result of all // the operations that were triggered within the callback const changes = hfInstance.batch(() => { hfInstance.setCellContents({ col: 3, row: 0, sheet: 0 }, [['=B1']]); hfInstance.setCellContents({ col: 4, row: 0, sheet: 0 }, [['=A1']]); }); ``` **Parameters:** ▪ **batchOperations**: *function* a function with operations to be performed ▸ (): *void* **Returns:** *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* ___ ### isEvaluationSuspended ▸ **isEvaluationSuspended**(): *boolean* *Defined in [src/HyperFormula.ts:3823](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L3823)* Checks if the dependency graph recalculation process is [suspended](https://hyperformula.handsontable.com/docs/guide/batch-operations.md) or not. **`example`** ```js const hfInstance = HyperFormula.buildEmpty(); // suspend the evaluation hfInstance.suspendEvaluation(); // between suspendEvaluation() and resumeEvaluation() // or inside batch() callback it will return 'true', otherwise 'false' const isEvaluationSuspended = hfInstance.isEvaluationSuspended(); const changes = hfInstance.resumeEvaluation(); ``` **Returns:** *boolean* ___ ### resumeEvaluation ▸ **resumeEvaluation**(): *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* *Defined in [src/HyperFormula.ts:3797](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L3797)* Resumes the dependency graph recalculation that was [suspended](https://hyperformula.handsontable.com/docs/guide/batch-operations.md) with [suspendEvaluation](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#suspendevaluation). It also triggers the recalculation and returns [an array of cells whose values changed as a result of all batched operations](https://hyperformula.handsontable.com/docs/guide/basic-operations.md#changes-array). **`fires`** [valuesUpdated](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md#valuesupdated) if recalculation was triggered by this change **`fires`** [evaluationResumed](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md#evaluationresumed) after the recomputation of necessary values **`example`** ```js const hfInstance = HyperFormula.buildFromSheets({ MySheet1: [ ['1'] ], MySheet2: [ ['10'] ], }); // similar to batch() but operations are not within a callback, // one method suspends the recalculation // the second will resume calculations and return the changes // first, suspend the evaluation hfInstance.suspendEvaluation(); // perform operations hfInstance.setCellContents({ col: 3, row: 0, sheet: 0 }, [['=B1']]); hfInstance.setSheetContent(1, [['50'], ['60']]); // resume the evaluation const changes = hfInstance.resumeEvaluation(); ``` **Returns:** *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* ___ ### suspendEvaluation ▸ **suspendEvaluation**(): *void* *Defined in [src/HyperFormula.ts:3761](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L3761)* Suspends the dependency graph recalculation to start a [batch operation](https://hyperformula.handsontable.com/docs/guide/batch-operations.md). It allows optimizing the performance. With this method, multiple CRUD operations can be done without triggering recalculation after every operation. Suspending evaluation should result in an overall faster calculation compared to recalculating after each operation separately. To resume the evaluation use [resumeEvaluation](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#resumeevaluation). **`fires`** [evaluationSuspended](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md#evaluationsuspended) always **`example`** ```js const hfInstance = HyperFormula.buildFromSheets({ MySheet1: [ ['1'] ], MySheet2: [ ['10'] ], }); // similar to batch() but operations are not within a callback, // one method suspends the recalculation // the second will resume calculations and return the changes // suspend the evaluation with this method hfInstance.suspendEvaluation(); // perform operations hfInstance.setCellContents({ col: 3, row: 0, sheet: 0 }, [['=B1']]); hfInstance.setSheetContent(1, [['50'], ['60']]); // use resumeEvaluation to resume const changes = hfInstance.resumeEvaluation(); ``` **Returns:** *void* ___ ## Events ### off ▸ **off**‹**Event**›(`event`: Event, `listener`: Listeners[Event]): *void* *Defined in [src/HyperFormula.ts:4740](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L4740)* Unsubscribes from an event or from all events. For the list of all available events, see [Listeners](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md). **`example`** ```js const hfInstance = HyperFormula.buildEmpty(); // define a simple function to be called upon emitting an event const handler = ( ) => { console.log('baz') } // subscribe to a 'sheetAdded', pass the handler hfInstance.on('sheetAdded', handler); // add a sheet to trigger an event, // console should print 'baz' each time a sheet is added hfInstance.addSheet('FooBar'); // unsubscribe from a 'sheetAdded' hfInstance.off('sheetAdded', handler); // add a sheet, the console should not print anything hfInstance.addSheet('FooBaz'); ``` **Type parameters:** ▪ **Event**: *keyof Listeners* **Parameters:** Name | Type | Description | ------ | ------ | ------ | `event` | Event | the name of the event to subscribe to | `listener` | Listeners[Event] | to be called when event is emitted | **Returns:** *void* ___ ### on ▸ **on**‹**Event**›(`event`: Event, `listener`: Listeners[Event]): *void* *Defined in [src/HyperFormula.ts:4680](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L4680)* Subscribes to an event. For the list of all available events, see [Listeners](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md). **`example`** ```js const hfInstance = HyperFormula.buildEmpty(); // subscribe to a 'sheetAdded', pass a simple handler hfInstance.on('sheetAdded', ( ) => { console.log('foo') }); // add a sheet to trigger an event, // console should print 'foo' after each time sheet is added in this example hfInstance.addSheet('FooBar'); ``` **Type parameters:** ▪ **Event**: *keyof Listeners* **Parameters:** Name | Type | Description | ------ | ------ | ------ | `event` | Event | the name of the event to subscribe to | `listener` | Listeners[Event] | to be called when event is emitted | **Returns:** *void* ___ ### once ▸ **once**‹**Event**›(`event`: Event, `listener`: Listeners[Event]): *void* *Defined in [src/HyperFormula.ts:4706](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L4706)* Subscribes to an event once. For the list of all available events, see [Listeners](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md). **`example`** ```js const hfInstance = HyperFormula.buildEmpty(); // subscribe to a 'sheetAdded', pass a simple handler hfInstance.once('sheetAdded', ( ) => { console.log('foo') }); // call addSheet twice, // console should print 'foo' only once when the sheet is added in this example hfInstance.addSheet('FooBar'); hfInstance.addSheet('FooBaz'); ``` **Type parameters:** ▪ **Event**: *keyof Listeners* **Parameters:** Name | Type | Description | ------ | ------ | ------ | `event` | Event | the name of the event to subscribe to | `listener` | Listeners[Event] | to be called when event is emitted | **Returns:** *void* ___ ## Custom Functions ### getAllFunctionPlugins ▸ **getAllFunctionPlugins**(): *FunctionPluginDefinition[]* *Defined in [src/HyperFormula.ts:4493](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L4493)* Returns classes of all plugins registered in this instance of HyperFormula **`example`** ```js const hfInstance = HyperFormula.buildEmpty(); // return classes of all plugins registered, assign to a variable const allNames = hfInstance.getAllFunctionPlugins(); ``` **Returns:** *FunctionPluginDefinition[]* ___ ### getFunctionPlugin ▸ **getFunctionPlugin**(`functionId`: string): *FunctionPluginDefinition | undefined* *Defined in [src/HyperFormula.ts:4475](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L4475)* Returns class of a plugin used by function with given id For more information, see the [Custom functions guide](https://hyperformula.handsontable.com/docs/guide/custom-functions.md). **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if any of its basic type argument is of wrong type **`example`** ```js // import your own plugin import { MyExamplePlugin } from './file_with_your_plugin'; const hfInstance = HyperFormula.buildEmpty(); // register a plugin HyperFormula.registerFunctionPlugin(MyExamplePlugin); // get the plugin const myPlugin = hfInstance.getFunctionPlugin('EXAMPLE'); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `functionId` | string | id of a function, e.g., 'SUMIF' | **Returns:** *FunctionPluginDefinition | undefined* ___ ### getRegisteredFunctionNames ▸ **getRegisteredFunctionNames**(): *string[]* *Defined in [src/HyperFormula.ts:4445](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L4445)* Returns translated names of all functions registered in this instance of HyperFormula according to the language set in the configuration **`example`** ```js const hfInstance = HyperFormula.buildEmpty(); // return translated names of all functions, assign to a variable const allNames = hfInstance.getRegisteredFunctionNames(); ``` **Returns:** *string[]* ___ ## Static Methods ### getAllFunctionPlugins ▸ **getAllFunctionPlugins**(): *FunctionPluginDefinition[]* *Defined in [src/HyperFormula.ts:652](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L652)* Returns classes of all plugins registered in HyperFormula. **`example`** ```js // return classes of all plugins const allClasses = HyperFormula.getAllFunctionPlugins(); ``` **Returns:** *FunctionPluginDefinition[]* ___ ### getFunctionPlugin ▸ **getFunctionPlugin**(`functionId`: string): *FunctionPluginDefinition | undefined* *Defined in [src/HyperFormula.ts:636](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L636)* Returns class of a plugin used by function with given id For more information, see the [Custom functions guide](https://hyperformula.handsontable.com/docs/guide/custom-functions.md). **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if any of its basic type argument is of wrong type **`example`** ```js // import your own plugin import { MyExamplePlugin } from './file_with_your_plugin'; // register a plugin HyperFormula.registerFunctionPlugin(MyExamplePlugin); // return the class of a given plugin const myFunctionClass = HyperFormula.getFunctionPlugin('EXAMPLE'); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `functionId` | string | id of a function, e.g., 'SUMIF' | **Returns:** *FunctionPluginDefinition | undefined* ___ ### getLanguage ▸ **getLanguage**(`languageCode`: string): *TranslationPackage* *Defined in [src/HyperFormula.ts:375](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L375)* Returns registered language from its code string. For more information, see the [Localizing functions guide](https://hyperformula.handsontable.com/docs/guide/localizing-functions.md). **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if any of its basic type argument is of wrong type **`throws`** [LanguageNotRegisteredError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-languagenotregisterederror) when trying to retrieve not registered language **`example`** ```js // return registered language const language = HyperFormula.getLanguage('enGB'); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `languageCode` | string | code string of the translation package | **Returns:** *TranslationPackage* ___ ### getRegisteredFunctionNames ▸ **getRegisteredFunctionNames**(`code`: string): *string[]* *Defined in [src/HyperFormula.ts:606](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L606)* Returns translated names of all registered functions for a given language **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if any of its basic type argument is of wrong type **`example`** ```js // return a list of function names registered for enGB const allNames = HyperFormula.getRegisteredFunctionNames('enGB'); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `code` | string | language code | **Returns:** *string[]* ___ ### getRegisteredLanguagesCodes ▸ **getRegisteredLanguagesCodes**(): *string[]* *Defined in [src/HyperFormula.ts:456](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L456)* Returns all registered languages codes. **`example`** ```js // should return all registered language codes: ['enGB', 'plPL'] const registeredLanguages = HyperFormula.getRegisteredLanguagesCodes(); ``` **Returns:** *string[]* ___ ### registerFunction ▸ **registerFunction**(`functionId`: string, `plugin`: FunctionPluginDefinition, `translations?`: FunctionTranslationsPackage): *void* *Defined in [src/HyperFormula.ts:540](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L540)* Registers a function with a given id if such exists in a plugin. For more information, see the [Custom functions guide](https://hyperformula.handsontable.com/docs/guide/custom-functions.md). Note: This method does not affect the existing HyperFormula instances. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if any of its basic type argument is of wrong type **`throws`** [FunctionPluginValidationError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-functionpluginvalidationerror) when function with a given id does not exist in plugin or plugin class definition is not consistent with metadata **`throws`** [ProtectedFunctionTranslationError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-protectedfunctiontranslationerror) when trying to register translation for protected function **`example`** ```js // import your own plugin import { MyExamplePlugin } from './file_with_your_plugin'; // register a function HyperFormula.registerFunction('EXAMPLE', MyExamplePlugin); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `functionId` | string | function id, e.g., 'SUMIF' | `plugin` | FunctionPluginDefinition | plugin class | `translations?` | FunctionTranslationsPackage | translations for the function name | **Returns:** *void* ___ ### registerFunctionPlugin ▸ **registerFunctionPlugin**(`plugin`: FunctionPluginDefinition, `translations?`: FunctionTranslationsPackage): *void* *Defined in [src/HyperFormula.ts:486](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L486)* Registers all functions in a given plugin with optional translations. For more information, see the [Custom functions guide](https://hyperformula.handsontable.com/docs/guide/custom-functions.md). Note: FunctionPlugins must be registered prior to the creation of HyperFormula instances in which they are used. HyperFormula instances created prior to the registration of a FunctionPlugin are unable to access the FunctionPlugin. Registering a FunctionPlugin with [[custom-functions]] requires the translations parameter. **`throws`** [FunctionPluginValidationError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-functionpluginvalidationerror) when plugin class definition is not consistent with metadata **`throws`** [ProtectedFunctionTranslationError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-protectedfunctiontranslationerror) when trying to register translation for protected function **`example`** ```js // import your own plugin import { MyExamplePlugin } from './file_with_your_plugin'; // register the plugin HyperFormula.registerFunctionPlugin(MyExamplePlugin); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `plugin` | FunctionPluginDefinition | plugin class | `translations?` | FunctionTranslationsPackage | optional package of function names translations | **Returns:** *void* ___ ### registerLanguage ▸ **registerLanguage**(`languageCode`: string, `languagePackage`: RawTranslationPackage): *void* *Defined in [src/HyperFormula.ts:406](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L406)* Registers language under given code string. For more information, see the [Localizing functions guide](https://hyperformula.handsontable.com/docs/guide/localizing-functions.md). **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if any of its basic type argument is of wrong type **`throws`** [ProtectedFunctionTranslationError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-protectedfunctiontranslationerror) when trying to register translation for protected function **`throws`** [LanguageAlreadyRegisteredError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-languagealreadyregisterederror) when given language is already registered **`example`** ```js // return registered language HyperFormula.registerLanguage('enUS', enUS); const engine = HyperFormula.buildEmpty({language: 'enUS'}); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `languageCode` | string | code string of the translation package | `languagePackage` | RawTranslationPackage | translation package to be registered | **Returns:** *void* ___ ### unregisterAllFunctions ▸ **unregisterAllFunctions**(): *void* *Defined in [src/HyperFormula.ts:587](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L587)* Clears function registry. Note: This method does not affect the existing HyperFormula instances. **`example`** ```js HyperFormula.unregisterAllFunctions(); ``` **Returns:** *void* ___ ### unregisterFunction ▸ **unregisterFunction**(`functionId`: string): *void* *Defined in [src/HyperFormula.ts:570](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L570)* Unregisters a function with a given id. For more information, see the [Custom functions guide](https://hyperformula.handsontable.com/docs/guide/custom-functions.md). Note: This method does not affect the existing HyperFormula instances. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if any of its basic type argument is of wrong type **`example`** ```js // import your own plugin import { MyExamplePlugin } from './file_with_your_plugin'; // register a function HyperFormula.registerFunction('EXAMPLE', MyExamplePlugin); // unregister a function HyperFormula.unregisterFunction('EXAMPLE'); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `functionId` | string | function id, e.g., 'SUMIF' | **Returns:** *void* ___ ### unregisterFunctionPlugin ▸ **unregisterFunctionPlugin**(`plugin`: FunctionPluginDefinition): *void* *Defined in [src/HyperFormula.ts:510](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L510)* Unregisters all functions defined in given plugin. For more information, see the [Custom functions guide](https://hyperformula.handsontable.com/docs/guide/custom-functions.md). Note: This method does not affect the existing HyperFormula instances. **`example`** ```js // get the class of a plugin const registeredPluginClass = HyperFormula.getFunctionPlugin('EXAMPLE'); // unregister all functions defined in a plugin of ID 'EXAMPLE' HyperFormula.unregisterFunctionPlugin(registeredPluginClass); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `plugin` | FunctionPluginDefinition | plugin class | **Returns:** *void* ___ ### unregisterLanguage ▸ **unregisterLanguage**(`languageCode`: string): *void* *Defined in [src/HyperFormula.ts:436](https://github.com/handsontable/hyperformula/blob/a18429c/src/HyperFormula.ts#L436)* Unregisters language that is registered under given code string. For more information, see the [Localizing functions guide](https://hyperformula.handsontable.com/docs/guide/localizing-functions.md). **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if any of its basic type argument is of wrong type **`throws`** [LanguageNotRegisteredError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-languagenotregisterederror) when given language is not registered **`example`** ```js // register the language for the instance HyperFormula.registerLanguage('plPL', plPL); // unregister plPL HyperFormula.unregisterLanguage('plPL'); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `languageCode` | string | code string of the translation package | **Returns:** *void* --- ## MissingTranslationError URL: https://hyperformula.handsontable.com/docs/api/classes/missingtranslationerror # MissingTranslationError Error thrown when translation is missing in translation package. ## Constructors ### constructor \+ **new MissingTranslationError**(`key`: string): *[MissingTranslationError](https://hyperformula.handsontable.com/docs/api/classes/missingtranslationerror.md)* *Defined in [src/errors.ts:266](https://github.com/handsontable/hyperformula/blob/a18429c/src/errors.ts#L266)* **Parameters:** Name | Type | ------ | ------ | `key` | string | **Returns:** *[MissingTranslationError](https://hyperformula.handsontable.com/docs/api/classes/missingtranslationerror.md)* ## Properties ### message • **message**: *string* ___ ### name • **name**: *string* ___ ### stack • **stack**? : *undefined | string* ___ ### Error ▪ **Error**: *ErrorConstructor* --- ## MoveRowsUndoEntry URL: https://hyperformula.handsontable.com/docs/api/classes/moverowsundoentry # MoveRowsUndoEntry ## Constructors ### constructor \+ **new MoveRowsUndoEntry**(`sheet`: number, `startRow`: number, `numberOfRows`: number, `targetRow`: number, `version`: number): *[MoveRowsUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/moverowsundoentry.md)* *Defined in [src/UndoRedo.ts:166](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L166)* **Parameters:** Name | Type | ------ | ------ | `sheet` | number | `startRow` | number | `numberOfRows` | number | `targetRow` | number | `version` | number | **Returns:** *[MoveRowsUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/moverowsundoentry.md)* ## Properties ### numberOfRows • **numberOfRows**: *number* *Defined in [src/UndoRedo.ts:171](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L171)* ___ ### sheet • **sheet**: *number* *Defined in [src/UndoRedo.ts:169](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L169)* ___ ### startRow • **startRow**: *number* *Defined in [src/UndoRedo.ts:170](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L170)* ___ ### targetRow • **targetRow**: *number* *Defined in [src/UndoRedo.ts:172](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L172)* ___ ### undoEnd • **undoEnd**: *number* *Defined in [src/UndoRedo.ts:166](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L166)* ___ ### undoStart • **undoStart**: *number* *Defined in [src/UndoRedo.ts:165](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L165)* ___ ### version • **version**: *number* *Defined in [src/UndoRedo.ts:173](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L173)* ## Methods ### doRedo ▸ **doRedo**(`undoRedo`: [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md)): *void* *Defined in [src/UndoRedo.ts:184](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L184)* **Parameters:** Name | Type | ------ | ------ | `undoRedo` | [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md) | **Returns:** *void* ___ ### doUndo ▸ **doUndo**(`undoRedo`: [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md)): *void* *Defined in [src/UndoRedo.ts:180](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L180)* **Parameters:** Name | Type | ------ | ------ | `undoRedo` | [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md) | **Returns:** *void* ___ ### getReferencedOldDataVersions ▸ **getReferencedOldDataVersions**(): *number[]* *Defined in [src/UndoRedo.ts:188](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L188)* **Returns:** *number[]* --- ## MoveCellsUndoEntry URL: https://hyperformula.handsontable.com/docs/api/classes/movecellsundoentry # MoveCellsUndoEntry ## Constructors ### constructor \+ **new MoveCellsUndoEntry**(`sourceLeftCorner`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), `width`: number, `height`: number, `destinationLeftCorner`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), `overwrittenCellsData`: [[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), [ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell)][], `addedGlobalNamedExpressions`: string[], `version`: number): *[MoveCellsUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/movecellsundoentry.md)* *Defined in [src/UndoRedo.ts:68](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L68)* **Parameters:** Name | Type | ------ | ------ | `sourceLeftCorner` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | `width` | number | `height` | number | `destinationLeftCorner` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | `overwrittenCellsData` | [[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), [ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell)][] | `addedGlobalNamedExpressions` | string[] | `version` | number | **Returns:** *[MoveCellsUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/movecellsundoentry.md)* ## Properties ### addedGlobalNamedExpressions • **addedGlobalNamedExpressions**: *string[]* *Defined in [src/UndoRedo.ts:75](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L75)* ___ ### destinationLeftCorner • **destinationLeftCorner**: *[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)* *Defined in [src/UndoRedo.ts:73](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L73)* ___ ### height • **height**: *number* *Defined in [src/UndoRedo.ts:72](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L72)* ___ ### overwrittenCellsData • **overwrittenCellsData**: *[[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), [ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell)][]* *Defined in [src/UndoRedo.ts:74](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L74)* ___ ### sourceLeftCorner • **sourceLeftCorner**: *[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)* *Defined in [src/UndoRedo.ts:70](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L70)* ___ ### version • **version**: *number* *Defined in [src/UndoRedo.ts:76](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L76)* ___ ### width • **width**: *number* *Defined in [src/UndoRedo.ts:71](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L71)* ## Methods ### doRedo ▸ **doRedo**(`undoRedo`: [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md)): *void* *Defined in [src/UndoRedo.ts:85](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L85)* **Parameters:** Name | Type | ------ | ------ | `undoRedo` | [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md) | **Returns:** *void* ___ ### doUndo ▸ **doUndo**(`undoRedo`: [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md)): *void* *Defined in [src/UndoRedo.ts:81](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L81)* **Parameters:** Name | Type | ------ | ------ | `undoRedo` | [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md) | **Returns:** *void* ___ ### getReferencedOldDataVersions ▸ **getReferencedOldDataVersions**(): *number[]* *Defined in [src/UndoRedo.ts:89](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L89)* **Returns:** *number[]* --- ## NamedExpressionDoesNotExistError URL: https://hyperformula.handsontable.com/docs/api/classes/namedexpressiondoesnotexisterror # NamedExpressionDoesNotExistError Error thrown when the given named expression does not exist. ## Constructors ### constructor \+ **new NamedExpressionDoesNotExistError**(`expressionName`: string): *[NamedExpressionDoesNotExistError](https://hyperformula.handsontable.com/docs/api/classes/namedexpressiondoesnotexisterror.md)* *Defined in [src/errors.ts:101](https://github.com/handsontable/hyperformula/blob/a18429c/src/errors.ts#L101)* **Parameters:** Name | Type | ------ | ------ | `expressionName` | string | **Returns:** *[NamedExpressionDoesNotExistError](https://hyperformula.handsontable.com/docs/api/classes/namedexpressiondoesnotexisterror.md)* ## Properties ### message • **message**: *string* ___ ### name • **name**: *string* ___ ### stack • **stack**? : *undefined | string* ___ ### Error ▪ **Error**: *ErrorConstructor* --- ## MoveColumnsUndoEntry URL: https://hyperformula.handsontable.com/docs/api/classes/movecolumnsundoentry # MoveColumnsUndoEntry ## Constructors ### constructor \+ **new MoveColumnsUndoEntry**(`sheet`: number, `startColumn`: number, `numberOfColumns`: number, `targetColumn`: number, `version`: number): *[MoveColumnsUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/movecolumnsundoentry.md)* *Defined in [src/UndoRedo.ts:195](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L195)* **Parameters:** Name | Type | ------ | ------ | `sheet` | number | `startColumn` | number | `numberOfColumns` | number | `targetColumn` | number | `version` | number | **Returns:** *[MoveColumnsUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/movecolumnsundoentry.md)* ## Properties ### numberOfColumns • **numberOfColumns**: *number* *Defined in [src/UndoRedo.ts:200](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L200)* ___ ### sheet • **sheet**: *number* *Defined in [src/UndoRedo.ts:198](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L198)* ___ ### startColumn • **startColumn**: *number* *Defined in [src/UndoRedo.ts:199](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L199)* ___ ### targetColumn • **targetColumn**: *number* *Defined in [src/UndoRedo.ts:201](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L201)* ___ ### undoEnd • **undoEnd**: *number* *Defined in [src/UndoRedo.ts:195](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L195)* ___ ### undoStart • **undoStart**: *number* *Defined in [src/UndoRedo.ts:194](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L194)* ___ ### version • **version**: *number* *Defined in [src/UndoRedo.ts:202](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L202)* ## Methods ### doRedo ▸ **doRedo**(`undoRedo`: [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md)): *void* *Defined in [src/UndoRedo.ts:213](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L213)* **Parameters:** Name | Type | ------ | ------ | `undoRedo` | [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md) | **Returns:** *void* ___ ### doUndo ▸ **doUndo**(`undoRedo`: [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md)): *void* *Defined in [src/UndoRedo.ts:209](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L209)* **Parameters:** Name | Type | ------ | ------ | `undoRedo` | [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md) | **Returns:** *void* ___ ### getReferencedOldDataVersions ▸ **getReferencedOldDataVersions**(): *number[]* *Defined in [src/UndoRedo.ts:217](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L217)* **Returns:** *number[]* --- ## NamedExpressionNameIsInvalidError URL: https://hyperformula.handsontable.com/docs/api/classes/namedexpressionnameisinvaliderror # NamedExpressionNameIsInvalidError Error thrown when the name given for the named expression is invalid. ## Constructors ### constructor \+ **new NamedExpressionNameIsInvalidError**(`expressionName`: string): *[NamedExpressionNameIsInvalidError](https://hyperformula.handsontable.com/docs/api/classes/namedexpressionnameisinvaliderror.md)* *Defined in [src/errors.ts:92](https://github.com/handsontable/hyperformula/blob/a18429c/src/errors.ts#L92)* **Parameters:** Name | Type | ------ | ------ | `expressionName` | string | **Returns:** *[NamedExpressionNameIsInvalidError](https://hyperformula.handsontable.com/docs/api/classes/namedexpressionnameisinvaliderror.md)* ## Properties ### message • **message**: *string* ___ ### name • **name**: *string* ___ ### stack • **stack**? : *undefined | string* ___ ### Error ▪ **Error**: *ErrorConstructor* --- ## NamedExpressions URL: https://hyperformula.handsontable.com/docs/api/classes/namedexpressions # NamedExpressions ## Properties ### SHEET_FOR_WORKBOOK_EXPRESSIONS ▪ **SHEET_FOR_WORKBOOK_EXPRESSIONS**: *number* = -1 *Defined in [src/NamedExpressions.ts:127](https://github.com/handsontable/hyperformula/blob/a18429c/src/NamedExpressions.ts#L127)* ## Methods ### addNamedExpression ▸ **addNamedExpression**(`expressionName`: string, `sheetId?`: undefined | number, `options?`: [NamedExpressionOptions](https://hyperformula.handsontable.com/docs/api/globals.md#namedexpressionoptions)): *[InternalNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/internalnamedexpression.md)* *Defined in [src/NamedExpressions.ts:189](https://github.com/handsontable/hyperformula/blob/a18429c/src/NamedExpressions.ts#L189)* **Parameters:** Name | Type | ------ | ------ | `expressionName` | string | `sheetId?` | undefined | number | `options?` | [NamedExpressionOptions](https://hyperformula.handsontable.com/docs/api/globals.md#namedexpressionoptions) | **Returns:** *[InternalNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/internalnamedexpression.md)* ___ ### getAllNamedExpressions ▸ **getAllNamedExpressions**(): *object[]* *Defined in [src/NamedExpressions.ts:251](https://github.com/handsontable/hyperformula/blob/a18429c/src/NamedExpressions.ts#L251)* **Returns:** *object[]* ___ ### getAllNamedExpressionsForScope ▸ **getAllNamedExpressionsForScope**(`scope?`: undefined | number): *[InternalNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/internalnamedexpression.md)[]* *Defined in [src/NamedExpressions.ts:273](https://github.com/handsontable/hyperformula/blob/a18429c/src/NamedExpressions.ts#L273)* **Parameters:** Name | Type | ------ | ------ | `scope?` | undefined | number | **Returns:** *[InternalNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/internalnamedexpression.md)[]* ___ ### getAllNamedExpressionsNames ▸ **getAllNamedExpressionsNames**(): *string[]* *Defined in [src/NamedExpressions.ts:247](https://github.com/handsontable/hyperformula/blob/a18429c/src/NamedExpressions.ts#L247)* **Returns:** *string[]* ___ ### getAllNamedExpressionsNamesInScope ▸ **getAllNamedExpressionsNamesInScope**(`sheetId?`: undefined | number): *string[]* *Defined in [src/NamedExpressions.ts:243](https://github.com/handsontable/hyperformula/blob/a18429c/src/NamedExpressions.ts#L243)* **Parameters:** Name | Type | ------ | ------ | `sheetId?` | undefined | number | **Returns:** *string[]* ___ ### isExpressionInScope ▸ **isExpressionInScope**(`expressionName`: string, `sheetId`: number): *boolean* *Defined in [src/NamedExpressions.ts:162](https://github.com/handsontable/hyperformula/blob/a18429c/src/NamedExpressions.ts#L162)* **Parameters:** Name | Type | ------ | ------ | `expressionName` | string | `sheetId` | number | **Returns:** *boolean* ___ ### isNameAvailable ▸ **isNameAvailable**(`expressionName`: string, `sheetId?`: undefined | number): *boolean* *Defined in [src/NamedExpressions.ts:133](https://github.com/handsontable/hyperformula/blob/a18429c/src/NamedExpressions.ts#L133)* **Parameters:** Name | Type | ------ | ------ | `expressionName` | string | `sheetId?` | undefined | number | **Returns:** *boolean* ___ ### isNameValid ▸ **isNameValid**(`expressionName`: string): *boolean* *Defined in [src/NamedExpressions.ts:177](https://github.com/handsontable/hyperformula/blob/a18429c/src/NamedExpressions.ts#L177)* Checks the validity of a named-expression's name. The name: - Must start with a Unicode letter or with an underscore (`_`). - Can contain only Unicode letters, numbers, underscores, and periods (`.`). - Can't be the same as any possible reference in the A1 notation (`[A-Za-z]+[0-9]+`). - Can't be the same as any possible reference in the R1C1 notation (`[rR][0-9]*[cC][0-9]*`). The naming rules follow the [OpenDocument](https://docs.oasis-open.org/office/OpenDocument/v1.3/os/part4-formula/OpenDocument-v1.3-os-part4-formula.html#__RefHeading__1017964_715980110) standard. **Parameters:** Name | Type | ------ | ------ | `expressionName` | string | **Returns:** *boolean* ___ ### namedExpressionForScope ▸ **namedExpressionForScope**(`expressionName`: string, `sheetId?`: undefined | number): *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹[InternalNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/internalnamedexpression.md)›* *Defined in [src/NamedExpressions.ts:150](https://github.com/handsontable/hyperformula/blob/a18429c/src/NamedExpressions.ts#L150)* **Parameters:** Name | Type | ------ | ------ | `expressionName` | string | `sheetId?` | undefined | number | **Returns:** *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹[InternalNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/internalnamedexpression.md)›* ___ ### namedExpressionInAddress ▸ **namedExpressionInAddress**(`row`: number): *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹[InternalNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/internalnamedexpression.md)›* *Defined in [src/NamedExpressions.ts:141](https://github.com/handsontable/hyperformula/blob/a18429c/src/NamedExpressions.ts#L141)* **Parameters:** Name | Type | ------ | ------ | `row` | number | **Returns:** *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹[InternalNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/internalnamedexpression.md)›* ___ ### namedExpressionOrPlaceholder ▸ **namedExpressionOrPlaceholder**(`expressionName`: string, `sheetId`: number): *[InternalNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/internalnamedexpression.md)* *Defined in [src/NamedExpressions.ts:212](https://github.com/handsontable/hyperformula/blob/a18429c/src/NamedExpressions.ts#L212)* **Parameters:** Name | Type | ------ | ------ | `expressionName` | string | `sheetId` | number | **Returns:** *[InternalNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/internalnamedexpression.md)* ___ ### nearestNamedExpression ▸ **nearestNamedExpression**(`expressionName`: string, `sheetId`: number): *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹[InternalNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/internalnamedexpression.md)›* *Defined in [src/NamedExpressions.ts:158](https://github.com/handsontable/hyperformula/blob/a18429c/src/NamedExpressions.ts#L158)* **Parameters:** Name | Type | ------ | ------ | `expressionName` | string | `sheetId` | number | **Returns:** *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹[InternalNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/internalnamedexpression.md)›* ___ ### remove ▸ **remove**(`expressionName`: string, `sheetId?`: undefined | number): *void* *Defined in [src/NamedExpressions.ts:225](https://github.com/handsontable/hyperformula/blob/a18429c/src/NamedExpressions.ts#L225)* **Parameters:** Name | Type | ------ | ------ | `expressionName` | string | `sheetId?` | undefined | number | **Returns:** *void* ___ ### restoreNamedExpression ▸ **restoreNamedExpression**(`namedExpression`: [InternalNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/internalnamedexpression.md), `sheetId?`: undefined | number): *[InternalNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/internalnamedexpression.md)* *Defined in [src/NamedExpressions.ts:204](https://github.com/handsontable/hyperformula/blob/a18429c/src/NamedExpressions.ts#L204)* **Parameters:** Name | Type | ------ | ------ | `namedExpression` | [InternalNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/internalnamedexpression.md) | `sheetId?` | undefined | number | **Returns:** *[InternalNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/internalnamedexpression.md)* ___ ### workbookNamedExpressionOrPlaceholder ▸ **workbookNamedExpressionOrPlaceholder**(`expressionName`: string): *[InternalNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/internalnamedexpression.md)* *Defined in [src/NamedExpressions.ts:216](https://github.com/handsontable/hyperformula/blob/a18429c/src/NamedExpressions.ts#L216)* **Parameters:** Name | Type | ------ | ------ | `expressionName` | string | **Returns:** *[InternalNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/internalnamedexpression.md)* --- ## NoOperationToUndoError URL: https://hyperformula.handsontable.com/docs/api/classes/nooperationtoundoerror # NoOperationToUndoError Error thrown when there are no operations to be undone by the [undo](https://hyperformula.handsontable.com/docs/api/classes/crudoperations.md#undo) method. ## Constructors ### constructor \+ **new NoOperationToUndoError**(): *[NoOperationToUndoError](https://hyperformula.handsontable.com/docs/api/classes/nooperationtoundoerror.md)* *Defined in [src/errors.ts:110](https://github.com/handsontable/hyperformula/blob/a18429c/src/errors.ts#L110)* **Returns:** *[NoOperationToUndoError](https://hyperformula.handsontable.com/docs/api/classes/nooperationtoundoerror.md)* ## Properties ### message • **message**: *string* ___ ### name • **name**: *string* ___ ### stack • **stack**? : *undefined | string* ___ ### Error ▪ **Error**: *ErrorConstructor* --- ## NoOperationToRedoError URL: https://hyperformula.handsontable.com/docs/api/classes/nooperationtoredoerror # NoOperationToRedoError Error thrown when there are no operations to redo by the [redo](https://hyperformula.handsontable.com/docs/api/classes/crudoperations.md#redo) method. ## Constructors ### constructor \+ **new NoOperationToRedoError**(): *[NoOperationToRedoError](https://hyperformula.handsontable.com/docs/api/classes/nooperationtoredoerror.md)* *Defined in [src/errors.ts:119](https://github.com/handsontable/hyperformula/blob/a18429c/src/errors.ts#L119)* **Returns:** *[NoOperationToRedoError](https://hyperformula.handsontable.com/docs/api/classes/nooperationtoredoerror.md)* ## Properties ### message • **message**: *string* ___ ### name • **name**: *string* ___ ### stack • **stack**? : *undefined | string* ___ ### Error ▪ **Error**: *ErrorConstructor* --- ## NoRelativeAddressesAllowedError URL: https://hyperformula.handsontable.com/docs/api/classes/norelativeaddressesallowederror # NoRelativeAddressesAllowedError Error thrown when named expression contains relative addresses. **`see`** [addNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/namedexpressions.md#addnamedexpression) **`see`** [changeNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#changenamedexpression) ## Constructors ### constructor \+ **new NoRelativeAddressesAllowedError**(): *[NoRelativeAddressesAllowedError](https://hyperformula.handsontable.com/docs/api/classes/norelativeaddressesallowederror.md)* *Defined in [src/errors.ts:378](https://github.com/handsontable/hyperformula/blob/a18429c/src/errors.ts#L378)* **Returns:** *[NoRelativeAddressesAllowedError](https://hyperformula.handsontable.com/docs/api/classes/norelativeaddressesallowederror.md)* ## Properties ### message • **message**: *string* ___ ### name • **name**: *string* ___ ### stack • **stack**? : *undefined | string* ___ ### Error ▪ **Error**: *ErrorConstructor* --- ## NoSheetWithIdError URL: https://hyperformula.handsontable.com/docs/api/classes/nosheetwithiderror # NoSheetWithIdError Error thrown when the sheet of a given ID does not exist. ## Constructors ### constructor \+ **new NoSheetWithIdError**(`sheetId`: number): *[NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/nosheetwithiderror.md)* *Defined in [src/errors.ts:11](https://github.com/handsontable/hyperformula/blob/a18429c/src/errors.ts#L11)* **Parameters:** Name | Type | ------ | ------ | `sheetId` | number | **Returns:** *[NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/nosheetwithiderror.md)* ## Properties ### message • **message**: *string* ___ ### name • **name**: *string* ___ ### stack • **stack**? : *undefined | string* ___ ### Error ▪ **Error**: *ErrorConstructor* --- ## NoSheetWithNameError URL: https://hyperformula.handsontable.com/docs/api/classes/nosheetwithnameerror # NoSheetWithNameError Error thrown when the sheet of a given name does not exist. ## Constructors ### constructor \+ **new NoSheetWithNameError**(`sheetName`: string): *[NoSheetWithNameError](https://hyperformula.handsontable.com/docs/api/classes/nosheetwithnameerror.md)* *Defined in [src/errors.ts:20](https://github.com/handsontable/hyperformula/blob/a18429c/src/errors.ts#L20)* **Parameters:** Name | Type | ------ | ------ | `sheetName` | string | **Returns:** *[NoSheetWithNameError](https://hyperformula.handsontable.com/docs/api/classes/nosheetwithnameerror.md)* ## Properties ### message • **message**: *string* ___ ### name • **name**: *string* ___ ### stack • **stack**? : *undefined | string* ___ ### Error ▪ **Error**: *ErrorConstructor* --- ## NotAFormulaError URL: https://hyperformula.handsontable.com/docs/api/classes/notaformulaerror # NotAFormulaError Error thrown when the the provided string is not a valid formula, i.e does not start with "=" ## Constructors ### constructor \+ **new NotAFormulaError**(): *[NotAFormulaError](https://hyperformula.handsontable.com/docs/api/classes/notaformulaerror.md)* *Defined in [src/errors.ts:47](https://github.com/handsontable/hyperformula/blob/a18429c/src/errors.ts#L47)* **Returns:** *[NotAFormulaError](https://hyperformula.handsontable.com/docs/api/classes/notaformulaerror.md)* ## Properties ### message • **message**: *string* ___ ### name • **name**: *string* ___ ### stack • **stack**? : *undefined | string* ___ ### Error ▪ **Error**: *ErrorConstructor* --- ## NotComputedArray URL: https://hyperformula.handsontable.com/docs/api/classes/notcomputedarray # NotComputedArray ## Constructors ### constructor \+ **new NotComputedArray**(`size`: [ArraySize](https://hyperformula.handsontable.com/docs/api/classes/arraysize.md)): *[NotComputedArray](https://hyperformula.handsontable.com/docs/api/classes/notcomputedarray.md)* *Defined in [src/ArrayValue.ts:23](https://github.com/handsontable/hyperformula/blob/a18429c/src/ArrayValue.ts#L23)* **Parameters:** Name | Type | ------ | ------ | `size` | [ArraySize](https://hyperformula.handsontable.com/docs/api/classes/arraysize.md) | **Returns:** *[NotComputedArray](https://hyperformula.handsontable.com/docs/api/classes/notcomputedarray.md)* ## Properties ### size • **size**: *[ArraySize](https://hyperformula.handsontable.com/docs/api/classes/arraysize.md)* *Defined in [src/ArrayValue.ts:24](https://github.com/handsontable/hyperformula/blob/a18429c/src/ArrayValue.ts#L24)* ## Methods ### get ▸ **get**(`col`: number, `row`: number): *number* *Defined in [src/ArrayValue.ts:36](https://github.com/handsontable/hyperformula/blob/a18429c/src/ArrayValue.ts#L36)* **Parameters:** Name | Type | ------ | ------ | `col` | number | `row` | number | **Returns:** *number* ___ ### height ▸ **height**(): *number* *Defined in [src/ArrayValue.ts:31](https://github.com/handsontable/hyperformula/blob/a18429c/src/ArrayValue.ts#L31)* **Returns:** *number* ___ ### simpleRangeValue ▸ **simpleRangeValue**(): *[SimpleRangeValue](https://hyperformula.handsontable.com/docs/api/classes/simplerangevalue.md)* *Defined in [src/ArrayValue.ts:40](https://github.com/handsontable/hyperformula/blob/a18429c/src/ArrayValue.ts#L40)* **Returns:** *[SimpleRangeValue](https://hyperformula.handsontable.com/docs/api/classes/simplerangevalue.md)* ___ ### width ▸ **width**(): *number* *Defined in [src/ArrayValue.ts:27](https://github.com/handsontable/hyperformula/blob/a18429c/src/ArrayValue.ts#L27)* **Returns:** *number* --- ## NumberLiteralHelper URL: https://hyperformula.handsontable.com/docs/api/classes/numberliteralhelper # NumberLiteralHelper ## Constructors ### constructor \+ **new NumberLiteralHelper**(`config`: [Config](https://hyperformula.handsontable.com/docs/api/classes/config.md)): *[NumberLiteralHelper](https://hyperformula.handsontable.com/docs/api/classes/numberliteralhelper.md)* *Defined in [src/NumberLiteralHelper.ts:11](https://github.com/handsontable/hyperformula/blob/a18429c/src/NumberLiteralHelper.ts#L11)* **Parameters:** Name | Type | ------ | ------ | `config` | [Config](https://hyperformula.handsontable.com/docs/api/classes/config.md) | **Returns:** *[NumberLiteralHelper](https://hyperformula.handsontable.com/docs/api/classes/numberliteralhelper.md)* ## Methods ### numericStringToMaybeNumber ▸ **numericStringToMaybeNumber**(`input`: string): *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹number›* *Defined in [src/NumberLiteralHelper.ts:27](https://github.com/handsontable/hyperformula/blob/a18429c/src/NumberLiteralHelper.ts#L27)* **Parameters:** Name | Type | ------ | ------ | `input` | string | **Returns:** *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹number›* ___ ### numericStringToNumber ▸ **numericStringToNumber**(`input`: string): *number* *Defined in [src/NumberLiteralHelper.ts:39](https://github.com/handsontable/hyperformula/blob/a18429c/src/NumberLiteralHelper.ts#L39)* **Parameters:** Name | Type | ------ | ------ | `input` | string | **Returns:** *number* --- ## Operations URL: https://hyperformula.handsontable.com/docs/api/classes/operations # Operations ## Constructors ### constructor \+ **new Operations**(`config`: [Config](https://hyperformula.handsontable.com/docs/api/classes/config.md), `dependencyGraph`: DependencyGraph, `columnSearch`: [ColumnSearchStrategy](https://hyperformula.handsontable.com/docs/api/interfaces/columnsearchstrategy.md), `cellContentParser`: [CellContentParser](https://hyperformula.handsontable.com/docs/api/classes/cellcontentparser.md), `parser`: ParserWithCaching, `stats`: [Statistics](https://hyperformula.handsontable.com/docs/api/classes/statistics.md), `lazilyTransformingAstService`: [LazilyTransformingAstService](https://hyperformula.handsontable.com/docs/api/classes/lazilytransformingastservice.md), `namedExpressions`: [NamedExpressions](https://hyperformula.handsontable.com/docs/api/classes/namedexpressions.md), `arraySizePredictor`: [ArraySizePredictor](https://hyperformula.handsontable.com/docs/api/classes/arraysizepredictor.md)): *[Operations](https://hyperformula.handsontable.com/docs/api/classes/operations.md)* *Defined in [src/Operations.ts:160](https://github.com/handsontable/hyperformula/blob/a18429c/src/Operations.ts#L160)* **Parameters:** Name | Type | ------ | ------ | `config` | [Config](https://hyperformula.handsontable.com/docs/api/classes/config.md) | `dependencyGraph` | DependencyGraph | `columnSearch` | [ColumnSearchStrategy](https://hyperformula.handsontable.com/docs/api/interfaces/columnsearchstrategy.md) | `cellContentParser` | [CellContentParser](https://hyperformula.handsontable.com/docs/api/classes/cellcontentparser.md) | `parser` | ParserWithCaching | `stats` | [Statistics](https://hyperformula.handsontable.com/docs/api/classes/statistics.md) | `lazilyTransformingAstService` | [LazilyTransformingAstService](https://hyperformula.handsontable.com/docs/api/classes/lazilytransformingastservice.md) | `namedExpressions` | [NamedExpressions](https://hyperformula.handsontable.com/docs/api/classes/namedexpressions.md) | `arraySizePredictor` | [ArraySizePredictor](https://hyperformula.handsontable.com/docs/api/classes/arraysizepredictor.md) | **Returns:** *[Operations](https://hyperformula.handsontable.com/docs/api/classes/operations.md)* ## Methods ### addColumns ▸ **addColumns**(`cmd`: [AddColumnsCommand](https://hyperformula.handsontable.com/docs/api/classes/addcolumnscommand.md)): *void* *Defined in [src/Operations.ts:203](https://github.com/handsontable/hyperformula/blob/a18429c/src/Operations.ts#L203)* **Parameters:** Name | Type | ------ | ------ | `cmd` | [AddColumnsCommand](https://hyperformula.handsontable.com/docs/api/classes/addcolumnscommand.md) | **Returns:** *void* ___ ### addNamedExpression ▸ **addNamedExpression**(`expressionName`: string, `expression`: [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent), `sheetId?`: undefined | number, `options?`: [NamedExpressionOptions](https://hyperformula.handsontable.com/docs/api/globals.md#namedexpressionoptions)): *void* *Defined in [src/Operations.ts:420](https://github.com/handsontable/hyperformula/blob/a18429c/src/Operations.ts#L420)* **Parameters:** Name | Type | ------ | ------ | `expressionName` | string | `expression` | [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent) | `sheetId?` | undefined | number | `options?` | [NamedExpressionOptions](https://hyperformula.handsontable.com/docs/api/globals.md#namedexpressionoptions) | **Returns:** *void* ___ ### addPlaceholderSheetWithId ▸ **addPlaceholderSheetWithId**(`sheetId`: number, `name`: string): *void* *Defined in [src/Operations.ts:253](https://github.com/handsontable/hyperformula/blob/a18429c/src/Operations.ts#L253)* Adds a placeholder sheet with a specific ID for undo operations. Used to restore previously merged placeholder sheets. Note: Unlike `addSheetWithId`, this does NOT call `dependencyGraph.addSheet()` because placeholders don't need dirty marking or strategy changes - they only need to exist in the mappings so formulas can reference them again. **Parameters:** Name | Type | ------ | ------ | `sheetId` | number | `name` | string | **Returns:** *void* ___ ### addRows ▸ **addRows**(`cmd`: [AddRowsCommand](https://hyperformula.handsontable.com/docs/api/classes/addrowscommand.md)): *void* *Defined in [src/Operations.ts:197](https://github.com/handsontable/hyperformula/blob/a18429c/src/Operations.ts#L197)* **Parameters:** Name | Type | ------ | ------ | `cmd` | [AddRowsCommand](https://hyperformula.handsontable.com/docs/api/classes/addrowscommand.md) | **Returns:** *void* ___ ### addSheet ▸ **addSheet**(`name?`: undefined | string): *object* *Defined in [src/Operations.ts:231](https://github.com/handsontable/hyperformula/blob/a18429c/src/Operations.ts#L231)* Adds a new sheet to the workbook. **Parameters:** Name | Type | ------ | ------ | `name?` | undefined | string | **Returns:** *object* * **sheetId**: *number* * **sheetName**: *string* ___ ### addSheetWithId ▸ **addSheetWithId**(`sheetId`: number, `name`: string): *void* *Defined in [src/Operations.ts:240](https://github.com/handsontable/hyperformula/blob/a18429c/src/Operations.ts#L240)* Adds a sheet with a specific ID for redo operations. **Parameters:** Name | Type | ------ | ------ | `sheetId` | number | `name` | string | **Returns:** *void* ___ ### changeNamedExpressionExpression ▸ **changeNamedExpressionExpression**(`expressionName`: string, `newExpression`: [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent), `sheetId?`: undefined | number, `options?`: [NamedExpressionOptions](https://hyperformula.handsontable.com/docs/api/globals.md#namedexpressionoptions)): *[[InternalNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/internalnamedexpression.md), [ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell)]* *Defined in [src/Operations.ts:433](https://github.com/handsontable/hyperformula/blob/a18429c/src/Operations.ts#L433)* **Parameters:** Name | Type | ------ | ------ | `expressionName` | string | `newExpression` | [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent) | `sheetId?` | undefined | number | `options?` | [NamedExpressionOptions](https://hyperformula.handsontable.com/docs/api/globals.md#namedexpressionoptions) | **Returns:** *[[InternalNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/internalnamedexpression.md), [ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell)]* ___ ### clearSheet ▸ **clearSheet**(`sheetId`: number): *void* *Defined in [src/Operations.ts:223](https://github.com/handsontable/hyperformula/blob/a18429c/src/Operations.ts#L223)* Clears the sheet content. **Parameters:** Name | Type | ------ | ------ | `sheetId` | number | **Returns:** *void* ___ ### ensureItIsPossibleToMoveCells ▸ **ensureItIsPossibleToMoveCells**(`sourceLeftCorner`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), `width`: number, `height`: number, `destinationLeftCorner`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *void* *Defined in [src/Operations.ts:466](https://github.com/handsontable/hyperformula/blob/a18429c/src/Operations.ts#L466)* **Parameters:** Name | Type | ------ | ------ | `sourceLeftCorner` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | `width` | number | `height` | number | `destinationLeftCorner` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | **Returns:** *void* ___ ### forceApplyPostponedTransformations ▸ **forceApplyPostponedTransformations**(): *void* *Defined in [src/Operations.ts:745](https://github.com/handsontable/hyperformula/blob/a18429c/src/Operations.ts#L745)* Forces all formula vertices and column index entries to apply pending lazy transformations, bringing them up to the current LazilyTransformingAstService version. Called before undo of move operations and before compaction. **Returns:** *void* ___ ### getAndClearContentChanges ▸ **getAndClearContentChanges**(): *[ContentChanges](https://hyperformula.handsontable.com/docs/api/classes/contentchanges.md)* *Defined in [src/Operations.ts:734](https://github.com/handsontable/hyperformula/blob/a18429c/src/Operations.ts#L734)* **Returns:** *[ContentChanges](https://hyperformula.handsontable.com/docs/api/classes/contentchanges.md)* ___ ### getClipboardCell ▸ **getClipboardCell**(`address`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *[ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell)* *Defined in [src/Operations.ts:549](https://github.com/handsontable/hyperformula/blob/a18429c/src/Operations.ts#L549)* **Parameters:** Name | Type | ------ | ------ | `address` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | **Returns:** *[ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell)* ___ ### getOldContent ▸ **getOldContent**(`address`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *[[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), [ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell)]* *Defined in [src/Operations.ts:530](https://github.com/handsontable/hyperformula/blob/a18429c/src/Operations.ts#L530)* **Parameters:** Name | Type | ------ | ------ | `address` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | **Returns:** *[[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), [ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell)]* ___ ### getRangeClipboardCells ▸ **getRangeClipboardCells**(`range`: [AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)): *[[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), [ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell)][]* *Defined in [src/Operations.ts:590](https://github.com/handsontable/hyperformula/blob/a18429c/src/Operations.ts#L590)* **Parameters:** Name | Type | ------ | ------ | `range` | [AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md) | **Returns:** *[[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), [ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell)][]* ___ ### getSheetClipboardCells ▸ **getSheetClipboardCells**(`sheet`: number): *[ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell)[][]* *Defined in [src/Operations.ts:574](https://github.com/handsontable/hyperformula/blob/a18429c/src/Operations.ts#L574)* **Parameters:** Name | Type | ------ | ------ | `sheet` | number | **Returns:** *[ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell)[][]* ___ ### moveCells ▸ **moveCells**(`sourceLeftCorner`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), `width`: number, `height`: number, `destinationLeftCorner`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *[MoveCellsResult](https://hyperformula.handsontable.com/docs/api/interfaces/movecellsresult.md)* *Defined in [src/Operations.ts:343](https://github.com/handsontable/hyperformula/blob/a18429c/src/Operations.ts#L343)* **Parameters:** Name | Type | ------ | ------ | `sourceLeftCorner` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | `width` | number | `height` | number | `destinationLeftCorner` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | **Returns:** *[MoveCellsResult](https://hyperformula.handsontable.com/docs/api/interfaces/movecellsresult.md)* ___ ### moveColumns ▸ **moveColumns**(`sheet`: number, `startColumn`: number, `numberOfColumns`: number, `targetColumn`: number): *number* *Defined in [src/Operations.ts:324](https://github.com/handsontable/hyperformula/blob/a18429c/src/Operations.ts#L324)* **Parameters:** Name | Type | ------ | ------ | `sheet` | number | `startColumn` | number | `numberOfColumns` | number | `targetColumn` | number | **Returns:** *number* ___ ### moveRows ▸ **moveRows**(`sheet`: number, `startRow`: number, `numberOfRows`: number, `targetRow`: number): *number* *Defined in [src/Operations.ts:305](https://github.com/handsontable/hyperformula/blob/a18429c/src/Operations.ts#L305)* **Parameters:** Name | Type | ------ | ------ | `sheet` | number | `startRow` | number | `numberOfRows` | number | `targetRow` | number | **Returns:** *number* ___ ### removeColumns ▸ **removeColumns**(`cmd`: [RemoveColumnsCommand](https://hyperformula.handsontable.com/docs/api/classes/removecolumnscommand.md)): *[ColumnsRemoval](https://hyperformula.handsontable.com/docs/api/interfaces/columnsremoval.md)[]* *Defined in [src/Operations.ts:209](https://github.com/handsontable/hyperformula/blob/a18429c/src/Operations.ts#L209)* **Parameters:** Name | Type | ------ | ------ | `cmd` | [RemoveColumnsCommand](https://hyperformula.handsontable.com/docs/api/classes/removecolumnscommand.md) | **Returns:** *[ColumnsRemoval](https://hyperformula.handsontable.com/docs/api/interfaces/columnsremoval.md)[]* ___ ### removeNamedExpression ▸ **removeNamedExpression**(`expressionName`: string, `sheetId?`: undefined | number): *[[InternalNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/internalnamedexpression.md), [ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell)]* *Defined in [src/Operations.ts:447](https://github.com/handsontable/hyperformula/blob/a18429c/src/Operations.ts#L447)* **Parameters:** Name | Type | ------ | ------ | `expressionName` | string | `sheetId?` | undefined | number | **Returns:** *[[InternalNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/internalnamedexpression.md), [ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell)]* ___ ### removeRows ▸ **removeRows**(`cmd`: [RemoveRowsCommand](https://hyperformula.handsontable.com/docs/api/classes/removerowscommand.md)): *[RowsRemoval](https://hyperformula.handsontable.com/docs/api/interfaces/rowsremoval.md)[]* *Defined in [src/Operations.ts:186](https://github.com/handsontable/hyperformula/blob/a18429c/src/Operations.ts#L186)* **Parameters:** Name | Type | ------ | ------ | `cmd` | [RemoveRowsCommand](https://hyperformula.handsontable.com/docs/api/classes/removerowscommand.md) | **Returns:** *[RowsRemoval](https://hyperformula.handsontable.com/docs/api/interfaces/rowsremoval.md)[]* ___ ### removeSheet ▸ **removeSheet**(`sheetId`: number): *[[InternalNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/internalnamedexpression.md), [ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell)][]* *Defined in [src/Operations.ts:261](https://github.com/handsontable/hyperformula/blob/a18429c/src/Operations.ts#L261)* Removes a sheet from the workbook. **Parameters:** Name | Type | ------ | ------ | `sheetId` | number | **Returns:** *[[InternalNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/internalnamedexpression.md), [ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell)][]* ___ ### removeSheetByName ▸ **removeSheetByName**(`sheetName`: string): *[[InternalNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/internalnamedexpression.md)‹›, [ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell)][]* *Defined in [src/Operations.ts:273](https://github.com/handsontable/hyperformula/blob/a18429c/src/Operations.ts#L273)* Removes a sheet from the workbook by name. **Parameters:** Name | Type | ------ | ------ | `sheetName` | string | **Returns:** *[[InternalNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/internalnamedexpression.md)‹›, [ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell)][]* ___ ### renameSheet ▸ **renameSheet**(`sheetId`: number, `newName`: string): *object* *Defined in [src/Operations.ts:281](https://github.com/handsontable/hyperformula/blob/a18429c/src/Operations.ts#L281)* Renames a sheet in the workbook. **Parameters:** Name | Type | ------ | ------ | `sheetId` | number | `newName` | string | **Returns:** *object* * **mergedPlaceholderSheetId**? : *undefined | number* * **previousDisplayName**: *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹string›* * **version**? : *undefined | number* ___ ### restoreCell ▸ **restoreCell**(`address`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), `clipboardCell`: [ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell)): *void* *Defined in [src/Operations.ts:509](https://github.com/handsontable/hyperformula/blob/a18429c/src/Operations.ts#L509)* Restores a single cell. **Parameters:** Name | Type | ------ | ------ | `address` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | `clipboardCell` | [ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell) | **Returns:** *void* ___ ### restoreClipboardCells ▸ **restoreClipboardCells**(`sourceSheetId`: number, `cells`: IterableIterator‹[[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), [ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell)]›): *string[]* *Defined in [src/Operations.ts:493](https://github.com/handsontable/hyperformula/blob/a18429c/src/Operations.ts#L493)* **Parameters:** Name | Type | ------ | ------ | `sourceSheetId` | number | `cells` | IterableIterator‹[[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), [ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell)]› | **Returns:** *string[]* ___ ### restoreNamedExpression ▸ **restoreNamedExpression**(`namedExpression`: [InternalNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/internalnamedexpression.md), `content`: [ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell), `sheetId?`: undefined | number): *void* *Defined in [src/Operations.ts:426](https://github.com/handsontable/hyperformula/blob/a18429c/src/Operations.ts#L426)* **Parameters:** Name | Type | ------ | ------ | `namedExpression` | [InternalNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/internalnamedexpression.md) | `content` | [ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell) | `sheetId?` | undefined | number | **Returns:** *void* ___ ### rowEffectivelyNotInSheet ▸ **rowEffectivelyNotInSheet**(`row`: number, `sheet`: number): *boolean* *Defined in [src/Operations.ts:729](https://github.com/handsontable/hyperformula/blob/a18429c/src/Operations.ts#L729)* Returns true if row number is outside of given sheet. **Parameters:** Name | Type | Description | ------ | ------ | ------ | `row` | number | row number | `sheet` | number | sheet ID number | **Returns:** *boolean* ___ ### setCellContent ▸ **setCellContent**(`address`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), `newCellContent`: [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent)): *[[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), [ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell)]* *Defined in [src/Operations.ts:598](https://github.com/handsontable/hyperformula/blob/a18429c/src/Operations.ts#L598)* **Parameters:** Name | Type | ------ | ------ | `address` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | `newCellContent` | [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent) | **Returns:** *[[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), [ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell)]* ___ ### setCellEmpty ▸ **setCellEmpty**(`address`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *void* *Defined in [src/Operations.ts:695](https://github.com/handsontable/hyperformula/blob/a18429c/src/Operations.ts#L695)* Sets cell content to an empty value. Creates an EmptyCellVertex and updates the dependency graph and column search index. **Parameters:** Name | Type | ------ | ------ | `address` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | **Returns:** *void* ___ ### setColumnOrder ▸ **setColumnOrder**(`sheetId`: number, `columnMapping`: [number, number][]): *[[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), [ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell)][]* *Defined in [src/Operations.ts:399](https://github.com/handsontable/hyperformula/blob/a18429c/src/Operations.ts#L399)* **Parameters:** Name | Type | ------ | ------ | `sheetId` | number | `columnMapping` | [number, number][] | **Returns:** *[[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), [ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell)][]* ___ ### setFormulaToCell ▸ **setFormulaToCell**(`address`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), `size`: [ArraySize](https://hyperformula.handsontable.com/docs/api/classes/arraysize.md), `__namedParameters`: object): *void* *Defined in [src/Operations.ts:663](https://github.com/handsontable/hyperformula/blob/a18429c/src/Operations.ts#L663)* Sets cell content to a formula. Creates a ScalarFormulaVertex and updates the dependency graph and column search index. **Parameters:** ▪ **address**: *[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)* ▪ **size**: *[ArraySize](https://hyperformula.handsontable.com/docs/api/classes/arraysize.md)* ▪ **__namedParameters**: *object* Name | Type | ------ | ------ | `ast` | Ast | `dependencies` | RelativeDependency[] | `hasStructuralChangeFunction` | boolean | `hasVolatileFunction` | boolean | **Returns:** *void* ___ ### setFormulaToCellFromCache ▸ **setFormulaToCellFromCache**(`formulaHash`: string, `address`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *void* *Defined in [src/Operations.ts:709](https://github.com/handsontable/hyperformula/blob/a18429c/src/Operations.ts#L709)* **Parameters:** Name | Type | ------ | ------ | `formulaHash` | string | `address` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | **Returns:** *void* ___ ### setParsingErrorToCell ▸ **setParsingErrorToCell**(`rawInput`: string, `errors`: ParsingError[], `address`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *void* *Defined in [src/Operations.ts:648](https://github.com/handsontable/hyperformula/blob/a18429c/src/Operations.ts#L648)* Sets cell content to an instance of parsing error. Creates a ParsingErrorVertex and updates the dependency graph and column search index. **Parameters:** Name | Type | ------ | ------ | `rawInput` | string | `errors` | ParsingError[] | `address` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | **Returns:** *void* ___ ### setRowOrder ▸ **setRowOrder**(`sheetId`: number, `rowMapping`: [number, number][]): *[[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), [ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell)][]* *Defined in [src/Operations.ts:378](https://github.com/handsontable/hyperformula/blob/a18429c/src/Operations.ts#L378)* **Parameters:** Name | Type | ------ | ------ | `sheetId` | number | `rowMapping` | [number, number][] | **Returns:** *[[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), [ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell)][]* ___ ### setSheetContent ▸ **setSheetContent**(`sheetId`: number, `newSheetContent`: [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent)[][]): *void* *Defined in [src/Operations.ts:634](https://github.com/handsontable/hyperformula/blob/a18429c/src/Operations.ts#L634)* **Parameters:** Name | Type | ------ | ------ | `sheetId` | number | `newSheetContent` | [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent)[][] | **Returns:** *void* ___ ### setValueToCell ▸ **setValueToCell**(`value`: RawAndParsedValue, `address`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *void* *Defined in [src/Operations.ts:681](https://github.com/handsontable/hyperformula/blob/a18429c/src/Operations.ts#L681)* Sets cell content to a value. Creates a ValueCellVertex and updates the dependency graph and column search index. **Parameters:** Name | Type | ------ | ------ | `value` | RawAndParsedValue | `address` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | **Returns:** *void* --- ## NothingToPasteError URL: https://hyperformula.handsontable.com/docs/api/classes/nothingtopasteerror # NothingToPasteError Error thrown when there is nothing to paste by the [paste](https://hyperformula.handsontable.com/docs/api/classes/crudoperations.md#paste) method. ## Constructors ### constructor \+ **new NothingToPasteError**(): *[NothingToPasteError](https://hyperformula.handsontable.com/docs/api/classes/nothingtopasteerror.md)* *Defined in [src/errors.ts:128](https://github.com/handsontable/hyperformula/blob/a18429c/src/errors.ts#L128)* **Returns:** *[NothingToPasteError](https://hyperformula.handsontable.com/docs/api/classes/nothingtopasteerror.md)* ## Properties ### message • **message**: *string* ___ ### name • **name**: *string* ___ ### stack • **stack**? : *undefined | string* ___ ### Error ▪ **Error**: *ErrorConstructor* --- ## PasteUndoEntry URL: https://hyperformula.handsontable.com/docs/api/classes/pasteundoentry # PasteUndoEntry ## Constructors ### constructor \+ **new PasteUndoEntry**(`targetLeftCorner`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), `oldContent`: [[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), [ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell)][], `newContent`: [ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell)[][], `addedGlobalNamedExpressions`: string[]): *[PasteUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/pasteundoentry.md)* *Defined in [src/UndoRedo.ts:366](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L366)* **Parameters:** Name | Type | ------ | ------ | `targetLeftCorner` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | `oldContent` | [[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), [ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell)][] | `newContent` | [ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell)[][] | `addedGlobalNamedExpressions` | string[] | **Returns:** *[PasteUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/pasteundoentry.md)* ## Properties ### addedGlobalNamedExpressions • **addedGlobalNamedExpressions**: *string[]* *Defined in [src/UndoRedo.ts:371](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L371)* ___ ### newContent • **newContent**: *[ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell)[][]* *Defined in [src/UndoRedo.ts:370](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L370)* ___ ### oldContent • **oldContent**: *[[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), [ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell)][]* *Defined in [src/UndoRedo.ts:369](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L369)* ___ ### targetLeftCorner • **targetLeftCorner**: *[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)* *Defined in [src/UndoRedo.ts:368](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L368)* ## Methods ### doRedo ▸ **doRedo**(`undoRedo`: [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md)): *void* *Defined in [src/UndoRedo.ts:380](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L380)* **Parameters:** Name | Type | ------ | ------ | `undoRedo` | [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md) | **Returns:** *void* ___ ### doUndo ▸ **doUndo**(`undoRedo`: [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md)): *void* *Defined in [src/UndoRedo.ts:376](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L376)* **Parameters:** Name | Type | ------ | ------ | `undoRedo` | [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md) | **Returns:** *void* ___ ### getReferencedOldDataVersions ▸ **getReferencedOldDataVersions**(): *number[]* *Defined in [src/UndoRedo.ts:42](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L42)* Returns LazilyTransformingAstService version keys referenced by this entry's oldData. Default implementation returns empty — override in entries that store oldData. **Returns:** *number[]* --- ## ProtectedFunctionTranslationError URL: https://hyperformula.handsontable.com/docs/api/classes/protectedfunctiontranslationerror # ProtectedFunctionTranslationError Error thrown when trying to override protected translation. **`see`** [registerLanguage](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#static-registerlanguage) **`see`** [registerFunction](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#static-registerfunction) **`see`** [registerFunctionPlugin](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#static-registerfunctionplugin) ## Constructors ### constructor \+ **new ProtectedFunctionTranslationError**(`key`: string): *[ProtectedFunctionTranslationError](https://hyperformula.handsontable.com/docs/api/classes/protectedfunctiontranslationerror.md)* *Defined in [src/errors.ts:279](https://github.com/handsontable/hyperformula/blob/a18429c/src/errors.ts#L279)* **Parameters:** Name | Type | ------ | ------ | `key` | string | **Returns:** *[ProtectedFunctionTranslationError](https://hyperformula.handsontable.com/docs/api/classes/protectedfunctiontranslationerror.md)* ## Properties ### message • **message**: *string* ___ ### name • **name**: *string* ___ ### stack • **stack**? : *undefined | string* ___ ### Error ▪ **Error**: *ErrorConstructor* --- ## ProtectedFunctionError URL: https://hyperformula.handsontable.com/docs/api/classes/protectedfunctionerror # ProtectedFunctionError Error thrown when trying to register, override or remove function with reserved id. **`see`** [registerFunctionPlugin](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#static-registerfunctionplugin) **`see`** [registerFunction](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#static-registerfunction) **`see`** [unregisterFunction](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#static-unregisterfunction) ## Properties ### message • **message**: *string* ___ ### name • **name**: *string* ___ ### stack • **stack**? : *undefined | string* ___ ### Error ▪ **Error**: *ErrorConstructor* ## Methods ### cannotRegisterFunctionWithId ▸ **cannotRegisterFunctionWithId**(`functionId`: string): *[ProtectedFunctionError](https://hyperformula.handsontable.com/docs/api/classes/protectedfunctionerror.md)* *Defined in [src/errors.ts:334](https://github.com/handsontable/hyperformula/blob/a18429c/src/errors.ts#L334)* **Parameters:** Name | Type | ------ | ------ | `functionId` | string | **Returns:** *[ProtectedFunctionError](https://hyperformula.handsontable.com/docs/api/classes/protectedfunctionerror.md)* ___ ### cannotUnregisterFunctionWithId ▸ **cannotUnregisterFunctionWithId**(`functionId`: string): *[ProtectedFunctionError](https://hyperformula.handsontable.com/docs/api/classes/protectedfunctionerror.md)* *Defined in [src/errors.ts:338](https://github.com/handsontable/hyperformula/blob/a18429c/src/errors.ts#L338)* **Parameters:** Name | Type | ------ | ------ | `functionId` | string | **Returns:** *[ProtectedFunctionError](https://hyperformula.handsontable.com/docs/api/classes/protectedfunctionerror.md)* ___ ### cannotUnregisterProtectedPlugin ▸ **cannotUnregisterProtectedPlugin**(): *[ProtectedFunctionError](https://hyperformula.handsontable.com/docs/api/classes/protectedfunctionerror.md)* *Defined in [src/errors.ts:342](https://github.com/handsontable/hyperformula/blob/a18429c/src/errors.ts#L342)* **Returns:** *[ProtectedFunctionError](https://hyperformula.handsontable.com/docs/api/classes/protectedfunctionerror.md)* --- ## RemoveColumnsCommand URL: https://hyperformula.handsontable.com/docs/api/classes/removecolumnscommand # RemoveColumnsCommand ## Constructors ### constructor \+ **new RemoveColumnsCommand**(`sheet`: number, `indexes`: [ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[]): *[RemoveColumnsCommand](https://hyperformula.handsontable.com/docs/api/classes/removecolumnscommand.md)* *Defined in [src/Operations.ts:114](https://github.com/handsontable/hyperformula/blob/a18429c/src/Operations.ts#L114)* **Parameters:** Name | Type | ------ | ------ | `sheet` | number | `indexes` | [ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[] | **Returns:** *[RemoveColumnsCommand](https://hyperformula.handsontable.com/docs/api/classes/removecolumnscommand.md)* ## Properties ### indexes • **indexes**: *[ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[]* *Defined in [src/Operations.ts:117](https://github.com/handsontable/hyperformula/blob/a18429c/src/Operations.ts#L117)* ___ ### sheet • **sheet**: *number* *Defined in [src/Operations.ts:116](https://github.com/handsontable/hyperformula/blob/a18429c/src/Operations.ts#L116)* ## Methods ### columnsSpans ▸ **columnsSpans**(): *[ColumnsSpan](https://hyperformula.handsontable.com/docs/api/classes/columnsspan.md)[]* *Defined in [src/Operations.ts:125](https://github.com/handsontable/hyperformula/blob/a18429c/src/Operations.ts#L125)* **Returns:** *[ColumnsSpan](https://hyperformula.handsontable.com/docs/api/classes/columnsspan.md)[]* ___ ### normalizedIndexes ▸ **normalizedIndexes**(): *[ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[]* *Defined in [src/Operations.ts:121](https://github.com/handsontable/hyperformula/blob/a18429c/src/Operations.ts#L121)* **Returns:** *[ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[]* --- ## RemoveColumnsUndoEntry URL: https://hyperformula.handsontable.com/docs/api/classes/removecolumnsundoentry # RemoveColumnsUndoEntry ## Constructors ### constructor \+ **new RemoveColumnsUndoEntry**(`command`: [RemoveColumnsCommand](https://hyperformula.handsontable.com/docs/api/classes/removecolumnscommand.md), `columnsRemovals`: [ColumnsRemoval](https://hyperformula.handsontable.com/docs/api/interfaces/columnsremoval.md)[]): *[RemoveColumnsUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/removecolumnsundoentry.md)* *Defined in [src/UndoRedo.ts:238](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L238)* **Parameters:** Name | Type | ------ | ------ | `command` | [RemoveColumnsCommand](https://hyperformula.handsontable.com/docs/api/classes/removecolumnscommand.md) | `columnsRemovals` | [ColumnsRemoval](https://hyperformula.handsontable.com/docs/api/interfaces/columnsremoval.md)[] | **Returns:** *[RemoveColumnsUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/removecolumnsundoentry.md)* ## Properties ### columnsRemovals • **columnsRemovals**: *[ColumnsRemoval](https://hyperformula.handsontable.com/docs/api/interfaces/columnsremoval.md)[]* *Defined in [src/UndoRedo.ts:241](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L241)* ___ ### command • **command**: *[RemoveColumnsCommand](https://hyperformula.handsontable.com/docs/api/classes/removecolumnscommand.md)* *Defined in [src/UndoRedo.ts:240](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L240)* ## Methods ### doRedo ▸ **doRedo**(`undoRedo`: [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md)): *void* *Defined in [src/UndoRedo.ts:250](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L250)* **Parameters:** Name | Type | ------ | ------ | `undoRedo` | [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md) | **Returns:** *void* ___ ### doUndo ▸ **doUndo**(`undoRedo`: [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md)): *void* *Defined in [src/UndoRedo.ts:246](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L246)* **Parameters:** Name | Type | ------ | ------ | `undoRedo` | [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md) | **Returns:** *void* ___ ### getReferencedOldDataVersions ▸ **getReferencedOldDataVersions**(): *number[]* *Defined in [src/UndoRedo.ts:254](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L254)* **Returns:** *number[]* --- ## RemoveNamedExpressionUndoEntry URL: https://hyperformula.handsontable.com/docs/api/classes/removenamedexpressionundoentry # RemoveNamedExpressionUndoEntry ## Constructors ### constructor \+ **new RemoveNamedExpressionUndoEntry**(`namedExpression`: [InternalNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/internalnamedexpression.md), `content`: [ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell), `scope?`: undefined | number): *[RemoveNamedExpressionUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/removenamedexpressionundoentry.md)* *Defined in [src/UndoRedo.ts:404](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L404)* **Parameters:** Name | Type | ------ | ------ | `namedExpression` | [InternalNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/internalnamedexpression.md) | `content` | [ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell) | `scope?` | undefined | number | **Returns:** *[RemoveNamedExpressionUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/removenamedexpressionundoentry.md)* ## Properties ### content • **content**: *[ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell)* *Defined in [src/UndoRedo.ts:407](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L407)* ___ ### namedExpression • **namedExpression**: *[InternalNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/internalnamedexpression.md)* *Defined in [src/UndoRedo.ts:406](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L406)* ___ ### scope • **scope**? : *undefined | number* *Defined in [src/UndoRedo.ts:408](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L408)* ## Methods ### doRedo ▸ **doRedo**(`undoRedo`: [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md)): *void* *Defined in [src/UndoRedo.ts:417](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L417)* **Parameters:** Name | Type | ------ | ------ | `undoRedo` | [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md) | **Returns:** *void* ___ ### doUndo ▸ **doUndo**(`undoRedo`: [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md)): *void* *Defined in [src/UndoRedo.ts:413](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L413)* **Parameters:** Name | Type | ------ | ------ | `undoRedo` | [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md) | **Returns:** *void* ___ ### getReferencedOldDataVersions ▸ **getReferencedOldDataVersions**(): *number[]* *Defined in [src/UndoRedo.ts:42](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L42)* Returns LazilyTransformingAstService version keys referenced by this entry's oldData. Default implementation returns empty — override in entries that store oldData. **Returns:** *number[]* --- ## RemoveRowsCommand URL: https://hyperformula.handsontable.com/docs/api/classes/removerowscommand # RemoveRowsCommand ## Constructors ### constructor \+ **new RemoveRowsCommand**(`sheet`: number, `indexes`: [ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[]): *[RemoveRowsCommand](https://hyperformula.handsontable.com/docs/api/classes/removerowscommand.md)* *Defined in [src/Operations.ts:60](https://github.com/handsontable/hyperformula/blob/a18429c/src/Operations.ts#L60)* **Parameters:** Name | Type | ------ | ------ | `sheet` | number | `indexes` | [ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[] | **Returns:** *[RemoveRowsCommand](https://hyperformula.handsontable.com/docs/api/classes/removerowscommand.md)* ## Properties ### indexes • **indexes**: *[ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[]* *Defined in [src/Operations.ts:63](https://github.com/handsontable/hyperformula/blob/a18429c/src/Operations.ts#L63)* ___ ### sheet • **sheet**: *number* *Defined in [src/Operations.ts:62](https://github.com/handsontable/hyperformula/blob/a18429c/src/Operations.ts#L62)* ## Methods ### normalizedIndexes ▸ **normalizedIndexes**(): *[ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[]* *Defined in [src/Operations.ts:67](https://github.com/handsontable/hyperformula/blob/a18429c/src/Operations.ts#L67)* **Returns:** *[ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[]* ___ ### rowsSpans ▸ **rowsSpans**(): *[RowsSpan](https://hyperformula.handsontable.com/docs/api/classes/rowsspan.md)[]* *Defined in [src/Operations.ts:71](https://github.com/handsontable/hyperformula/blob/a18429c/src/Operations.ts#L71)* **Returns:** *[RowsSpan](https://hyperformula.handsontable.com/docs/api/classes/rowsspan.md)[]* --- ## RemoveRowsUndoEntry URL: https://hyperformula.handsontable.com/docs/api/classes/removerowsundoentry # RemoveRowsUndoEntry ## Constructors ### constructor \+ **new RemoveRowsUndoEntry**(`command`: [RemoveRowsCommand](https://hyperformula.handsontable.com/docs/api/classes/removerowscommand.md), `rowsRemovals`: [RowsRemoval](https://hyperformula.handsontable.com/docs/api/interfaces/rowsremoval.md)[]): *[RemoveRowsUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/removerowsundoentry.md)* *Defined in [src/UndoRedo.ts:47](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L47)* **Parameters:** Name | Type | ------ | ------ | `command` | [RemoveRowsCommand](https://hyperformula.handsontable.com/docs/api/classes/removerowscommand.md) | `rowsRemovals` | [RowsRemoval](https://hyperformula.handsontable.com/docs/api/interfaces/rowsremoval.md)[] | **Returns:** *[RemoveRowsUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/removerowsundoentry.md)* ## Properties ### command • **command**: *[RemoveRowsCommand](https://hyperformula.handsontable.com/docs/api/classes/removerowscommand.md)* *Defined in [src/UndoRedo.ts:49](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L49)* ___ ### rowsRemovals • **rowsRemovals**: *[RowsRemoval](https://hyperformula.handsontable.com/docs/api/interfaces/rowsremoval.md)[]* *Defined in [src/UndoRedo.ts:50](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L50)* ## Methods ### doRedo ▸ **doRedo**(`undoRedo`: [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md)): *void* *Defined in [src/UndoRedo.ts:59](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L59)* **Parameters:** Name | Type | ------ | ------ | `undoRedo` | [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md) | **Returns:** *void* ___ ### doUndo ▸ **doUndo**(`undoRedo`: [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md)): *void* *Defined in [src/UndoRedo.ts:55](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L55)* **Parameters:** Name | Type | ------ | ------ | `undoRedo` | [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md) | **Returns:** *void* ___ ### getReferencedOldDataVersions ▸ **getReferencedOldDataVersions**(): *number[]* *Defined in [src/UndoRedo.ts:63](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L63)* **Returns:** *number[]* --- ## NamedExpressionNameIsAlreadyTakenError URL: https://hyperformula.handsontable.com/docs/api/classes/namedexpressionnameisalreadytakenerror # NamedExpressionNameIsAlreadyTakenError Error thrown when the given named expression already exists in the workbook and therefore it cannot be added. ## Constructors ### constructor \+ **new NamedExpressionNameIsAlreadyTakenError**(`expressionName`: string): *[NamedExpressionNameIsAlreadyTakenError](https://hyperformula.handsontable.com/docs/api/classes/namedexpressionnameisalreadytakenerror.md)* *Defined in [src/errors.ts:83](https://github.com/handsontable/hyperformula/blob/a18429c/src/errors.ts#L83)* **Parameters:** Name | Type | ------ | ------ | `expressionName` | string | **Returns:** *[NamedExpressionNameIsAlreadyTakenError](https://hyperformula.handsontable.com/docs/api/classes/namedexpressionnameisalreadytakenerror.md)* ## Properties ### message • **message**: *string* ___ ### name • **name**: *string* ___ ### stack • **stack**? : *undefined | string* ___ ### Error ▪ **Error**: *ErrorConstructor* --- ## RemoveSheetUndoEntry URL: https://hyperformula.handsontable.com/docs/api/classes/removesheetundoentry # RemoveSheetUndoEntry ## Constructors ### constructor \+ **new RemoveSheetUndoEntry**(`sheetName`: string, `sheetId`: number, `oldSheetContent`: [ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell)[][], `scopedNamedExpressions`: [[InternalNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/internalnamedexpression.md), [ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell)][]): *[RemoveSheetUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/removesheetundoentry.md)* *Defined in [src/UndoRedo.ts:276](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L276)* **Parameters:** Name | Type | ------ | ------ | `sheetName` | string | `sheetId` | number | `oldSheetContent` | [ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell)[][] | `scopedNamedExpressions` | [[InternalNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/internalnamedexpression.md), [ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell)][] | **Returns:** *[RemoveSheetUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/removesheetundoentry.md)* ## Properties ### oldSheetContent • **oldSheetContent**: *[ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell)[][]* *Defined in [src/UndoRedo.ts:280](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L280)* ___ ### scopedNamedExpressions • **scopedNamedExpressions**: *[[InternalNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/internalnamedexpression.md), [ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell)][]* *Defined in [src/UndoRedo.ts:281](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L281)* ___ ### sheetId • **sheetId**: *number* *Defined in [src/UndoRedo.ts:279](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L279)* ___ ### sheetName • **sheetName**: *string* *Defined in [src/UndoRedo.ts:278](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L278)* ## Methods ### doRedo ▸ **doRedo**(`undoRedo`: [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md)): *void* *Defined in [src/UndoRedo.ts:290](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L290)* **Parameters:** Name | Type | ------ | ------ | `undoRedo` | [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md) | **Returns:** *void* ___ ### doUndo ▸ **doUndo**(`undoRedo`: [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md)): *void* *Defined in [src/UndoRedo.ts:286](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L286)* **Parameters:** Name | Type | ------ | ------ | `undoRedo` | [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md) | **Returns:** *void* ___ ### getReferencedOldDataVersions ▸ **getReferencedOldDataVersions**(): *number[]* *Defined in [src/UndoRedo.ts:42](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L42)* Returns LazilyTransformingAstService version keys referenced by this entry's oldData. Default implementation returns empty — override in entries that store oldData. **Returns:** *number[]* --- ## RowSearchStrategy URL: https://hyperformula.handsontable.com/docs/api/classes/rowsearchstrategy # RowSearchStrategy ## Constructors ### constructor \+ **new RowSearchStrategy**(`dependencyGraph`: DependencyGraph): *[RowSearchStrategy](https://hyperformula.handsontable.com/docs/api/classes/rowsearchstrategy.md)* *Defined in [src/Lookup/RowSearchStrategy.ts:12](https://github.com/handsontable/hyperformula/blob/a18429c/src/Lookup/RowSearchStrategy.ts#L12)* **Parameters:** Name | Type | ------ | ------ | `dependencyGraph` | DependencyGraph | **Returns:** *[RowSearchStrategy](https://hyperformula.handsontable.com/docs/api/classes/rowsearchstrategy.md)* ## Methods ### advancedFind ▸ **advancedFind**(`keyMatcher`: function, `rangeValue`: [SimpleRangeValue](https://hyperformula.handsontable.com/docs/api/classes/simplerangevalue.md), `__namedParameters`: object): *number* *Defined in [src/Lookup/AdvancedFind.ts:27](https://github.com/handsontable/hyperformula/blob/a18429c/src/Lookup/AdvancedFind.ts#L27)* **Parameters:** ▪ **keyMatcher**: *function* ▸ (`arg`: RawInterpreterValue): *boolean* **Parameters:** Name | Type | ------ | ------ | `arg` | RawInterpreterValue | ▪ **rangeValue**: *[SimpleRangeValue](https://hyperformula.handsontable.com/docs/api/classes/simplerangevalue.md)* ▪`Default value` **__namedParameters**: *object*= { returnOccurrence: 'first' } Name | Type | ------ | ------ | `returnOccurrence` | undefined | "first" | "last" | **Returns:** *number* ___ ### find ▸ **find**(`searchKey`: RawNoErrorScalarValue, `rangeValue`: [SimpleRangeValue](https://hyperformula.handsontable.com/docs/api/classes/simplerangevalue.md), `searchOptions`: [SearchOptions](https://hyperformula.handsontable.com/docs/api/interfaces/searchoptions.md)): *number* *Defined in [src/Lookup/RowSearchStrategy.ts:20](https://github.com/handsontable/hyperformula/blob/a18429c/src/Lookup/RowSearchStrategy.ts#L20)* **Parameters:** Name | Type | ------ | ------ | `searchKey` | RawNoErrorScalarValue | `rangeValue` | [SimpleRangeValue](https://hyperformula.handsontable.com/docs/api/classes/simplerangevalue.md) | `searchOptions` | [SearchOptions](https://hyperformula.handsontable.com/docs/api/interfaces/searchoptions.md) | **Returns:** *number* --- ## RenameSheetUndoEntry URL: https://hyperformula.handsontable.com/docs/api/classes/renamesheetundoentry # RenameSheetUndoEntry Undo entry for renaming a sheet. When renaming a sheet to a name that was previously referenced (but didn't exist), a placeholder sheet gets merged into the renamed sheet. In this case: - `version` contains the transformation version for restoring formulas during undo - `mergedPlaceholderSheetId` contains the ID of the placeholder sheet that was merged When renaming to a name not previously referenced, both optional params are undefined. ## Constructors ### constructor \+ **new RenameSheetUndoEntry**(`sheetId`: number, `oldName`: string, `newName`: string, `version?`: undefined | number, `mergedPlaceholderSheetId?`: undefined | number): *[RenameSheetUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/renamesheetundoentry.md)* *Defined in [src/UndoRedo.ts:305](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L305)* **Parameters:** Name | Type | ------ | ------ | `sheetId` | number | `oldName` | string | `newName` | string | `version?` | undefined | number | `mergedPlaceholderSheetId?` | undefined | number | **Returns:** *[RenameSheetUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/renamesheetundoentry.md)* ## Properties ### mergedPlaceholderSheetId • **mergedPlaceholderSheetId**? : *undefined | number* *Defined in [src/UndoRedo.ts:311](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L311)* ___ ### newName • **newName**: *string* *Defined in [src/UndoRedo.ts:309](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L309)* ___ ### oldName • **oldName**: *string* *Defined in [src/UndoRedo.ts:308](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L308)* ___ ### sheetId • **sheetId**: *number* *Defined in [src/UndoRedo.ts:307](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L307)* ___ ### version • **version**? : *undefined | number* *Defined in [src/UndoRedo.ts:310](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L310)* ## Methods ### doRedo ▸ **doRedo**(`undoRedo`: [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md)): *void* *Defined in [src/UndoRedo.ts:320](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L320)* **Parameters:** Name | Type | ------ | ------ | `undoRedo` | [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md) | **Returns:** *void* ___ ### doUndo ▸ **doUndo**(`undoRedo`: [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md)): *void* *Defined in [src/UndoRedo.ts:316](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L316)* **Parameters:** Name | Type | ------ | ------ | `undoRedo` | [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md) | **Returns:** *void* ___ ### getReferencedOldDataVersions ▸ **getReferencedOldDataVersions**(): *number[]* *Defined in [src/UndoRedo.ts:324](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L324)* **Returns:** *number[]* --- ## SetCellContentsUndoEntry URL: https://hyperformula.handsontable.com/docs/api/classes/setcellcontentsundoentry # SetCellContentsUndoEntry ## Constructors ### constructor \+ **new SetCellContentsUndoEntry**(`cellContents`: object[]): *[SetCellContentsUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/setcellcontentsundoentry.md)* *Defined in [src/UndoRedo.ts:346](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L346)* **Parameters:** Name | Type | ------ | ------ | `cellContents` | object[] | **Returns:** *[SetCellContentsUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/setcellcontentsundoentry.md)* ## Properties ### cellContents • **cellContents**: *object[]* *Defined in [src/UndoRedo.ts:348](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L348)* ## Methods ### doRedo ▸ **doRedo**(`undoRedo`: [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md)): *void* *Defined in [src/UndoRedo.ts:361](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L361)* **Parameters:** Name | Type | ------ | ------ | `undoRedo` | [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md) | **Returns:** *void* ___ ### doUndo ▸ **doUndo**(`undoRedo`: [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md)): *void* *Defined in [src/UndoRedo.ts:357](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L357)* **Parameters:** Name | Type | ------ | ------ | `undoRedo` | [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md) | **Returns:** *void* ___ ### getReferencedOldDataVersions ▸ **getReferencedOldDataVersions**(): *number[]* *Defined in [src/UndoRedo.ts:42](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L42)* Returns LazilyTransformingAstService version keys referenced by this entry's oldData. Default implementation returns empty — override in entries that store oldData. **Returns:** *number[]* --- ## Serialization URL: https://hyperformula.handsontable.com/docs/api/classes/serialization # Serialization ## Constructors ### constructor \+ **new Serialization**(`dependencyGraph`: DependencyGraph, `unparser`: Unparser, `exporter`: [Exporter](https://hyperformula.handsontable.com/docs/api/classes/exporter.md)): *[Serialization](https://hyperformula.handsontable.com/docs/api/classes/serialization.md)* *Defined in [src/Serialization.ts:23](https://github.com/handsontable/hyperformula/blob/a18429c/src/Serialization.ts#L23)* **Parameters:** Name | Type | ------ | ------ | `dependencyGraph` | DependencyGraph | `unparser` | Unparser | `exporter` | [Exporter](https://hyperformula.handsontable.com/docs/api/classes/exporter.md) | **Returns:** *[Serialization](https://hyperformula.handsontable.com/docs/api/classes/serialization.md)* ## Methods ### genericAllSheetsGetter ▸ **genericAllSheetsGetter**‹**T**›(`sheetGetter`: function): *Record‹string, T›* *Defined in [src/Serialization.ts:115](https://github.com/handsontable/hyperformula/blob/a18429c/src/Serialization.ts#L115)* **Type parameters:** ▪ **T** **Parameters:** ▪ **sheetGetter**: *function* ▸ (`sheet`: number): *T* **Parameters:** Name | Type | ------ | ------ | `sheet` | number | **Returns:** *Record‹string, T›* ___ ### genericSheetGetter ▸ **genericSheetGetter**‹**T**›(`sheet`: number, `getter`: function): *T[][]* *Defined in [src/Serialization.ts:84](https://github.com/handsontable/hyperformula/blob/a18429c/src/Serialization.ts#L84)* **Type parameters:** ▪ **T** **Parameters:** ▪ **sheet**: *number* ▪ **getter**: *function* ▸ (`address`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *T* **Parameters:** Name | Type | ------ | ------ | `address` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | **Returns:** *T[][]* ___ ### getAllNamedExpressionsSerialized ▸ **getAllNamedExpressionsSerialized**(): *[SerializedNamedExpression](https://hyperformula.handsontable.com/docs/api/interfaces/serializednamedexpression.md)[]* *Defined in [src/Serialization.ts:140](https://github.com/handsontable/hyperformula/blob/a18429c/src/Serialization.ts#L140)* **Returns:** *[SerializedNamedExpression](https://hyperformula.handsontable.com/docs/api/interfaces/serializednamedexpression.md)[]* ___ ### getAllSheetsFormulas ▸ **getAllSheetsFormulas**(): *Record‹string, [Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹string›[][]›* *Defined in [src/Serialization.ts:132](https://github.com/handsontable/hyperformula/blob/a18429c/src/Serialization.ts#L132)* **Returns:** *Record‹string, [Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹string›[][]›* ___ ### getAllSheetsSerialized ▸ **getAllSheetsSerialized**(): *Record‹string, [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent)[][]›* *Defined in [src/Serialization.ts:136](https://github.com/handsontable/hyperformula/blob/a18429c/src/Serialization.ts#L136)* **Returns:** *Record‹string, [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent)[][]›* ___ ### getAllSheetsValues ▸ **getAllSheetsValues**(): *Record‹string, [CellValue](https://hyperformula.handsontable.com/docs/api/globals.md#cellvalue)[][]›* *Defined in [src/Serialization.ts:128](https://github.com/handsontable/hyperformula/blob/a18429c/src/Serialization.ts#L128)* **Returns:** *Record‹string, [CellValue](https://hyperformula.handsontable.com/docs/api/globals.md#cellvalue)[][]›* ___ ### getCellFormula ▸ **getCellFormula**(`address`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), `targetAddress?`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹string›* *Defined in [src/Serialization.ts:42](https://github.com/handsontable/hyperformula/blob/a18429c/src/Serialization.ts#L42)* **Parameters:** Name | Type | ------ | ------ | `address` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | `targetAddress?` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | **Returns:** *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹string›* ___ ### getCellHyperlink ▸ **getCellHyperlink**(`address`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹string›* *Defined in [src/Serialization.ts:31](https://github.com/handsontable/hyperformula/blob/a18429c/src/Serialization.ts#L31)* **Parameters:** Name | Type | ------ | ------ | `address` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | **Returns:** *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹string›* ___ ### getCellSerialized ▸ **getCellSerialized**(`address`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), `targetAddress?`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *[RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent)* *Defined in [src/Serialization.ts:64](https://github.com/handsontable/hyperformula/blob/a18429c/src/Serialization.ts#L64)* **Parameters:** Name | Type | ------ | ------ | `address` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | `targetAddress?` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | **Returns:** *[RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent)* ___ ### getCellValue ▸ **getCellValue**(`address`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *[CellValue](https://hyperformula.handsontable.com/docs/api/globals.md#cellvalue)* *Defined in [src/Serialization.ts:68](https://github.com/handsontable/hyperformula/blob/a18429c/src/Serialization.ts#L68)* **Parameters:** Name | Type | ------ | ------ | `address` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | **Returns:** *[CellValue](https://hyperformula.handsontable.com/docs/api/globals.md#cellvalue)* ___ ### getRawValue ▸ **getRawValue**(`address`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *[RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent)* *Defined in [src/Serialization.ts:72](https://github.com/handsontable/hyperformula/blob/a18429c/src/Serialization.ts#L72)* **Parameters:** Name | Type | ------ | ------ | `address` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | **Returns:** *[RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent)* ___ ### getSheetFormulas ▸ **getSheetFormulas**(`sheet`: number): *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹string›[][]* *Defined in [src/Serialization.ts:80](https://github.com/handsontable/hyperformula/blob/a18429c/src/Serialization.ts#L80)* **Parameters:** Name | Type | ------ | ------ | `sheet` | number | **Returns:** *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹string›[][]* ___ ### getSheetSerialized ▸ **getSheetSerialized**(`sheet`: number): *[RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent)[][]* *Defined in [src/Serialization.ts:124](https://github.com/handsontable/hyperformula/blob/a18429c/src/Serialization.ts#L124)* **Parameters:** Name | Type | ------ | ------ | `sheet` | number | **Returns:** *[RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent)[][]* ___ ### getSheetValues ▸ **getSheetValues**(`sheet`: number): *[CellValue](https://hyperformula.handsontable.com/docs/api/globals.md#cellvalue)[][]* *Defined in [src/Serialization.ts:76](https://github.com/handsontable/hyperformula/blob/a18429c/src/Serialization.ts#L76)* **Parameters:** Name | Type | ------ | ------ | `sheet` | number | **Returns:** *[CellValue](https://hyperformula.handsontable.com/docs/api/globals.md#cellvalue)[][]* ___ ### withNewConfig ▸ **withNewConfig**(`newConfig`: [Config](https://hyperformula.handsontable.com/docs/api/classes/config.md), `namedExpressions`: [NamedExpressions](https://hyperformula.handsontable.com/docs/api/classes/namedexpressions.md)): *[Serialization](https://hyperformula.handsontable.com/docs/api/classes/serialization.md)* *Defined in [src/Serialization.ts:158](https://github.com/handsontable/hyperformula/blob/a18429c/src/Serialization.ts#L158)* **Parameters:** Name | Type | ------ | ------ | `newConfig` | [Config](https://hyperformula.handsontable.com/docs/api/classes/config.md) | `namedExpressions` | [NamedExpressions](https://hyperformula.handsontable.com/docs/api/classes/namedexpressions.md) | **Returns:** *[Serialization](https://hyperformula.handsontable.com/docs/api/classes/serialization.md)* --- ## SetColumnOrderUndoEntry URL: https://hyperformula.handsontable.com/docs/api/classes/setcolumnorderundoentry # SetColumnOrderUndoEntry ## Constructors ### constructor \+ **new SetColumnOrderUndoEntry**(`sheetId`: number, `columnMapping`: [number, number][], `oldContent`: [[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), [ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell)][]): *[SetColumnOrderUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/setcolumnorderundoentry.md)* *Defined in [src/UndoRedo.ts:128](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L128)* **Parameters:** Name | Type | ------ | ------ | `sheetId` | number | `columnMapping` | [number, number][] | `oldContent` | [[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), [ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell)][] | **Returns:** *[SetColumnOrderUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/setcolumnorderundoentry.md)* ## Properties ### columnMapping • **columnMapping**: *[number, number][]* *Defined in [src/UndoRedo.ts:131](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L131)* ___ ### oldContent • **oldContent**: *[[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), [ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell)][]* *Defined in [src/UndoRedo.ts:132](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L132)* ___ ### sheetId • **sheetId**: *number* *Defined in [src/UndoRedo.ts:130](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L130)* ## Methods ### doRedo ▸ **doRedo**(`undoRedo`: [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md)): *void* *Defined in [src/UndoRedo.ts:141](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L141)* **Parameters:** Name | Type | ------ | ------ | `undoRedo` | [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md) | **Returns:** *void* ___ ### doUndo ▸ **doUndo**(`undoRedo`: [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md)): *void* *Defined in [src/UndoRedo.ts:137](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L137)* **Parameters:** Name | Type | ------ | ------ | `undoRedo` | [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md) | **Returns:** *void* ___ ### getReferencedOldDataVersions ▸ **getReferencedOldDataVersions**(): *number[]* *Defined in [src/UndoRedo.ts:42](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L42)* Returns LazilyTransformingAstService version keys referenced by this entry's oldData. Default implementation returns empty — override in entries that store oldData. **Returns:** *number[]* --- ## RowsSpan URL: https://hyperformula.handsontable.com/docs/api/classes/rowsspan # RowsSpan ## Constructors ### constructor \+ **new RowsSpan**(`sheet`: number, `rowStart`: number, `rowEnd`: number): *[RowsSpan](https://hyperformula.handsontable.com/docs/api/classes/rowsspan.md)* *Defined in [src/Span.ts:11](https://github.com/handsontable/hyperformula/blob/a18429c/src/Span.ts#L11)* **Parameters:** Name | Type | ------ | ------ | `sheet` | number | `rowStart` | number | `rowEnd` | number | **Returns:** *[RowsSpan](https://hyperformula.handsontable.com/docs/api/classes/rowsspan.md)* ## Properties ### rowEnd • **rowEnd**: *number* *Defined in [src/Span.ts:16](https://github.com/handsontable/hyperformula/blob/a18429c/src/Span.ts#L16)* ___ ### rowStart • **rowStart**: *number* *Defined in [src/Span.ts:15](https://github.com/handsontable/hyperformula/blob/a18429c/src/Span.ts#L15)* ___ ### sheet • **sheet**: *number* *Defined in [src/Span.ts:14](https://github.com/handsontable/hyperformula/blob/a18429c/src/Span.ts#L14)* ## Accessors ### end • **get end**(): *number* *Defined in [src/Span.ts:34](https://github.com/handsontable/hyperformula/blob/a18429c/src/Span.ts#L34)* **Returns:** *number* ___ ### numberOfRows • **get numberOfRows**(): *number* *Defined in [src/Span.ts:26](https://github.com/handsontable/hyperformula/blob/a18429c/src/Span.ts#L26)* **Returns:** *number* ___ ### start • **get start**(): *number* *Defined in [src/Span.ts:30](https://github.com/handsontable/hyperformula/blob/a18429c/src/Span.ts#L30)* **Returns:** *number* ## Methods ### firstRow ▸ **firstRow**(): *[RowsSpan](https://hyperformula.handsontable.com/docs/api/classes/rowsspan.md)* *Defined in [src/Span.ts:64](https://github.com/handsontable/hyperformula/blob/a18429c/src/Span.ts#L64)* **Returns:** *[RowsSpan](https://hyperformula.handsontable.com/docs/api/classes/rowsspan.md)* ___ ### intersect ▸ **intersect**(`otherSpan`: [RowsSpan](https://hyperformula.handsontable.com/docs/api/classes/rowsspan.md)): *[RowsSpan](https://hyperformula.handsontable.com/docs/api/classes/rowsspan.md) | null* *Defined in [src/Span.ts:52](https://github.com/handsontable/hyperformula/blob/a18429c/src/Span.ts#L52)* **Parameters:** Name | Type | ------ | ------ | `otherSpan` | [RowsSpan](https://hyperformula.handsontable.com/docs/api/classes/rowsspan.md) | **Returns:** *[RowsSpan](https://hyperformula.handsontable.com/docs/api/classes/rowsspan.md) | null* ___ ### rows ▸ **rows**(): *IterableIterator‹number›* *Defined in [src/Span.ts:46](https://github.com/handsontable/hyperformula/blob/a18429c/src/Span.ts#L46)* **Returns:** *IterableIterator‹number›* ___ ### fromNumberOfRows ▸ **fromNumberOfRows**(`sheet`: number, `rowStart`: number, `numberOfRows`: number): *[RowsSpan](https://hyperformula.handsontable.com/docs/api/classes/rowsspan.md)‹›* *Defined in [src/Span.ts:38](https://github.com/handsontable/hyperformula/blob/a18429c/src/Span.ts#L38)* **Parameters:** Name | Type | ------ | ------ | `sheet` | number | `rowStart` | number | `numberOfRows` | number | **Returns:** *[RowsSpan](https://hyperformula.handsontable.com/docs/api/classes/rowsspan.md)‹›* ___ ### fromRowStartAndEnd ▸ **fromRowStartAndEnd**(`sheet`: number, `rowStart`: number, `rowEnd`: number): *[RowsSpan](https://hyperformula.handsontable.com/docs/api/classes/rowsspan.md)‹›* *Defined in [src/Span.ts:42](https://github.com/handsontable/hyperformula/blob/a18429c/src/Span.ts#L42)* **Parameters:** Name | Type | ------ | ------ | `sheet` | number | `rowStart` | number | `rowEnd` | number | **Returns:** *[RowsSpan](https://hyperformula.handsontable.com/docs/api/classes/rowsspan.md)‹›* --- ## SetRowOrderUndoEntry URL: https://hyperformula.handsontable.com/docs/api/classes/setroworderundoentry # SetRowOrderUndoEntry ## Constructors ### constructor \+ **new SetRowOrderUndoEntry**(`sheetId`: number, `rowMapping`: [number, number][], `oldContent`: [[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), [ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell)][]): *[SetRowOrderUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/setroworderundoentry.md)* *Defined in [src/UndoRedo.ts:110](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L110)* **Parameters:** Name | Type | ------ | ------ | `sheetId` | number | `rowMapping` | [number, number][] | `oldContent` | [[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), [ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell)][] | **Returns:** *[SetRowOrderUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/setroworderundoentry.md)* ## Properties ### oldContent • **oldContent**: *[[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), [ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell)][]* *Defined in [src/UndoRedo.ts:114](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L114)* ___ ### rowMapping • **rowMapping**: *[number, number][]* *Defined in [src/UndoRedo.ts:113](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L113)* ___ ### sheetId • **sheetId**: *number* *Defined in [src/UndoRedo.ts:112](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L112)* ## Methods ### doRedo ▸ **doRedo**(`undoRedo`: [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md)): *void* *Defined in [src/UndoRedo.ts:123](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L123)* **Parameters:** Name | Type | ------ | ------ | `undoRedo` | [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md) | **Returns:** *void* ___ ### doUndo ▸ **doUndo**(`undoRedo`: [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md)): *void* *Defined in [src/UndoRedo.ts:119](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L119)* **Parameters:** Name | Type | ------ | ------ | `undoRedo` | [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md) | **Returns:** *void* ___ ### getReferencedOldDataVersions ▸ **getReferencedOldDataVersions**(): *number[]* *Defined in [src/UndoRedo.ts:42](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L42)* Returns LazilyTransformingAstService version keys referenced by this entry's oldData. Default implementation returns empty — override in entries that store oldData. **Returns:** *number[]* --- ## SetSheetContentUndoEntry URL: https://hyperformula.handsontable.com/docs/api/classes/setsheetcontentundoentry # SetSheetContentUndoEntry ## Constructors ### constructor \+ **new SetSheetContentUndoEntry**(`sheetId`: number, `oldSheetContent`: [ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell)[][], `newSheetContent`: [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent)[][]): *[SetSheetContentUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/setsheetcontentundoentry.md)* *Defined in [src/UndoRedo.ts:146](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L146)* **Parameters:** Name | Type | ------ | ------ | `sheetId` | number | `oldSheetContent` | [ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell)[][] | `newSheetContent` | [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent)[][] | **Returns:** *[SetSheetContentUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/setsheetcontentundoentry.md)* ## Properties ### newSheetContent • **newSheetContent**: *[RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent)[][]* *Defined in [src/UndoRedo.ts:150](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L150)* ___ ### oldSheetContent • **oldSheetContent**: *[ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell)[][]* *Defined in [src/UndoRedo.ts:149](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L149)* ___ ### sheetId • **sheetId**: *number* *Defined in [src/UndoRedo.ts:148](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L148)* ## Methods ### doRedo ▸ **doRedo**(`undoRedo`: [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md)): *void* *Defined in [src/UndoRedo.ts:159](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L159)* **Parameters:** Name | Type | ------ | ------ | `undoRedo` | [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md) | **Returns:** *void* ___ ### doUndo ▸ **doUndo**(`undoRedo`: [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md)): *void* *Defined in [src/UndoRedo.ts:155](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L155)* **Parameters:** Name | Type | ------ | ------ | `undoRedo` | [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md) | **Returns:** *void* ___ ### getReferencedOldDataVersions ▸ **getReferencedOldDataVersions**(): *number[]* *Defined in [src/UndoRedo.ts:42](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L42)* Returns LazilyTransformingAstService version keys referenced by this entry's oldData. Default implementation returns empty — override in entries that store oldData. **Returns:** *number[]* --- ## SheetsNotEqual URL: https://hyperformula.handsontable.com/docs/api/classes/sheetsnotequal # SheetsNotEqual Error thrown when the given sheets are not equal. ## Constructors ### constructor \+ **new SheetsNotEqual**(`sheet1`: number, `sheet2`: number): *[SheetsNotEqual](https://hyperformula.handsontable.com/docs/api/classes/sheetsnotequal.md)* *Defined in [src/errors.ts:74](https://github.com/handsontable/hyperformula/blob/a18429c/src/errors.ts#L74)* **Parameters:** Name | Type | ------ | ------ | `sheet1` | number | `sheet2` | number | **Returns:** *[SheetsNotEqual](https://hyperformula.handsontable.com/docs/api/classes/sheetsnotequal.md)* ## Properties ### message • **message**: *string* ___ ### name • **name**: *string* ___ ### stack • **stack**? : *undefined | string* ___ ### Error ▪ **Error**: *ErrorConstructor* --- ## SimpleRangeValue URL: https://hyperformula.handsontable.com/docs/api/classes/simplerangevalue # SimpleRangeValue A class that represents a range of data. ## Constructors ### constructor \+ **new SimpleRangeValue**(`_data?`: InternalScalarValue[][], `range?`: [AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md), `dependencyGraph?`: DependencyGraph, `_hasOnlyNumbers?`: undefined | false | true): *[SimpleRangeValue](https://hyperformula.handsontable.com/docs/api/classes/simplerangevalue.md)* *Defined in [src/SimpleRangeValue.ts:21](https://github.com/handsontable/hyperformula/blob/a18429c/src/SimpleRangeValue.ts#L21)* In most cases, it's more convenient to create a `SimpleRangeValue` object by calling one of the [static factory methods](#fromrange). **Parameters:** Name | Type | ------ | ------ | `_data?` | InternalScalarValue[][] | `range?` | [AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md) | `dependencyGraph?` | DependencyGraph | `_hasOnlyNumbers?` | undefined | false | true | **Returns:** *[SimpleRangeValue](https://hyperformula.handsontable.com/docs/api/classes/simplerangevalue.md)* ## Properties ### range • **range**? : *[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)* *Defined in [src/SimpleRangeValue.ts:33](https://github.com/handsontable/hyperformula/blob/a18429c/src/SimpleRangeValue.ts#L33)* A property that represents the address of the range. ___ ### size • **size**: *[ArraySize](https://hyperformula.handsontable.com/docs/api/classes/arraysize.md)* *Defined in [src/SimpleRangeValue.ts:21](https://github.com/handsontable/hyperformula/blob/a18429c/src/SimpleRangeValue.ts#L21)* A property that represents the size of the range. ## Accessors ### data • **get data**(): *InternalScalarValue[][]* *Defined in [src/SimpleRangeValue.ts:45](https://github.com/handsontable/hyperformula/blob/a18429c/src/SimpleRangeValue.ts#L45)* Returns the range data as a 2D array. **Returns:** *InternalScalarValue[][]* ## Methods ### effectiveAddressesFromData ▸ **effectiveAddressesFromData**(`leftCorner`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *IterableIterator‹[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)›* *Defined in [src/SimpleRangeValue.ts:125](https://github.com/handsontable/hyperformula/blob/a18429c/src/SimpleRangeValue.ts#L125)* Generates the addresses of the cells contained in the range assuming the provided address is the left corner of the range. **Parameters:** Name | Type | ------ | ------ | `leftCorner` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | **Returns:** *IterableIterator‹[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)›* ___ ### entriesFromTopLeftCorner ▸ **entriesFromTopLeftCorner**(`leftCorner`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *IterableIterator‹[InternalScalarValue, [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)]›* *Defined in [src/SimpleRangeValue.ts:139](https://github.com/handsontable/hyperformula/blob/a18429c/src/SimpleRangeValue.ts#L139)* Generates values and addresses of the cells contained in the range assuming the provided address is the left corner of the range. This method combines the functionalities of [`iterateValuesFromTopLeftCorner()`](#iteratevaluesfromtopleftcorner) and [`effectiveAddressesFromData()`](#effectiveaddressesfromdata). **Parameters:** Name | Type | ------ | ------ | `leftCorner` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | **Returns:** *IterableIterator‹[InternalScalarValue, [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)]›* ___ ### hasOnlyNumbers ▸ **hasOnlyNumbers**(): *boolean* *Defined in [src/SimpleRangeValue.ts:165](https://github.com/handsontable/hyperformula/blob/a18429c/src/SimpleRangeValue.ts#L165)* Returns `true` if and only if the range contains only numeric values. **Returns:** *boolean* ___ ### height ▸ **height**(): *number* *Defined in [src/SimpleRangeValue.ts:102](https://github.com/handsontable/hyperformula/blob/a18429c/src/SimpleRangeValue.ts#L102)* Returns the number of rows contained in the range. **Returns:** *number* ___ ### isAdHoc ▸ **isAdHoc**(): *boolean* *Defined in [src/SimpleRangeValue.ts:88](https://github.com/handsontable/hyperformula/blob/a18429c/src/SimpleRangeValue.ts#L88)* Returns `true` if and only if the `SimpleRangeValue` has no address set. **Returns:** *boolean* ___ ### iterateValuesFromTopLeftCorner ▸ **iterateValuesFromTopLeftCorner**(): *IterableIterator‹InternalScalarValue›* *Defined in [src/SimpleRangeValue.ts:151](https://github.com/handsontable/hyperformula/blob/a18429c/src/SimpleRangeValue.ts#L151)* Generates the values of the cells contained in the range assuming the provided address is the left corner of the range. **Returns:** *IterableIterator‹InternalScalarValue›* ___ ### numberOfElements ▸ **numberOfElements**(): *number* *Defined in [src/SimpleRangeValue.ts:158](https://github.com/handsontable/hyperformula/blob/a18429c/src/SimpleRangeValue.ts#L158)* Returns the number of cells contained in the range. **Returns:** *number* ___ ### rawData ▸ **rawData**(): *InternalScalarValue[][]* *Defined in [src/SimpleRangeValue.ts:196](https://github.com/handsontable/hyperformula/blob/a18429c/src/SimpleRangeValue.ts#L196)* Returns the range data as a 2D array. Internal use only. **Returns:** *InternalScalarValue[][]* ___ ### rawNumbers ▸ **rawNumbers**(): *number[][]* *Defined in [src/SimpleRangeValue.ts:186](https://github.com/handsontable/hyperformula/blob/a18429c/src/SimpleRangeValue.ts#L186)* Returns the range data as a 2D array of numbers. Internal use only. **Returns:** *number[][]* ___ ### sameDimensionsAs ▸ **sameDimensionsAs**(`other`: [SimpleRangeValue](https://hyperformula.handsontable.com/docs/api/classes/simplerangevalue.md)): *boolean* *Defined in [src/SimpleRangeValue.ts:204](https://github.com/handsontable/hyperformula/blob/a18429c/src/SimpleRangeValue.ts#L204)* Returns `true` if and only if the range has the same width and height as the `other` range object. **Parameters:** Name | Type | ------ | ------ | `other` | [SimpleRangeValue](https://hyperformula.handsontable.com/docs/api/classes/simplerangevalue.md) | **Returns:** *boolean* ___ ### valuesFromTopLeftCorner ▸ **valuesFromTopLeftCorner**(): *InternalScalarValue[]* *Defined in [src/SimpleRangeValue.ts:109](https://github.com/handsontable/hyperformula/blob/a18429c/src/SimpleRangeValue.ts#L109)* Returns the range data as a 1D array. **Returns:** *InternalScalarValue[]* ___ ### width ▸ **width**(): *number* *Defined in [src/SimpleRangeValue.ts:95](https://github.com/handsontable/hyperformula/blob/a18429c/src/SimpleRangeValue.ts#L95)* Returns the number of columns contained in the range. **Returns:** *number* ___ ### fromRange ▸ **fromRange**(`data`: InternalScalarValue[][], `range`: [AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md), `dependencyGraph`: DependencyGraph): *[SimpleRangeValue](https://hyperformula.handsontable.com/docs/api/classes/simplerangevalue.md)* *Defined in [src/SimpleRangeValue.ts:53](https://github.com/handsontable/hyperformula/blob/a18429c/src/SimpleRangeValue.ts#L53)* A factory method. Returns a `SimpleRangeValue` object with the provided range address and the provided data. **Parameters:** Name | Type | ------ | ------ | `data` | InternalScalarValue[][] | `range` | [AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md) | `dependencyGraph` | DependencyGraph | **Returns:** *[SimpleRangeValue](https://hyperformula.handsontable.com/docs/api/classes/simplerangevalue.md)* ___ ### fromScalar ▸ **fromScalar**(`scalar`: InternalScalarValue): *[SimpleRangeValue](https://hyperformula.handsontable.com/docs/api/classes/simplerangevalue.md)* *Defined in [src/SimpleRangeValue.ts:81](https://github.com/handsontable/hyperformula/blob/a18429c/src/SimpleRangeValue.ts#L81)* A factory method. Returns a `SimpleRangeValue` object that contains a single value. **Parameters:** Name | Type | ------ | ------ | `scalar` | InternalScalarValue | **Returns:** *[SimpleRangeValue](https://hyperformula.handsontable.com/docs/api/classes/simplerangevalue.md)* ___ ### onlyNumbers ▸ **onlyNumbers**(`data`: number[][]): *[SimpleRangeValue](https://hyperformula.handsontable.com/docs/api/classes/simplerangevalue.md)* *Defined in [src/SimpleRangeValue.ts:60](https://github.com/handsontable/hyperformula/blob/a18429c/src/SimpleRangeValue.ts#L60)* A factory method. Returns a `SimpleRangeValue` object with the provided numeric data. **Parameters:** Name | Type | ------ | ------ | `data` | number[][] | **Returns:** *[SimpleRangeValue](https://hyperformula.handsontable.com/docs/api/classes/simplerangevalue.md)* ___ ### onlyRange ▸ **onlyRange**(`range`: [AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md), `dependencyGraph`: DependencyGraph): *[SimpleRangeValue](https://hyperformula.handsontable.com/docs/api/classes/simplerangevalue.md)* *Defined in [src/SimpleRangeValue.ts:74](https://github.com/handsontable/hyperformula/blob/a18429c/src/SimpleRangeValue.ts#L74)* A factory method. Returns a `SimpleRangeValue` object with the provided range address. **Parameters:** Name | Type | ------ | ------ | `range` | [AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md) | `dependencyGraph` | DependencyGraph | **Returns:** *[SimpleRangeValue](https://hyperformula.handsontable.com/docs/api/classes/simplerangevalue.md)* ___ ### onlyValues ▸ **onlyValues**(`data`: InternalScalarValue[][]): *[SimpleRangeValue](https://hyperformula.handsontable.com/docs/api/classes/simplerangevalue.md)* *Defined in [src/SimpleRangeValue.ts:67](https://github.com/handsontable/hyperformula/blob/a18429c/src/SimpleRangeValue.ts#L67)* A factory method. Returns a `SimpleRangeValue` object with the provided data. **Parameters:** Name | Type | ------ | ------ | `data` | InternalScalarValue[][] | **Returns:** *[SimpleRangeValue](https://hyperformula.handsontable.com/docs/api/classes/simplerangevalue.md)* --- ## SimpleStrategy URL: https://hyperformula.handsontable.com/docs/api/classes/simplestrategy # SimpleStrategy ## Constructors ### constructor \+ **new SimpleStrategy**(`dependencyGraph`: DependencyGraph, `columnIndex`: [ColumnSearchStrategy](https://hyperformula.handsontable.com/docs/api/interfaces/columnsearchstrategy.md), `parser`: ParserWithCaching, `stats`: [Statistics](https://hyperformula.handsontable.com/docs/api/classes/statistics.md), `cellContentParser`: [CellContentParser](https://hyperformula.handsontable.com/docs/api/classes/cellcontentparser.md), `arraySizePredictor`: [ArraySizePredictor](https://hyperformula.handsontable.com/docs/api/classes/arraysizepredictor.md)): *[SimpleStrategy](https://hyperformula.handsontable.com/docs/api/classes/simplestrategy.md)* *Defined in [src/GraphBuilder.ts:67](https://github.com/handsontable/hyperformula/blob/a18429c/src/GraphBuilder.ts#L67)* **Parameters:** Name | Type | ------ | ------ | `dependencyGraph` | DependencyGraph | `columnIndex` | [ColumnSearchStrategy](https://hyperformula.handsontable.com/docs/api/interfaces/columnsearchstrategy.md) | `parser` | ParserWithCaching | `stats` | [Statistics](https://hyperformula.handsontable.com/docs/api/classes/statistics.md) | `cellContentParser` | [CellContentParser](https://hyperformula.handsontable.com/docs/api/classes/cellcontentparser.md) | `arraySizePredictor` | [ArraySizePredictor](https://hyperformula.handsontable.com/docs/api/classes/arraysizepredictor.md) | **Returns:** *[SimpleStrategy](https://hyperformula.handsontable.com/docs/api/classes/simplestrategy.md)* ## Methods ### run ▸ **run**(`sheets`: [Sheets](https://hyperformula.handsontable.com/docs/api/globals.md#sheets)): *[Dependencies](https://hyperformula.handsontable.com/docs/api/globals.md#dependencies)* *Defined in [src/GraphBuilder.ts:78](https://github.com/handsontable/hyperformula/blob/a18429c/src/GraphBuilder.ts#L78)* **Parameters:** Name | Type | ------ | ------ | `sheets` | [Sheets](https://hyperformula.handsontable.com/docs/api/globals.md#sheets) | **Returns:** *[Dependencies](https://hyperformula.handsontable.com/docs/api/globals.md#dependencies)* --- ## SourceLocationHasArrayError URL: https://hyperformula.handsontable.com/docs/api/classes/sourcelocationhasarrayerror # SourceLocationHasArrayError Error thrown when selected source location has an array. ## Constructors ### constructor \+ **new SourceLocationHasArrayError**(): *[SourceLocationHasArrayError](https://hyperformula.handsontable.com/docs/api/classes/sourcelocationhasarrayerror.md)* *Defined in [src/errors.ts:350](https://github.com/handsontable/hyperformula/blob/a18429c/src/errors.ts#L350)* **Returns:** *[SourceLocationHasArrayError](https://hyperformula.handsontable.com/docs/api/classes/sourcelocationhasarrayerror.md)* ## Properties ### message • **message**: *string* ___ ### name • **name**: *string* ___ ### stack • **stack**? : *undefined | string* ___ ### Error ▪ **Error**: *ErrorConstructor* --- ## TargetLocationHasArrayError URL: https://hyperformula.handsontable.com/docs/api/classes/targetlocationhasarrayerror # TargetLocationHasArrayError Error thrown when selected target location has an array. **`see`** [addRows](https://hyperformula.handsontable.com/docs/api/classes/arrayvalue.md#addrows) **`see`** [addColumns](https://hyperformula.handsontable.com/docs/api/classes/arrayvalue.md#addcolumns) **`see`** [moveCells](https://hyperformula.handsontable.com/docs/api/classes/crudoperations.md#movecells) **`see`** [moveRows](https://hyperformula.handsontable.com/docs/api/classes/crudoperations.md#moverows) **`see`** [moveColumns](https://hyperformula.handsontable.com/docs/api/classes/crudoperations.md#movecolumns) **`see`** [paste](https://hyperformula.handsontable.com/docs/api/classes/crudoperations.md#paste) ## Constructors ### constructor \+ **new TargetLocationHasArrayError**(): *[TargetLocationHasArrayError](https://hyperformula.handsontable.com/docs/api/classes/targetlocationhasarrayerror.md)* *Defined in [src/errors.ts:366](https://github.com/handsontable/hyperformula/blob/a18429c/src/errors.ts#L366)* **Returns:** *[TargetLocationHasArrayError](https://hyperformula.handsontable.com/docs/api/classes/targetlocationhasarrayerror.md)* ## Properties ### message • **message**: *string* ___ ### name • **name**: *string* ___ ### stack • **stack**? : *undefined | string* ___ ### Error ▪ **Error**: *ErrorConstructor* --- ## Statistics URL: https://hyperformula.handsontable.com/docs/api/classes/statistics # Statistics Provides tracking performance statistics to the engine ## Methods ### end ▸ **end**(`name`: [StatType](https://hyperformula.handsontable.com/docs/api/enums/stattype.md)): *void* *Defined in [src/statistics/Statistics.ts:59](https://github.com/handsontable/hyperformula/blob/a18429c/src/statistics/Statistics.ts#L59)* Stops tracking particular statistic. Raise error if tracking statistic wasn't started. **Parameters:** Name | Type | Description | ------ | ------ | ------ | `name` | [StatType](https://hyperformula.handsontable.com/docs/api/enums/stattype.md) | statistic to stop tracking | **Returns:** *void* ___ ### incrementCriterionFunctionFullCacheUsed ▸ **incrementCriterionFunctionFullCacheUsed**(): *void* *Defined in [src/statistics/Statistics.ts:18](https://github.com/handsontable/hyperformula/blob/a18429c/src/statistics/Statistics.ts#L18)* **Returns:** *void* ___ ### incrementCriterionFunctionPartialCacheUsed ▸ **incrementCriterionFunctionPartialCacheUsed**(): *void* *Defined in [src/statistics/Statistics.ts:24](https://github.com/handsontable/hyperformula/blob/a18429c/src/statistics/Statistics.ts#L24)* **Returns:** *void* ___ ### measure ▸ **measure**‹**T**›(`name`: [StatType](https://hyperformula.handsontable.com/docs/api/enums/stattype.md), `func`: function): *T* *Defined in [src/statistics/Statistics.ts:80](https://github.com/handsontable/hyperformula/blob/a18429c/src/statistics/Statistics.ts#L80)* Measure given statistic as execution of given function. **Type parameters:** ▪ **T** **Parameters:** ▪ **name**: *[StatType](https://hyperformula.handsontable.com/docs/api/enums/stattype.md)* statistic to track ▪ **func**: *function* function to call ▸ (): *T* **Returns:** *T* result of the function call ___ ### reset ▸ **reset**(): *void* *Defined in [src/statistics/Statistics.ts:33](https://github.com/handsontable/hyperformula/blob/a18429c/src/statistics/Statistics.ts#L33)* Resets statistics **Returns:** *void* ___ ### snapshot ▸ **snapshot**(): *Map‹[StatType](https://hyperformula.handsontable.com/docs/api/enums/stattype.md), number›* *Defined in [src/statistics/Statistics.ts:90](https://github.com/handsontable/hyperformula/blob/a18429c/src/statistics/Statistics.ts#L90)* Returns the snapshot of current results **Returns:** *Map‹[StatType](https://hyperformula.handsontable.com/docs/api/enums/stattype.md), number›* ___ ### start ▸ **start**(`name`: [StatType](https://hyperformula.handsontable.com/docs/api/enums/stattype.md)): *void* *Defined in [src/statistics/Statistics.ts:45](https://github.com/handsontable/hyperformula/blob/a18429c/src/statistics/Statistics.ts#L45)* Starts tracking particular statistic. **Parameters:** Name | Type | Description | ------ | ------ | ------ | `name` | [StatType](https://hyperformula.handsontable.com/docs/api/enums/stattype.md) | statistic to start tracking | **Returns:** *void* --- ## SheetNameAlreadyTakenError URL: https://hyperformula.handsontable.com/docs/api/classes/sheetnamealreadytakenerror # SheetNameAlreadyTakenError Error thrown when the sheet of a given name already exists. ## Constructors ### constructor \+ **new SheetNameAlreadyTakenError**(`sheetName`: string): *[SheetNameAlreadyTakenError](https://hyperformula.handsontable.com/docs/api/classes/sheetnamealreadytakenerror.md)* *Defined in [src/errors.ts:29](https://github.com/handsontable/hyperformula/blob/a18429c/src/errors.ts#L29)* **Parameters:** Name | Type | ------ | ------ | `sheetName` | string | **Returns:** *[SheetNameAlreadyTakenError](https://hyperformula.handsontable.com/docs/api/classes/sheetnamealreadytakenerror.md)* ## Properties ### message • **message**: *string* ___ ### name • **name**: *string* ___ ### stack • **stack**? : *undefined | string* ___ ### Error ▪ **Error**: *ErrorConstructor* --- ## UnableToParseError URL: https://hyperformula.handsontable.com/docs/api/classes/unabletoparseerror # UnableToParseError Error thrown when the given value cannot be parsed. Checks against the validity in: **`see`** [buildFromArray](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#static-buildfromarray) **`see`** [buildFromSheets](https://hyperformula.handsontable.com/docs/api/classes/buildenginefactory.md#static-buildfromsheets) **`see`** [[setCellsContents]] ## Constructors ### constructor \+ **new UnableToParseError**(`value`: any): *[UnableToParseError](https://hyperformula.handsontable.com/docs/api/classes/unabletoparseerror.md)* *Defined in [src/errors.ts:160](https://github.com/handsontable/hyperformula/blob/a18429c/src/errors.ts#L160)* **Parameters:** Name | Type | ------ | ------ | `value` | any | **Returns:** *[UnableToParseError](https://hyperformula.handsontable.com/docs/api/classes/unabletoparseerror.md)* ## Properties ### message • **message**: *string* ___ ### name • **name**: *string* ___ ### stack • **stack**? : *undefined | string* ___ ### Error ▪ **Error**: *ErrorConstructor* --- ## CellType URL: https://hyperformula.handsontable.com/docs/api/enums/celltype # CellType ## Enumeration members ### ARRAY • **ARRAY**: = "ARRAY" *Defined in [src/Cell.ts:56](https://github.com/handsontable/hyperformula/blob/a18429c/src/Cell.ts#L56)* ___ ### ARRAYFORMULA • **ARRAYFORMULA**: = "ARRAYFORMULA" *Defined in [src/Cell.ts:58](https://github.com/handsontable/hyperformula/blob/a18429c/src/Cell.ts#L58)* ___ ### EMPTY • **EMPTY**: = "EMPTY" *Defined in [src/Cell.ts:57](https://github.com/handsontable/hyperformula/blob/a18429c/src/Cell.ts#L57)* ___ ### FORMULA • **FORMULA**: = "FORMULA" *Defined in [src/Cell.ts:54](https://github.com/handsontable/hyperformula/blob/a18429c/src/Cell.ts#L54)* ___ ### VALUE • **VALUE**: = "VALUE" *Defined in [src/Cell.ts:55](https://github.com/handsontable/hyperformula/blob/a18429c/src/Cell.ts#L55)* --- ## WorkbookStore URL: https://hyperformula.handsontable.com/docs/api/classes/workbookstore # WorkbookStore ## Methods ### add ▸ **add**(`namedExpression`: [InternalNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/internalnamedexpression.md)): *void* *Defined in [src/NamedExpressions.ts:55](https://github.com/handsontable/hyperformula/blob/a18429c/src/NamedExpressions.ts#L55)* **Parameters:** Name | Type | ------ | ------ | `namedExpression` | [InternalNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/internalnamedexpression.md) | **Returns:** *void* ___ ### get ▸ **get**(`expressionName`: string): *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹[InternalNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/internalnamedexpression.md)›* *Defined in [src/NamedExpressions.ts:59](https://github.com/handsontable/hyperformula/blob/a18429c/src/NamedExpressions.ts#L59)* **Parameters:** Name | Type | ------ | ------ | `expressionName` | string | **Returns:** *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹[InternalNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/internalnamedexpression.md)›* ___ ### getAllNamedExpressions ▸ **getAllNamedExpressions**(): *[InternalNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/internalnamedexpression.md)[]* *Defined in [src/NamedExpressions.ts:80](https://github.com/handsontable/hyperformula/blob/a18429c/src/NamedExpressions.ts#L80)* **Returns:** *[InternalNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/internalnamedexpression.md)[]* ___ ### getExisting ▸ **getExisting**(`expressionName`: string): *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹[InternalNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/internalnamedexpression.md)›* *Defined in [src/NamedExpressions.ts:63](https://github.com/handsontable/hyperformula/blob/a18429c/src/NamedExpressions.ts#L63)* **Parameters:** Name | Type | ------ | ------ | `expressionName` | string | **Returns:** *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹[InternalNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/internalnamedexpression.md)›* ___ ### has ▸ **has**(`expressionName`: string): *boolean* *Defined in [src/NamedExpressions.ts:45](https://github.com/handsontable/hyperformula/blob/a18429c/src/NamedExpressions.ts#L45)* **Parameters:** Name | Type | ------ | ------ | `expressionName` | string | **Returns:** *boolean* ___ ### isNameAvailable ▸ **isNameAvailable**(`expressionName`: string): *boolean* *Defined in [src/NamedExpressions.ts:49](https://github.com/handsontable/hyperformula/blob/a18429c/src/NamedExpressions.ts#L49)* **Parameters:** Name | Type | ------ | ------ | `expressionName` | string | **Returns:** *boolean* ___ ### remove ▸ **remove**(`expressionName`: string): *void* *Defined in [src/NamedExpressions.ts:72](https://github.com/handsontable/hyperformula/blob/a18429c/src/NamedExpressions.ts#L72)* **Parameters:** Name | Type | ------ | ------ | `expressionName` | string | **Returns:** *void* --- ## SheetSizeLimitExceededError URL: https://hyperformula.handsontable.com/docs/api/classes/sheetsizelimitexceedederror # SheetSizeLimitExceededError Error thrown when loaded sheet size exceeds configured limits. ## Constructors ### constructor \+ **new SheetSizeLimitExceededError**(): *[SheetSizeLimitExceededError](https://hyperformula.handsontable.com/docs/api/classes/sheetsizelimitexceedederror.md)* *Defined in [src/errors.ts:38](https://github.com/handsontable/hyperformula/blob/a18429c/src/errors.ts#L38)* **Returns:** *[SheetSizeLimitExceededError](https://hyperformula.handsontable.com/docs/api/classes/sheetsizelimitexceedederror.md)* ## Properties ### message • **message**: *string* ___ ### name • **name**: *string* ___ ### stack • **stack**? : *undefined | string* ___ ### Error ▪ **Error**: *ErrorConstructor* --- ## CellValueJustNumber URL: https://hyperformula.handsontable.com/docs/api/enums/cellvaluejustnumber # CellValueJustNumber ## Enumeration members ### NUMBER • **NUMBER**: = "NUMBER" *Defined in [src/Cell.ts:88](https://github.com/handsontable/hyperformula/blob/a18429c/src/Cell.ts#L88)* --- ## EmptyStatistics URL: https://hyperformula.handsontable.com/docs/api/classes/emptystatistics # EmptyStatistics Do not store stats in the memory. Stats are not needed on daily basis ## Methods ### end ▸ **end**(`_name`: [StatType](https://hyperformula.handsontable.com/docs/api/enums/stattype.md)): *void* *Defined in [src/statistics/EmptyStatistics.ts:27](https://github.com/handsontable/hyperformula/blob/a18429c/src/statistics/EmptyStatistics.ts#L27)* **`inheritdoc`** **Parameters:** Name | Type | ------ | ------ | `_name` | [StatType](https://hyperformula.handsontable.com/docs/api/enums/stattype.md) | **Returns:** *void* ___ ### incrementCriterionFunctionFullCacheUsed ▸ **incrementCriterionFunctionFullCacheUsed**(): *void* *Defined in [src/statistics/EmptyStatistics.ts:12](https://github.com/handsontable/hyperformula/blob/a18429c/src/statistics/EmptyStatistics.ts#L12)* **`inheritdoc`** **Returns:** *void* ___ ### incrementCriterionFunctionPartialCacheUsed ▸ **incrementCriterionFunctionPartialCacheUsed**(): *void* *Defined in [src/statistics/EmptyStatistics.ts:17](https://github.com/handsontable/hyperformula/blob/a18429c/src/statistics/EmptyStatistics.ts#L17)* **`inheritdoc`** **Returns:** *void* ___ ### measure ▸ **measure**‹**T**›(`name`: [StatType](https://hyperformula.handsontable.com/docs/api/enums/stattype.md), `func`: function): *T* *Defined in [src/statistics/Statistics.ts:80](https://github.com/handsontable/hyperformula/blob/a18429c/src/statistics/Statistics.ts#L80)* Measure given statistic as execution of given function. **Type parameters:** ▪ **T** **Parameters:** ▪ **name**: *[StatType](https://hyperformula.handsontable.com/docs/api/enums/stattype.md)* statistic to track ▪ **func**: *function* function to call ▸ (): *T* **Returns:** *T* result of the function call ___ ### reset ▸ **reset**(): *void* *Defined in [src/statistics/Statistics.ts:33](https://github.com/handsontable/hyperformula/blob/a18429c/src/statistics/Statistics.ts#L33)* Resets statistics **Returns:** *void* ___ ### snapshot ▸ **snapshot**(): *Map‹[StatType](https://hyperformula.handsontable.com/docs/api/enums/stattype.md), number›* *Defined in [src/statistics/Statistics.ts:90](https://github.com/handsontable/hyperformula/blob/a18429c/src/statistics/Statistics.ts#L90)* Returns the snapshot of current results **Returns:** *Map‹[StatType](https://hyperformula.handsontable.com/docs/api/enums/stattype.md), number›* ___ ### start ▸ **start**(`_name`: [StatType](https://hyperformula.handsontable.com/docs/api/enums/stattype.md)): *void* *Defined in [src/statistics/EmptyStatistics.ts:22](https://github.com/handsontable/hyperformula/blob/a18429c/src/statistics/EmptyStatistics.ts#L22)* **`inheritdoc`** **Parameters:** Name | Type | ------ | ------ | `_name` | [StatType](https://hyperformula.handsontable.com/docs/api/enums/stattype.md) | **Returns:** *void* --- ## ErrorMessage URL: https://hyperformula.handsontable.com/docs/api/classes/errormessage # ErrorMessage This is a class for detailed error messages across HyperFormula. ## Properties ### ArrayDimensions ▪ **ArrayDimensions**: *string* = "Array dimensions are not compatible." *Defined in [src/error-message.ts:14](https://github.com/handsontable/hyperformula/blob/a18429c/src/error-message.ts#L14)* ___ ### BadCriterion ▪ **BadCriterion**: *string* = "Incorrect criterion." *Defined in [src/error-message.ts:18](https://github.com/handsontable/hyperformula/blob/a18429c/src/error-message.ts#L18)* ___ ### BadMode ▪ **BadMode**: *string* = "Mode not recognized." *Defined in [src/error-message.ts:26](https://github.com/handsontable/hyperformula/blob/a18429c/src/error-message.ts#L26)* ___ ### BadRef ▪ **BadRef**: *string* = "Address is not correct." *Defined in [src/error-message.ts:39](https://github.com/handsontable/hyperformula/blob/a18429c/src/error-message.ts#L39)* ___ ### BitshiftLong ▪ **BitshiftLong**: *string* = "Result of bitshift is too long." *Defined in [src/error-message.ts:58](https://github.com/handsontable/hyperformula/blob/a18429c/src/error-message.ts#L58)* ___ ### CellRangeExpected ▪ **CellRangeExpected**: *string* = "Cell range expected." *Defined in [src/error-message.ts:20](https://github.com/handsontable/hyperformula/blob/a18429c/src/error-message.ts#L20)* ___ ### CellRefExpected ▪ **CellRefExpected**: *string* = "Cell reference expected." *Defined in [src/error-message.ts:37](https://github.com/handsontable/hyperformula/blob/a18429c/src/error-message.ts#L37)* ___ ### CharacterCodeBounds ▪ **CharacterCodeBounds**: *string* = "Character code out of bounds." *Defined in [src/error-message.ts:67](https://github.com/handsontable/hyperformula/blob/a18429c/src/error-message.ts#L67)* ___ ### ComplexNumberExpected ▪ **ComplexNumberExpected**: *string* = "Complex number expected." *Defined in [src/error-message.ts:74](https://github.com/handsontable/hyperformula/blob/a18429c/src/error-message.ts#L74)* ___ ### DateBounds ▪ **DateBounds**: *string* = "Date outside of bounds." *Defined in [src/error-message.ts:27](https://github.com/handsontable/hyperformula/blob/a18429c/src/error-message.ts#L27)* ___ ### DistinctSigns ▪ **DistinctSigns**: *string* = "Distinct signs." *Defined in [src/error-message.ts:10](https://github.com/handsontable/hyperformula/blob/a18429c/src/error-message.ts#L10)* ___ ### EmptyArg ▪ **EmptyArg**: *string* = "Empty function argument." *Defined in [src/error-message.ts:12](https://github.com/handsontable/hyperformula/blob/a18429c/src/error-message.ts#L12)* ___ ### EmptyArray ▪ **EmptyArray**: *string* = "Empty array not allowed." *Defined in [src/error-message.ts:13](https://github.com/handsontable/hyperformula/blob/a18429c/src/error-message.ts#L13)* ___ ### EmptyRange ▪ **EmptyRange**: *string* = "Empty range not allowed." *Defined in [src/error-message.ts:38](https://github.com/handsontable/hyperformula/blob/a18429c/src/error-message.ts#L38)* ___ ### EmptyString ▪ **EmptyString**: *string* = "Empty-string argument not allowed." *Defined in [src/error-message.ts:59](https://github.com/handsontable/hyperformula/blob/a18429c/src/error-message.ts#L59)* ___ ### EndStartPeriod ▪ **EndStartPeriod**: *string* = "End period needs to be at least start period." *Defined in [src/error-message.ts:36](https://github.com/handsontable/hyperformula/blob/a18429c/src/error-message.ts#L36)* ___ ### EqualLength ▪ **EqualLength**: *string* = "Ranges need to be of equal length." *Defined in [src/error-message.ts:31](https://github.com/handsontable/hyperformula/blob/a18429c/src/error-message.ts#L31)* ___ ### Formula ▪ **Formula**: *string* = "Expected formula." *Defined in [src/error-message.ts:52](https://github.com/handsontable/hyperformula/blob/a18429c/src/error-message.ts#L52)* ___ ### IncorrectDateTime ▪ **IncorrectDateTime**: *string* = "String does not represent correct DateTime." *Defined in [src/error-message.ts:66](https://github.com/handsontable/hyperformula/blob/a18429c/src/error-message.ts#L66)* ___ ### IndexBounds ▪ **IndexBounds**: *string* = "Index out of bounds." *Defined in [src/error-message.ts:50](https://github.com/handsontable/hyperformula/blob/a18429c/src/error-message.ts#L50)* ___ ### IndexLarge ▪ **IndexLarge**: *string* = "Index too large." *Defined in [src/error-message.ts:51](https://github.com/handsontable/hyperformula/blob/a18429c/src/error-message.ts#L51)* ___ ### IntegerExpected ▪ **IntegerExpected**: *string* = "Value needs to be an integer." *Defined in [src/error-message.ts:25](https://github.com/handsontable/hyperformula/blob/a18429c/src/error-message.ts#L25)* ___ ### InvalidDate ▪ **InvalidDate**: *string* = "Invalid date." *Defined in [src/error-message.ts:57](https://github.com/handsontable/hyperformula/blob/a18429c/src/error-message.ts#L57)* ___ ### InvalidRoman ▪ **InvalidRoman**: *string* = "Invalid roman numeral." *Defined in [src/error-message.ts:72](https://github.com/handsontable/hyperformula/blob/a18429c/src/error-message.ts#L72)* ___ ### LengthBounds ▪ **LengthBounds**: *string* = "Length out of bounds." *Defined in [src/error-message.ts:60](https://github.com/handsontable/hyperformula/blob/a18429c/src/error-message.ts#L60)* ___ ### LessThanOne ▪ **LessThanOne**: *string* = "Argument cannot be less than 1." *Defined in [src/error-message.ts:70](https://github.com/handsontable/hyperformula/blob/a18429c/src/error-message.ts#L70)* ___ ### NaN ▪ **NaN**: *string* = "NaN or infinite value encountered." *Defined in [src/error-message.ts:30](https://github.com/handsontable/hyperformula/blob/a18429c/src/error-message.ts#L30)* ___ ### Negative ▪ **Negative**: *string* = "Value cannot be negative." *Defined in [src/error-message.ts:32](https://github.com/handsontable/hyperformula/blob/a18429c/src/error-message.ts#L32)* ___ ### NegativeCount ▪ **NegativeCount**: *string* = "Count cannot be negative." *Defined in [src/error-message.ts:53](https://github.com/handsontable/hyperformula/blob/a18429c/src/error-message.ts#L53)* ___ ### NegativeLength ▪ **NegativeLength**: *string* = "Length cannot be negative." *Defined in [src/error-message.ts:45](https://github.com/handsontable/hyperformula/blob/a18429c/src/error-message.ts#L45)* ___ ### NegativeTime ▪ **NegativeTime**: *string* = "Time cannot be negative." *Defined in [src/error-message.ts:61](https://github.com/handsontable/hyperformula/blob/a18429c/src/error-message.ts#L61)* ___ ### NoConditionMet ▪ **NoConditionMet**: *string* = "None of the conditions were met." *Defined in [src/error-message.ts:63](https://github.com/handsontable/hyperformula/blob/a18429c/src/error-message.ts#L63)* ___ ### NoDefault ▪ **NoDefault**: *string* = "No default option." *Defined in [src/error-message.ts:62](https://github.com/handsontable/hyperformula/blob/a18429c/src/error-message.ts#L62)* ___ ### NoSpaceForArrayResult ▪ **NoSpaceForArrayResult**: *string* = "No space for array result." *Defined in [src/error-message.ts:15](https://github.com/handsontable/hyperformula/blob/a18429c/src/error-message.ts#L15)* ___ ### NonZero ▪ **NonZero**: *string* = "Argument cannot be 0." *Defined in [src/error-message.ts:68](https://github.com/handsontable/hyperformula/blob/a18429c/src/error-message.ts#L68)* ___ ### NotBinary ▪ **NotBinary**: *string* = "String does not represent a binary number." *Defined in [src/error-message.ts:33](https://github.com/handsontable/hyperformula/blob/a18429c/src/error-message.ts#L33)* ___ ### NotHex ▪ **NotHex**: *string* = "String does not represent a hexadecimal number." *Defined in [src/error-message.ts:35](https://github.com/handsontable/hyperformula/blob/a18429c/src/error-message.ts#L35)* ___ ### NotOctal ▪ **NotOctal**: *string* = "String does not represent an octal number." *Defined in [src/error-message.ts:34](https://github.com/handsontable/hyperformula/blob/a18429c/src/error-message.ts#L34)* ___ ### NumberCoercion ▪ **NumberCoercion**: *string* = "Value cannot be coerced to number." *Defined in [src/error-message.ts:23](https://github.com/handsontable/hyperformula/blob/a18429c/src/error-message.ts#L23)* ___ ### NumberExpected ▪ **NumberExpected**: *string* = "Number argument expected." *Defined in [src/error-message.ts:24](https://github.com/handsontable/hyperformula/blob/a18429c/src/error-message.ts#L24)* ___ ### NumberRange ▪ **NumberRange**: *string* = "Number-only range expected." *Defined in [src/error-message.ts:40](https://github.com/handsontable/hyperformula/blob/a18429c/src/error-message.ts#L40)* ___ ### OneValue ▪ **OneValue**: *string* = "Needs at least one value." *Defined in [src/error-message.ts:47](https://github.com/handsontable/hyperformula/blob/a18429c/src/error-message.ts#L47)* ___ ### OutOfSheet ▪ **OutOfSheet**: *string* = "Resulting reference is out of the sheet." *Defined in [src/error-message.ts:28](https://github.com/handsontable/hyperformula/blob/a18429c/src/error-message.ts#L28)* ___ ### ParseError ▪ **ParseError**: *string* = "Parsing error." *Defined in [src/error-message.ts:54](https://github.com/handsontable/hyperformula/blob/a18429c/src/error-message.ts#L54)* ___ ### PatternNotFound ▪ **PatternNotFound**: *string* = "Pattern not found." *Defined in [src/error-message.ts:46](https://github.com/handsontable/hyperformula/blob/a18429c/src/error-message.ts#L46)* ___ ### PeriodLong ▪ **PeriodLong**: *string* = "Period number cannot exceed life length." *Defined in [src/error-message.ts:56](https://github.com/handsontable/hyperformula/blob/a18429c/src/error-message.ts#L56)* ___ ### RangeManySheets ▪ **RangeManySheets**: *string* = "Range spans more than one sheet." *Defined in [src/error-message.ts:19](https://github.com/handsontable/hyperformula/blob/a18429c/src/error-message.ts#L19)* ___ ### ResultTooLong ▪ **ResultTooLong**: *string* = "Result exceeds the maximum allowed length." *Defined in [src/error-message.ts:77](https://github.com/handsontable/hyperformula/blob/a18429c/src/error-message.ts#L77)* ___ ### ScalarExpected ▪ **ScalarExpected**: *string* = "Cell range not allowed." *Defined in [src/error-message.ts:22](https://github.com/handsontable/hyperformula/blob/a18429c/src/error-message.ts#L22)* ___ ### Selector ▪ **Selector**: *string* = "Selector cannot exceed the number of arguments." *Defined in [src/error-message.ts:64](https://github.com/handsontable/hyperformula/blob/a18429c/src/error-message.ts#L64)* ___ ### SheetRef ▪ **SheetRef**: *string* = "Sheet does not exist." *Defined in [src/error-message.ts:55](https://github.com/handsontable/hyperformula/blob/a18429c/src/error-message.ts#L55)* ___ ### ShouldBeIorJ ▪ **ShouldBeIorJ**: *string* = "Should be 'i' or 'j'." *Defined in [src/error-message.ts:75](https://github.com/handsontable/hyperformula/blob/a18429c/src/error-message.ts#L75)* ___ ### SizeMismatch ▪ **SizeMismatch**: *string* = "Array dimensions mismatched." *Defined in [src/error-message.ts:76](https://github.com/handsontable/hyperformula/blob/a18429c/src/error-message.ts#L76)* ___ ### StartEndDate ▪ **StartEndDate**: *string* = "Start date needs to be earlier than end date." *Defined in [src/error-message.ts:65](https://github.com/handsontable/hyperformula/blob/a18429c/src/error-message.ts#L65)* ___ ### ThreeValues ▪ **ThreeValues**: *string* = "Range needs to contain at least three elements." *Defined in [src/error-message.ts:49](https://github.com/handsontable/hyperformula/blob/a18429c/src/error-message.ts#L49)* ___ ### TwoValues ▪ **TwoValues**: *string* = "Range needs to contain at least two elements." *Defined in [src/error-message.ts:48](https://github.com/handsontable/hyperformula/blob/a18429c/src/error-message.ts#L48)* ___ ### ValueBaseLarge ▪ **ValueBaseLarge**: *string* = "Value in base too large." *Defined in [src/error-message.ts:42](https://github.com/handsontable/hyperformula/blob/a18429c/src/error-message.ts#L42)* ___ ### ValueBaseLong ▪ **ValueBaseLong**: *string* = "Value in base too long." *Defined in [src/error-message.ts:44](https://github.com/handsontable/hyperformula/blob/a18429c/src/error-message.ts#L44)* ___ ### ValueBaseSmall ▪ **ValueBaseSmall**: *string* = "Value in base too small." *Defined in [src/error-message.ts:43](https://github.com/handsontable/hyperformula/blob/a18429c/src/error-message.ts#L43)* ___ ### ValueLarge ▪ **ValueLarge**: *string* = "Value too large." *Defined in [src/error-message.ts:17](https://github.com/handsontable/hyperformula/blob/a18429c/src/error-message.ts#L17)* ___ ### ValueNotFound ▪ **ValueNotFound**: *string* = "Value not found." *Defined in [src/error-message.ts:41](https://github.com/handsontable/hyperformula/blob/a18429c/src/error-message.ts#L41)* ___ ### ValueSmall ▪ **ValueSmall**: *string* = "Value too small." *Defined in [src/error-message.ts:16](https://github.com/handsontable/hyperformula/blob/a18429c/src/error-message.ts#L16)* ___ ### WeekendString ▪ **WeekendString**: *string* = "Incorrect weekend bitmask string." *Defined in [src/error-message.ts:71](https://github.com/handsontable/hyperformula/blob/a18429c/src/error-message.ts#L71)* ___ ### WrongArgNumber ▪ **WrongArgNumber**: *string* = "Wrong number of arguments." *Defined in [src/error-message.ts:11](https://github.com/handsontable/hyperformula/blob/a18429c/src/error-message.ts#L11)* ___ ### WrongDimension ▪ **WrongDimension**: *string* = "Wrong range dimension." *Defined in [src/error-message.ts:21](https://github.com/handsontable/hyperformula/blob/a18429c/src/error-message.ts#L21)* ___ ### WrongOrder ▪ **WrongOrder**: *string* = "Wrong order of values." *Defined in [src/error-message.ts:73](https://github.com/handsontable/hyperformula/blob/a18429c/src/error-message.ts#L73)* ___ ### WrongType ▪ **WrongType**: *string* = "Wrong type of argument." *Defined in [src/error-message.ts:29](https://github.com/handsontable/hyperformula/blob/a18429c/src/error-message.ts#L29)* ___ ### ZeroRowOrColumnCount ▪ **ZeroRowOrColumnCount**: *string* = "Row or column count cannot be zero." *Defined in [src/error-message.ts:69](https://github.com/handsontable/hyperformula/blob/a18429c/src/error-message.ts#L69)* ## Methods ### FunctionName ▸ **FunctionName**(`arg`: string): *string* *Defined in [src/error-message.ts:78](https://github.com/handsontable/hyperformula/blob/a18429c/src/error-message.ts#L78)* **Parameters:** Name | Type | ------ | ------ | `arg` | string | **Returns:** *string* ___ ### LicenseKey ▸ **LicenseKey**(`arg`: string): *string* *Defined in [src/error-message.ts:80](https://github.com/handsontable/hyperformula/blob/a18429c/src/error-message.ts#L80)* **Parameters:** Name | Type | ------ | ------ | `arg` | string | **Returns:** *string* ___ ### NamedExpressionName ▸ **NamedExpressionName**(`arg`: string): *string* *Defined in [src/error-message.ts:79](https://github.com/handsontable/hyperformula/blob/a18429c/src/error-message.ts#L79)* **Parameters:** Name | Type | ------ | ------ | `arg` | string | **Returns:** *string* --- ## UndoRedo URL: https://hyperformula.handsontable.com/docs/api/classes/undoredo # UndoRedo Manages undo/redo stacks for all spreadsheet operations. ## oldData: Preserving Formula ASTs Across Irreversible Transformations Some structural operations (e.g., removing rows/columns, moving cells) destroy formula information that cannot be reconstructed from the transformation alone. For example, when a row is removed, formulas referencing that row are rewritten to `#REF!` — an irreversible change. To support undo of such operations, `oldData` stores snapshots of formula AST hashes keyed by the LazilyTransformingAstService version at which the irreversible transformation was applied. Each entry maps a version number to an array of `[cellAddress, astHash]` pairs that can be used to restore the original formula from the parser cache. ### Memory Management Without cleanup, `oldData` grows indefinitely as undo entries are evicted but their oldData keys remain. Three mechanisms prevent this: 1. **Eviction cleanup**: When undo entries are evicted (due to `undoLimit`), `cleanupOldDataForEntries()` deletes their referenced oldData keys (unless still needed by entries on the other stack). 2. **Orphan cleanup**: Compaction may force lazy formula evaluation, which writes new oldData entries for already-evicted undo entries. After compaction, `cleanupOrphanedOldData()` removes any keys not referenced by entries on either stack or the in-progress batch. 3. **Short-circuit**: When `undoLimit` is 0 (undo disabled), `storeDataForVersion()` returns immediately to avoid storing data that would never be used. ## Constructors ### constructor \+ **new UndoRedo**(`config`: [Config](https://hyperformula.handsontable.com/docs/api/classes/config.md), `operations`: [Operations](https://hyperformula.handsontable.com/docs/api/classes/operations.md)): *[UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md)* *Defined in [src/UndoRedo.ts:505](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L505)* **Parameters:** Name | Type | ------ | ------ | `config` | [Config](https://hyperformula.handsontable.com/docs/api/classes/config.md) | `operations` | [Operations](https://hyperformula.handsontable.com/docs/api/classes/operations.md) | **Returns:** *[UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md)* ## Properties ### oldData • **oldData**: *Map‹number, [[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), string][]›* = new Map() *Defined in [src/UndoRedo.ts:501](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L501)* ## Methods ### beginBatchMode ▸ **beginBatchMode**(): *void* *Defined in [src/UndoRedo.ts:522](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L522)* **Returns:** *void* ___ ### cleanupOrphanedOldData ▸ **cleanupOrphanedOldData**(): *void* *Defined in [src/UndoRedo.ts:880](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L880)* Removes oldData entries whose version keys are not referenced by any entry on the undo stack, redo stack, or in-progress batch. Called after compaction forces lazy formula evaluation, which may insert oldData for already-evicted entries. **Returns:** *void* ___ ### clearRedoStack ▸ **clearRedoStack**(): *void* *Defined in [src/UndoRedo.ts:550](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L550)* Clears the redo stack and removes oldData entries no longer referenced by any remaining entry. **Returns:** *void* ___ ### clearUndoStack ▸ **clearUndoStack**(): *void* *Defined in [src/UndoRedo.ts:556](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L556)* Clears the undo stack and removes oldData entries no longer referenced by any remaining entry. **Returns:** *void* ___ ### commitBatchMode ▸ **commitBatchMode**(): *void* *Defined in [src/UndoRedo.ts:526](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L526)* **Returns:** *void* ___ ### isRedoStackEmpty ▸ **isRedoStackEmpty**(): *boolean* *Defined in [src/UndoRedo.ts:565](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L565)* **Returns:** *boolean* ___ ### isUndoStackEmpty ▸ **isUndoStackEmpty**(): *boolean* *Defined in [src/UndoRedo.ts:561](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L561)* **Returns:** *boolean* ___ ### redo ▸ **redo**(): *void* *Defined in [src/UndoRedo.ts:756](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L756)* **Returns:** *void* ___ ### redoAddColumns ▸ **redoAddColumns**(`operation`: [AddColumnsUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/addcolumnsundoentry.md)): *void* *Defined in [src/UndoRedo.ts:808](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L808)* **Parameters:** Name | Type | ------ | ------ | `operation` | [AddColumnsUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/addcolumnsundoentry.md) | **Returns:** *void* ___ ### redoAddNamedExpression ▸ **redoAddNamedExpression**(`operation`: [AddNamedExpressionUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/addnamedexpressionundoentry.md)): *void* *Defined in [src/UndoRedo.ts:841](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L841)* **Parameters:** Name | Type | ------ | ------ | `operation` | [AddNamedExpressionUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/addnamedexpressionundoentry.md) | **Returns:** *void* ___ ### redoAddRows ▸ **redoAddRows**(`operation`: [AddRowsUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/addrowsundoentry.md)): *void* *Defined in [src/UndoRedo.ts:804](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L804)* **Parameters:** Name | Type | ------ | ------ | `operation` | [AddRowsUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/addrowsundoentry.md) | **Returns:** *void* ___ ### redoAddSheet ▸ **redoAddSheet**(`operation`: [AddSheetUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/addsheetundoentry.md)): *void* *Defined in [src/UndoRedo.ts:816](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L816)* **Parameters:** Name | Type | ------ | ------ | `operation` | [AddSheetUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/addsheetundoentry.md) | **Returns:** *void* ___ ### redoBatch ▸ **redoBatch**(`batchOperation`: [BatchUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/batchundoentry.md)): *void* *Defined in [src/UndoRedo.ts:768](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L768)* **Parameters:** Name | Type | ------ | ------ | `batchOperation` | [BatchUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/batchundoentry.md) | **Returns:** *void* ___ ### redoChangeNamedExpression ▸ **redoChangeNamedExpression**(`operation`: [ChangeNamedExpressionUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/changenamedexpressionundoentry.md)): *void* *Defined in [src/UndoRedo.ts:849](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L849)* **Parameters:** Name | Type | ------ | ------ | `operation` | [ChangeNamedExpressionUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/changenamedexpressionundoentry.md) | **Returns:** *void* ___ ### redoClearSheet ▸ **redoClearSheet**(`operation`: [ClearSheetUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/clearsheetundoentry.md)): *void* *Defined in [src/UndoRedo.ts:832](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L832)* **Parameters:** Name | Type | ------ | ------ | `operation` | [ClearSheetUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/clearsheetundoentry.md) | **Returns:** *void* ___ ### redoMoveCells ▸ **redoMoveCells**(`operation`: [MoveCellsUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/movecellsundoentry.md)): *void* *Defined in [src/UndoRedo.ts:778](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L778)* **Parameters:** Name | Type | ------ | ------ | `operation` | [MoveCellsUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/movecellsundoentry.md) | **Returns:** *void* ___ ### redoMoveColumns ▸ **redoMoveColumns**(`operation`: [MoveColumnsUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/movecolumnsundoentry.md)): *void* *Defined in [src/UndoRedo.ts:828](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L828)* **Parameters:** Name | Type | ------ | ------ | `operation` | [MoveColumnsUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/movecolumnsundoentry.md) | **Returns:** *void* ___ ### redoMoveRows ▸ **redoMoveRows**(`operation`: [MoveRowsUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/moverowsundoentry.md)): *void* *Defined in [src/UndoRedo.ts:824](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L824)* **Parameters:** Name | Type | ------ | ------ | `operation` | [MoveRowsUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/moverowsundoentry.md) | **Returns:** *void* ___ ### redoPaste ▸ **redoPaste**(`operation`: [PasteUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/pasteundoentry.md)): *void* *Defined in [src/UndoRedo.ts:786](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L786)* **Parameters:** Name | Type | ------ | ------ | `operation` | [PasteUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/pasteundoentry.md) | **Returns:** *void* ___ ### redoRemoveColumns ▸ **redoRemoveColumns**(`operation`: [RemoveColumnsUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/removecolumnsundoentry.md)): *void* *Defined in [src/UndoRedo.ts:782](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L782)* **Parameters:** Name | Type | ------ | ------ | `operation` | [RemoveColumnsUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/removecolumnsundoentry.md) | **Returns:** *void* ___ ### redoRemoveNamedExpression ▸ **redoRemoveNamedExpression**(`operation`: [RemoveNamedExpressionUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/removenamedexpressionundoentry.md)): *void* *Defined in [src/UndoRedo.ts:845](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L845)* **Parameters:** Name | Type | ------ | ------ | `operation` | [RemoveNamedExpressionUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/removenamedexpressionundoentry.md) | **Returns:** *void* ___ ### redoRemoveRows ▸ **redoRemoveRows**(`operation`: [RemoveRowsUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/removerowsundoentry.md)): *void* *Defined in [src/UndoRedo.ts:774](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L774)* **Parameters:** Name | Type | ------ | ------ | `operation` | [RemoveRowsUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/removerowsundoentry.md) | **Returns:** *void* ___ ### redoRemoveSheet ▸ **redoRemoveSheet**(`operation`: [RemoveSheetUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/removesheetundoentry.md)): *void* *Defined in [src/UndoRedo.ts:812](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L812)* **Parameters:** Name | Type | ------ | ------ | `operation` | [RemoveSheetUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/removesheetundoentry.md) | **Returns:** *void* ___ ### redoRenameSheet ▸ **redoRenameSheet**(`operation`: [RenameSheetUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/renamesheetundoentry.md)): *void* *Defined in [src/UndoRedo.ts:820](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L820)* **Parameters:** Name | Type | ------ | ------ | `operation` | [RenameSheetUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/renamesheetundoentry.md) | **Returns:** *void* ___ ### redoSetCellContents ▸ **redoSetCellContents**(`operation`: [SetCellContentsUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/setcellcontentsundoentry.md)): *void* *Defined in [src/UndoRedo.ts:798](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L798)* **Parameters:** Name | Type | ------ | ------ | `operation` | [SetCellContentsUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/setcellcontentsundoentry.md) | **Returns:** *void* ___ ### redoSetColumnOrder ▸ **redoSetColumnOrder**(`operation`: [SetColumnOrderUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/setcolumnorderundoentry.md)): *void* *Defined in [src/UndoRedo.ts:857](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L857)* **Parameters:** Name | Type | ------ | ------ | `operation` | [SetColumnOrderUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/setcolumnorderundoentry.md) | **Returns:** *void* ___ ### redoSetRowOrder ▸ **redoSetRowOrder**(`operation`: [SetRowOrderUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/setroworderundoentry.md)): *void* *Defined in [src/UndoRedo.ts:853](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L853)* **Parameters:** Name | Type | ------ | ------ | `operation` | [SetRowOrderUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/setroworderundoentry.md) | **Returns:** *void* ___ ### redoSetSheetContent ▸ **redoSetSheetContent**(`operation`: [SetSheetContentUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/setsheetcontentundoentry.md)): *void* *Defined in [src/UndoRedo.ts:836](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L836)* **Parameters:** Name | Type | ------ | ------ | `operation` | [SetSheetContentUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/setsheetcontentundoentry.md) | **Returns:** *void* ___ ### saveOperation ▸ **saveOperation**(`operation`: [UndoEntry](https://hyperformula.handsontable.com/docs/api/interfaces/undoentry.md)): *void* *Defined in [src/UndoRedo.ts:514](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L514)* **Parameters:** Name | Type | ------ | ------ | `operation` | [UndoEntry](https://hyperformula.handsontable.com/docs/api/interfaces/undoentry.md) | **Returns:** *void* ___ ### storeDataForVersion ▸ **storeDataForVersion**(`version`: number, `address`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), `astHash`: string): *void* *Defined in [src/UndoRedo.ts:538](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L538)* Stores a formula AST hash snapshot for the given LazilyTransformingAstService version. Skipped when `undoLimit` is 0 (undo disabled) to avoid storing data that would never be used. **Parameters:** Name | Type | ------ | ------ | `version` | number | `address` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | `astHash` | string | **Returns:** *void* ___ ### undo ▸ **undo**(): *void* *Defined in [src/UndoRedo.ts:569](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L569)* **Returns:** *void* ___ ### undoAddColumns ▸ **undoAddColumns**(`operation`: [AddColumnsUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/addcolumnsundoentry.md)): *void* *Defined in [src/UndoRedo.ts:626](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L626)* **Parameters:** Name | Type | ------ | ------ | `operation` | [AddColumnsUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/addcolumnsundoentry.md) | **Returns:** *void* ___ ### undoAddNamedExpression ▸ **undoAddNamedExpression**(`operation`: [AddNamedExpressionUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/addnamedexpressionundoentry.md)): *void* *Defined in [src/UndoRedo.ts:736](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L736)* **Parameters:** Name | Type | ------ | ------ | `operation` | [AddNamedExpressionUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/addnamedexpressionundoentry.md) | **Returns:** *void* ___ ### undoAddRows ▸ **undoAddRows**(`operation`: [AddRowsUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/addrowsundoentry.md)): *void* *Defined in [src/UndoRedo.ts:618](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L618)* **Parameters:** Name | Type | ------ | ------ | `operation` | [AddRowsUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/addrowsundoentry.md) | **Returns:** *void* ___ ### undoAddSheet ▸ **undoAddSheet**(`operation`: [AddSheetUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/addsheetundoentry.md)): *void* *Defined in [src/UndoRedo.ts:678](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L678)* **Parameters:** Name | Type | ------ | ------ | `operation` | [AddSheetUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/addsheetundoentry.md) | **Returns:** *void* ___ ### undoBatch ▸ **undoBatch**(`batchOperation`: [BatchUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/batchundoentry.md)): *void* *Defined in [src/UndoRedo.ts:580](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L580)* **Parameters:** Name | Type | ------ | ------ | `batchOperation` | [BatchUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/batchundoentry.md) | **Returns:** *void* ___ ### undoChangeNamedExpression ▸ **undoChangeNamedExpression**(`operation`: [ChangeNamedExpressionUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/changenamedexpressionundoentry.md)): *void* *Defined in [src/UndoRedo.ts:744](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L744)* **Parameters:** Name | Type | ------ | ------ | `operation` | [ChangeNamedExpressionUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/changenamedexpressionundoentry.md) | **Returns:** *void* ___ ### undoClearSheet ▸ **undoClearSheet**(`operation`: [ClearSheetUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/clearsheetundoentry.md)): *void* *Defined in [src/UndoRedo.ts:711](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L711)* **Parameters:** Name | Type | ------ | ------ | `operation` | [ClearSheetUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/clearsheetundoentry.md) | **Returns:** *void* ___ ### undoMoveCells ▸ **undoMoveCells**(`operation`: [MoveCellsUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/movecellsundoentry.md)): *void* *Defined in [src/UndoRedo.ts:666](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L666)* **Parameters:** Name | Type | ------ | ------ | `operation` | [MoveCellsUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/movecellsundoentry.md) | **Returns:** *void* ___ ### undoMoveColumns ▸ **undoMoveColumns**(`operation`: [MoveColumnsUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/movecolumnsundoentry.md)): *void* *Defined in [src/UndoRedo.ts:659](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L659)* **Parameters:** Name | Type | ------ | ------ | `operation` | [MoveColumnsUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/movecolumnsundoentry.md) | **Returns:** *void* ___ ### undoMoveRows ▸ **undoMoveRows**(`operation`: [MoveRowsUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/moverowsundoentry.md)): *void* *Defined in [src/UndoRedo.ts:652](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L652)* **Parameters:** Name | Type | ------ | ------ | `operation` | [MoveRowsUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/moverowsundoentry.md) | **Returns:** *void* ___ ### undoPaste ▸ **undoPaste**(`operation`: [PasteUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/pasteundoentry.md)): *void* *Defined in [src/UndoRedo.ts:645](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L645)* **Parameters:** Name | Type | ------ | ------ | `operation` | [PasteUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/pasteundoentry.md) | **Returns:** *void* ___ ### undoRemoveColumns ▸ **undoRemoveColumns**(`operation`: [RemoveColumnsUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/removecolumnsundoentry.md)): *void* *Defined in [src/UndoRedo.ts:602](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L602)* **Parameters:** Name | Type | ------ | ------ | `operation` | [RemoveColumnsUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/removecolumnsundoentry.md) | **Returns:** *void* ___ ### undoRemoveNamedExpression ▸ **undoRemoveNamedExpression**(`operation`: [RemoveNamedExpressionUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/removenamedexpressionundoentry.md)): *void* *Defined in [src/UndoRedo.ts:740](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L740)* **Parameters:** Name | Type | ------ | ------ | `operation` | [RemoveNamedExpressionUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/removenamedexpressionundoentry.md) | **Returns:** *void* ___ ### undoRemoveRows ▸ **undoRemoveRows**(`operation`: [RemoveRowsUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/removerowsundoentry.md)): *void* *Defined in [src/UndoRedo.ts:586](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L586)* **Parameters:** Name | Type | ------ | ------ | `operation` | [RemoveRowsUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/removerowsundoentry.md) | **Returns:** *void* ___ ### undoRemoveSheet ▸ **undoRemoveSheet**(`operation`: [RemoveSheetUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/removesheetundoentry.md)): *void* *Defined in [src/UndoRedo.ts:683](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L683)* **Parameters:** Name | Type | ------ | ------ | `operation` | [RemoveSheetUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/removesheetundoentry.md) | **Returns:** *void* ___ ### undoRenameSheet ▸ **undoRenameSheet**(`operation`: [RenameSheetUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/renamesheetundoentry.md)): *void* *Defined in [src/UndoRedo.ts:701](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L701)* **Parameters:** Name | Type | ------ | ------ | `operation` | [RenameSheetUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/renamesheetundoentry.md) | **Returns:** *void* ___ ### undoSetCellContents ▸ **undoSetCellContents**(`operation`: [SetCellContentsUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/setcellcontentsundoentry.md)): *void* *Defined in [src/UndoRedo.ts:634](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L634)* **Parameters:** Name | Type | ------ | ------ | `operation` | [SetCellContentsUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/setcellcontentsundoentry.md) | **Returns:** *void* ___ ### undoSetColumnOrder ▸ **undoSetColumnOrder**(`operation`: [SetColumnOrderUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/setcolumnorderundoentry.md)): *void* *Defined in [src/UndoRedo.ts:752](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L752)* **Parameters:** Name | Type | ------ | ------ | `operation` | [SetColumnOrderUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/setcolumnorderundoentry.md) | **Returns:** *void* ___ ### undoSetRowOrder ▸ **undoSetRowOrder**(`operation`: [SetRowOrderUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/setroworderundoentry.md)): *void* *Defined in [src/UndoRedo.ts:748](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L748)* **Parameters:** Name | Type | ------ | ------ | `operation` | [SetRowOrderUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/setroworderundoentry.md) | **Returns:** *void* ___ ### undoSetSheetContent ▸ **undoSetSheetContent**(`operation`: [SetSheetContentUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/setsheetcontentundoentry.md)): *void* *Defined in [src/UndoRedo.ts:723](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L723)* **Parameters:** Name | Type | ------ | ------ | `operation` | [SetSheetContentUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/setsheetcontentundoentry.md) | **Returns:** *void* --- ## ClipboardOperationType URL: https://hyperformula.handsontable.com/docs/api/enums/clipboardoperationtype # ClipboardOperationType ## Enumeration members ### COPY • **COPY**: *Defined in [src/ClipboardOperations.ts:19](https://github.com/handsontable/hyperformula/blob/a18429c/src/ClipboardOperations.ts#L19)* ___ ### CUT • **CUT**: *Defined in [src/ClipboardOperations.ts:20](https://github.com/handsontable/hyperformula/blob/a18429c/src/ClipboardOperations.ts#L20)* --- ## ErrorType URL: https://hyperformula.handsontable.com/docs/api/enums/errortype # ErrorType Possible errors returned by our interpreter. ## Enumeration members ### CYCLE • **CYCLE**: = "CYCLE" *Defined in [src/Cell.ts:36](https://github.com/handsontable/hyperformula/blob/a18429c/src/Cell.ts#L36)* Cyclic dependency. ___ ### DIV_BY_ZERO • **DIV_BY_ZERO**: = "DIV_BY_ZERO" *Defined in [src/Cell.ts:27](https://github.com/handsontable/hyperformula/blob/a18429c/src/Cell.ts#L27)* Division by zero. ___ ### ERROR • **ERROR**: = "ERROR" *Defined in [src/Cell.ts:48](https://github.com/handsontable/hyperformula/blob/a18429c/src/Cell.ts#L48)* Generic error ___ ### LIC • **LIC**: = "LIC" *Defined in [src/Cell.ts:45](https://github.com/handsontable/hyperformula/blob/a18429c/src/Cell.ts#L45)* Invalid/missing licence error. ___ ### NA • **NA**: = "NA" *Defined in [src/Cell.ts:33](https://github.com/handsontable/hyperformula/blob/a18429c/src/Cell.ts#L33)* ___ ### NAME • **NAME**: = "NAME" *Defined in [src/Cell.ts:30](https://github.com/handsontable/hyperformula/blob/a18429c/src/Cell.ts#L30)* Unknown function name. ___ ### NUM • **NUM**: = "NUM" *Defined in [src/Cell.ts:32](https://github.com/handsontable/hyperformula/blob/a18429c/src/Cell.ts#L32)* ___ ### REF • **REF**: = "REF" *Defined in [src/Cell.ts:39](https://github.com/handsontable/hyperformula/blob/a18429c/src/Cell.ts#L39)* Wrong address reference. ___ ### SPILL • **SPILL**: = "SPILL" *Defined in [src/Cell.ts:42](https://github.com/handsontable/hyperformula/blob/a18429c/src/Cell.ts#L42)* Array spill error. ___ ### VALUE • **VALUE**: = "VALUE" *Defined in [src/Cell.ts:31](https://github.com/handsontable/hyperformula/blob/a18429c/src/Cell.ts#L31)* --- ## CellValueNoNumber URL: https://hyperformula.handsontable.com/docs/api/enums/cellvaluenonumber # CellValueNoNumber ## Enumeration members ### BOOLEAN • **BOOLEAN**: = "BOOLEAN" *Defined in [src/Cell.ts:83](https://github.com/handsontable/hyperformula/blob/a18429c/src/Cell.ts#L83)* ___ ### EMPTY • **EMPTY**: = "EMPTY" *Defined in [src/Cell.ts:80](https://github.com/handsontable/hyperformula/blob/a18429c/src/Cell.ts#L80)* ___ ### ERROR • **ERROR**: = "ERROR" *Defined in [src/Cell.ts:84](https://github.com/handsontable/hyperformula/blob/a18429c/src/Cell.ts#L84)* ___ ### NUMBER • **NUMBER**: = "NUMBER" *Defined in [src/Cell.ts:81](https://github.com/handsontable/hyperformula/blob/a18429c/src/Cell.ts#L81)* ___ ### STRING • **STRING**: = "STRING" *Defined in [src/Cell.ts:82](https://github.com/handsontable/hyperformula/blob/a18429c/src/Cell.ts#L82)* --- ## LicenseKeyValidityState URL: https://hyperformula.handsontable.com/docs/api/enums/licensekeyvaliditystate # LicenseKeyValidityState The list of all available states which the license checker can return. ## Enumeration members ### EXPIRED • **EXPIRED**: = "expired" *Defined in [src/helpers/licenseKeyValidator.ts:14](https://github.com/handsontable/hyperformula/blob/a18429c/src/helpers/licenseKeyValidator.ts#L14)* ___ ### INVALID • **INVALID**: = "invalid" *Defined in [src/helpers/licenseKeyValidator.ts:13](https://github.com/handsontable/hyperformula/blob/a18429c/src/helpers/licenseKeyValidator.ts#L13)* ___ ### MISSING • **MISSING**: = "missing" *Defined in [src/helpers/licenseKeyValidator.ts:15](https://github.com/handsontable/hyperformula/blob/a18429c/src/helpers/licenseKeyValidator.ts#L15)* ___ ### VALID • **VALID**: = "valid" *Defined in [src/helpers/licenseKeyValidator.ts:12](https://github.com/handsontable/hyperformula/blob/a18429c/src/helpers/licenseKeyValidator.ts#L12)* --- ## FormatExpressionType URL: https://hyperformula.handsontable.com/docs/api/enums/formatexpressiontype # FormatExpressionType ## Enumeration members ### DATE • **DATE**: = "DATE" *Defined in [src/format/parser.ts:29](https://github.com/handsontable/hyperformula/blob/a18429c/src/format/parser.ts#L29)* ___ ### NUMBER • **NUMBER**: = "NUMBER" *Defined in [src/format/parser.ts:30](https://github.com/handsontable/hyperformula/blob/a18429c/src/format/parser.ts#L30)* ___ ### STRING • **STRING**: = "STRING" *Defined in [src/format/parser.ts:31](https://github.com/handsontable/hyperformula/blob/a18429c/src/format/parser.ts#L31)* --- ## StatType URL: https://hyperformula.handsontable.com/docs/api/enums/stattype # StatType **`license`** Copyright (c) 2025 Handsoncode. All rights reserved. ## Enumeration members ### ADJUSTING_ADDRESS_MAPPING • **ADJUSTING_ADDRESS_MAPPING**: = "ADJUSTING_ADDRESS_MAPPING" *Defined in [src/statistics/StatType.ts:20](https://github.com/handsontable/hyperformula/blob/a18429c/src/statistics/StatType.ts#L20)* ___ ### ADJUSTING_ARRAY_MAPPING • **ADJUSTING_ARRAY_MAPPING**: = "ADJUSTING_ARRAY_MAPPING" *Defined in [src/statistics/StatType.ts:21](https://github.com/handsontable/hyperformula/blob/a18429c/src/statistics/StatType.ts#L21)* ___ ### ADJUSTING_GRAPH • **ADJUSTING_GRAPH**: = "ADJUSTING_GRAPH" *Defined in [src/statistics/StatType.ts:23](https://github.com/handsontable/hyperformula/blob/a18429c/src/statistics/StatType.ts#L23)* ___ ### ADJUSTING_RANGES • **ADJUSTING_RANGES**: = "ADJUSTING_RANGES" *Defined in [src/statistics/StatType.ts:22](https://github.com/handsontable/hyperformula/blob/a18429c/src/statistics/StatType.ts#L22)* ___ ### BUILD_COLUMN_INDEX • **BUILD_COLUMN_INDEX**: = "BUILD_COLUMN_INDEX" *Defined in [src/statistics/StatType.ts:14](https://github.com/handsontable/hyperformula/blob/a18429c/src/statistics/StatType.ts#L14)* ___ ### BUILD_ENGINE_TOTAL • **BUILD_ENGINE_TOTAL**: = "BUILD_ENGINE_TOTAL" *Defined in [src/statistics/StatType.ts:8](https://github.com/handsontable/hyperformula/blob/a18429c/src/statistics/StatType.ts#L8)* ___ ### COLLECT_DEPENDENCIES • **COLLECT_DEPENDENCIES**: = "COLLECT_DEPENDENCIES" *Defined in [src/statistics/StatType.ts:11](https://github.com/handsontable/hyperformula/blob/a18429c/src/statistics/StatType.ts#L11)* ___ ### CRITERION_FUNCTION_FULL_CACHE_USED • **CRITERION_FUNCTION_FULL_CACHE_USED**: = "CRITERION_FUNCTION_FULL_CACHE_USED" *Defined in [src/statistics/StatType.ts:25](https://github.com/handsontable/hyperformula/blob/a18429c/src/statistics/StatType.ts#L25)* ___ ### CRITERION_FUNCTION_PARTIAL_CACHE_USED • **CRITERION_FUNCTION_PARTIAL_CACHE_USED**: = "CRITERION_FUNCTION_PARTIAL_CACHE_USED" *Defined in [src/statistics/StatType.ts:26](https://github.com/handsontable/hyperformula/blob/a18429c/src/statistics/StatType.ts#L26)* ___ ### EVALUATION • **EVALUATION**: = "EVALUATION" *Defined in [src/statistics/StatType.ts:15](https://github.com/handsontable/hyperformula/blob/a18429c/src/statistics/StatType.ts#L15)* ___ ### GRAPH_BUILD • **GRAPH_BUILD**: = "GRAPH_BUILD" *Defined in [src/statistics/StatType.ts:10](https://github.com/handsontable/hyperformula/blob/a18429c/src/statistics/StatType.ts#L10)* ___ ### PARSER • **PARSER**: = "PARSER" *Defined in [src/statistics/StatType.ts:9](https://github.com/handsontable/hyperformula/blob/a18429c/src/statistics/StatType.ts#L9)* ___ ### PROCESS_DEPENDENCIES • **PROCESS_DEPENDENCIES**: = "PROCESS_DEPENDENCIES" *Defined in [src/statistics/StatType.ts:12](https://github.com/handsontable/hyperformula/blob/a18429c/src/statistics/StatType.ts#L12)* ___ ### TOP_SORT • **TOP_SORT**: = "TOP_SORT" *Defined in [src/statistics/StatType.ts:13](https://github.com/handsontable/hyperformula/blob/a18429c/src/statistics/StatType.ts#L13)* ___ ### TRANSFORM_ASTS • **TRANSFORM_ASTS**: = "TRANSFORM_ASTS" *Defined in [src/statistics/StatType.ts:18](https://github.com/handsontable/hyperformula/blob/a18429c/src/statistics/StatType.ts#L18)* ___ ### TRANSFORM_ASTS_POSTPONED • **TRANSFORM_ASTS_POSTPONED**: = "TRANSFORM_ASTS_POSTPONED" *Defined in [src/statistics/StatType.ts:19](https://github.com/handsontable/hyperformula/blob/a18429c/src/statistics/StatType.ts#L19)* ___ ### VLOOKUP • **VLOOKUP**: = "VLOOKUP" *Defined in [src/statistics/StatType.ts:16](https://github.com/handsontable/hyperformula/blob/a18429c/src/statistics/StatType.ts#L16)* --- ## TokenType URL: https://hyperformula.handsontable.com/docs/api/enums/tokentype # TokenType ## Enumeration members ### FORMAT • **FORMAT**: = "FORMAT" *Defined in [src/format/parser.ts:12](https://github.com/handsontable/hyperformula/blob/a18429c/src/format/parser.ts#L12)* ___ ### FREE_TEXT • **FREE_TEXT**: = "FREE_TEXT" *Defined in [src/format/parser.ts:13](https://github.com/handsontable/hyperformula/blob/a18429c/src/format/parser.ts#L13)* --- ## API Reference Overview URL: https://hyperformula.handsontable.com/docs/api/globals # API Reference Overview ## Type aliases ### CellDependency Ƭ **CellDependency**: *[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | [AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md) | NamedExpressionDependency* *Defined in [src/CellDependency.ts:10](https://github.com/handsontable/hyperformula/blob/a18429c/src/CellDependency.ts#L10)* ___ ### CellValue Ƭ **CellValue**: *[NoErrorCellValue](https://hyperformula.handsontable.com/docs/api/globals.md#noerrorcellvalue) | [DetailedCellError](https://hyperformula.handsontable.com/docs/api/classes/detailedcellerror.md)* *Defined in [src/CellValue.ts:9](https://github.com/handsontable/hyperformula/blob/a18429c/src/CellValue.ts#L9)* ___ ### CellValueDetailedType Ƭ **CellValueDetailedType**: *[CellValueNoNumber](https://hyperformula.handsontable.com/docs/api/enums/cellvaluenonumber.md) | NumberType* *Defined in [src/Cell.ts:94](https://github.com/handsontable/hyperformula/blob/a18429c/src/Cell.ts#L94)* ___ ### CellValueType Ƭ **CellValueType**: *[CellValueNoNumber](https://hyperformula.handsontable.com/docs/api/enums/cellvaluenonumber.md) | [CellValueJustNumber](https://hyperformula.handsontable.com/docs/api/enums/cellvaluejustnumber.md)* *Defined in [src/Cell.ts:91](https://github.com/handsontable/hyperformula/blob/a18429c/src/Cell.ts#L91)* ___ ### ChangeList Ƭ **ChangeList**: *[CellValueChange](https://hyperformula.handsontable.com/docs/api/interfaces/cellvaluechange.md)[]* *Defined in [src/ContentChanges.ts:20](https://github.com/handsontable/hyperformula/blob/a18429c/src/ContentChanges.ts#L20)* ___ ### ClipboardCell Ƭ **ClipboardCell**: *[ClipboardCellValue](https://hyperformula.handsontable.com/docs/api/interfaces/clipboardcellvalue.md) | [ClipboardCellFormula](https://hyperformula.handsontable.com/docs/api/interfaces/clipboardcellformula.md) | [ClipboardCellEmpty](https://hyperformula.handsontable.com/docs/api/interfaces/clipboardcellempty.md) | [ClipboardCellParsingError](https://hyperformula.handsontable.com/docs/api/interfaces/clipboardcellparsingerror.md)* *Defined in [src/ClipboardOperations.ts:16](https://github.com/handsontable/hyperformula/blob/a18429c/src/ClipboardOperations.ts#L16)* ___ ### ColumnMap Ƭ **ColumnMap**: *Map‹RawInterpreterValue, [ValueIndex](https://hyperformula.handsontable.com/docs/api/interfaces/valueindex.md)›* *Defined in [src/Lookup/ColumnIndex.ts:30](https://github.com/handsontable/hyperformula/blob/a18429c/src/Lookup/ColumnIndex.ts#L30)* ___ ### ColumnRowIndex Ƭ **ColumnRowIndex**: *[number, number]* *Defined in [src/CrudOperations.ts:65](https://github.com/handsontable/hyperformula/blob/a18429c/src/CrudOperations.ts#L65)* ___ ### ConfigParamsList Ƭ **ConfigParamsList**: *keyof ConfigParams* *Defined in [src/ConfigParams.ts:450](https://github.com/handsontable/hyperformula/blob/a18429c/src/ConfigParams.ts#L450)* ___ ### ConsoleMessages Ƭ **ConsoleMessages**: *object* *Defined in [src/helpers/licenseKeyValidator.ts:24](https://github.com/handsontable/hyperformula/blob/a18429c/src/helpers/licenseKeyValidator.ts#L24)* #### Type declaration: ___ ### DateTime Ƭ **DateTime**: *[SimpleTime](https://hyperformula.handsontable.com/docs/api/interfaces/simpletime.md) | [SimpleDate](https://hyperformula.handsontable.com/docs/api/interfaces/simpledate.md) | [SimpleDateTime](https://hyperformula.handsontable.com/docs/api/globals.md#simpledatetime)* *Defined in [src/DateTimeHelper.ts:31](https://github.com/handsontable/hyperformula/blob/a18429c/src/DateTimeHelper.ts#L31)* ___ ### Dependencies Ƭ **Dependencies**: *Map‹Vertex, [CellDependency](https://hyperformula.handsontable.com/docs/api/globals.md#celldependency)[]›* *Defined in [src/GraphBuilder.ts:25](https://github.com/handsontable/hyperformula/blob/a18429c/src/GraphBuilder.ts#L25)* ___ ### EngineState Ƭ **EngineState**: *object* *Defined in [src/BuildEngineFactory.ts:33](https://github.com/handsontable/hyperformula/blob/a18429c/src/BuildEngineFactory.ts#L33)* #### Type declaration: * **cellContentParser**: *[CellContentParser](https://hyperformula.handsontable.com/docs/api/classes/cellcontentparser.md)* * **columnSearch**: *[ColumnSearchStrategy](https://hyperformula.handsontable.com/docs/api/interfaces/columnsearchstrategy.md)* * **config**: *[Config](https://hyperformula.handsontable.com/docs/api/classes/config.md)* * **crudOperations**: *[CrudOperations](https://hyperformula.handsontable.com/docs/api/classes/crudoperations.md)* * **dependencyGraph**: *DependencyGraph* * **evaluator**: *[Evaluator](https://hyperformula.handsontable.com/docs/api/classes/evaluator.md)* * **exporter**: *[Exporter](https://hyperformula.handsontable.com/docs/api/classes/exporter.md)* * **functionRegistry**: *FunctionRegistry* * **lazilyTransformingAstService**: *[LazilyTransformingAstService](https://hyperformula.handsontable.com/docs/api/classes/lazilytransformingastservice.md)* * **namedExpressions**: *[NamedExpressions](https://hyperformula.handsontable.com/docs/api/classes/namedexpressions.md)* * **parser**: *ParserWithCaching* * **serialization**: *[Serialization](https://hyperformula.handsontable.com/docs/api/classes/serialization.md)* * **stats**: *[Statistics](https://hyperformula.handsontable.com/docs/api/classes/statistics.md)* * **unparser**: *Unparser* ___ ### ExportedChange Ƭ **ExportedChange**: *[ExportedCellChange](https://hyperformula.handsontable.com/docs/api/classes/exportedcellchange.md) | [ExportedNamedExpressionChange](https://hyperformula.handsontable.com/docs/api/classes/exportednamedexpressionchange.md)* *Defined in [src/Exporter.ts:18](https://github.com/handsontable/hyperformula/blob/a18429c/src/Exporter.ts#L18)* ___ ### LicenseKeyInvalidState Ƭ **LicenseKeyInvalidState**: *Exclude‹[LicenseKeyValidityState](https://hyperformula.handsontable.com/docs/api/enums/licensekeyvaliditystate.md), [VALID](https://hyperformula.handsontable.com/docs/api/enums/licensekeyvaliditystate.md#valid)›* *Defined in [src/helpers/licenseKeyValidator.ts:18](https://github.com/handsontable/hyperformula/blob/a18429c/src/helpers/licenseKeyValidator.ts#L18)* ___ ### Maybe Ƭ **Maybe**: *T | undefined* *Defined in [src/Maybe.ts:6](https://github.com/handsontable/hyperformula/blob/a18429c/src/Maybe.ts#L6)* **`license`** Copyright (c) 2025 Handsoncode. All rights reserved. ___ ### MessageDescriptor Ƭ **MessageDescriptor**: *object* *Defined in [src/helpers/licenseKeyValidator.ts:28](https://github.com/handsontable/hyperformula/blob/a18429c/src/helpers/licenseKeyValidator.ts#L28)* #### Type declaration: * **template**: *[LicenseKeyValidityState](https://hyperformula.handsontable.com/docs/api/enums/licensekeyvaliditystate.md)* * **vars**: *[TemplateVars](https://hyperformula.handsontable.com/docs/api/interfaces/templatevars.md)* ___ ### NamedExpressionOptions Ƭ **NamedExpressionOptions**: *Record‹string, string | number | boolean›* *Defined in [src/NamedExpressions.ts:22](https://github.com/handsontable/hyperformula/blob/a18429c/src/NamedExpressions.ts#L22)* ___ ### NoErrorCellValue Ƭ **NoErrorCellValue**: *number | string | boolean | null* *Defined in [src/CellValue.ts:8](https://github.com/handsontable/hyperformula/blob/a18429c/src/CellValue.ts#L8)* ___ ### RawCellContent Ƭ **RawCellContent**: *Date | string | number | boolean | null | undefined* *Defined in [src/CellContentParser.ts:25](https://github.com/handsontable/hyperformula/blob/a18429c/src/CellContentParser.ts#L25)* ___ ### Sheet Ƭ **Sheet**: *[RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent)[][]* *Defined in [src/Sheet.ts:12](https://github.com/handsontable/hyperformula/blob/a18429c/src/Sheet.ts#L12)* Two-dimenstional array representation of sheet ___ ### SheetDimensions Ƭ **SheetDimensions**: *object* *Defined in [src/Sheet.ts:19](https://github.com/handsontable/hyperformula/blob/a18429c/src/Sheet.ts#L19)* Represents size of a sheet #### Type declaration: * **height**: *number* * **width**: *number* ___ ### SheetIndex Ƭ **SheetIndex**: *[ColumnMap](https://hyperformula.handsontable.com/docs/api/globals.md#columnmap)[]* *Defined in [src/Lookup/ColumnIndex.ts:37](https://github.com/handsontable/hyperformula/blob/a18429c/src/Lookup/ColumnIndex.ts#L37)* ___ ### Sheets Ƭ **Sheets**: *Record‹string, [Sheet](https://hyperformula.handsontable.com/docs/api/globals.md#sheet)›* *Defined in [src/Sheet.ts:14](https://github.com/handsontable/hyperformula/blob/a18429c/src/Sheet.ts#L14)* ___ ### SimpleDateTime Ƭ **SimpleDateTime**: *[SimpleDate](https://hyperformula.handsontable.com/docs/api/interfaces/simpledate.md) & [SimpleTime](https://hyperformula.handsontable.com/docs/api/interfaces/simpletime.md)* *Defined in [src/DateTimeHelper.ts:29](https://github.com/handsontable/hyperformula/blob/a18429c/src/DateTimeHelper.ts#L29)* ___ ### Span Ƭ **Span**: *[RowsSpan](https://hyperformula.handsontable.com/docs/api/classes/rowsspan.md) | [ColumnsSpan](https://hyperformula.handsontable.com/docs/api/classes/columnsspan.md)* *Defined in [src/Span.ts:6](https://github.com/handsontable/hyperformula/blob/a18429c/src/Span.ts#L6)* **`license`** Copyright (c) 2025 Handsoncode. All rights reserved. ___ ### TranslatableErrorType Ƭ **TranslatableErrorType**: *Exclude‹[ErrorType](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-errortype), [LIC](https://hyperformula.handsontable.com/docs/api/enums/errortype.md#lic)›* *Defined in [src/Cell.ts:51](https://github.com/handsontable/hyperformula/blob/a18429c/src/Cell.ts#L51)* ## Variables ### DATE_SEPARATOR_REGEXP • **DATE_SEPARATOR_REGEXP**: *RegExp‹›* = new RegExp('[ /.-]') *Defined in [src/DateTimeDefault.ts:13](https://github.com/handsontable/hyperformula/blob/a18429c/src/DateTimeDefault.ts#L13)* ___ ### HOURS_PER_DAY • **HOURS_PER_DAY**: *24* = 24 *Defined in [src/DateTimeHelper.ts:15](https://github.com/handsontable/hyperformula/blob/a18429c/src/DateTimeHelper.ts#L15)* ___ ### LCID_CURRENCY_TAG • **LCID_CURRENCY_TAG**: *RegExp‹›* = /\[\$[^\-\]]+-/ *Defined in [src/format/format.ts:26](https://github.com/handsontable/hyperformula/blob/a18429c/src/format/format.ts#L26)* Detects Excel LCID-tagged currency tags (`[$SYMBOL-LCID]` with a non-empty SYMBOL portion). Shared by `defaultStringifyDateTime` and `defaultStringifyDuration` so a format string carrying such a tag short- circuits both date and duration dispatch and falls through to the number formatter (or the user-supplied `stringifyCurrency` callback). The pattern is intentionally unanchored: any occurrence of `[$SYMBOL-` in the format string triggers the guard. Excel does not mix date/time tokens with a currency tag in the same format string, so a mid-string match cannot misclassify a legitimate composite — every observed format string with a currency tag is currency-only. ___ ### MINUTES_PER_HOUR • **MINUTES_PER_HOUR**: *60* = 60 *Defined in [src/DateTimeHelper.ts:14](https://github.com/handsontable/hyperformula/blob/a18429c/src/DateTimeHelper.ts#L14)* ___ ### NOT_FOUND • **NOT_FOUND**: *-1* = -1 *Defined in [src/Lookup/AdvancedFind.ts:19](https://github.com/handsontable/hyperformula/blob/a18429c/src/Lookup/AdvancedFind.ts#L19)* ___ ### QUICK_CHECK_REGEXP • **QUICK_CHECK_REGEXP**: *RegExp‹›* = new RegExp('^[0-9/.\\-: ]+[ap]?m?$') *Defined in [src/DateTimeDefault.ts:11](https://github.com/handsontable/hyperformula/blob/a18429c/src/DateTimeDefault.ts#L11)* ___ ### SECONDS_PER_MINUTE • **SECONDS_PER_MINUTE**: *60* = 60 *Defined in [src/DateTimeHelper.ts:13](https://github.com/handsontable/hyperformula/blob/a18429c/src/DateTimeHelper.ts#L13)* ___ ### SECONDS_PRECISION • **SECONDS_PRECISION**: *1000* = 1000 *Defined in [src/DateTimeDefault.ts:15](https://github.com/handsontable/hyperformula/blob/a18429c/src/DateTimeDefault.ts#L15)* ___ ### TIME_FORMAT_SECONDS_ITEM_REGEXP • **TIME_FORMAT_SECONDS_ITEM_REGEXP**: *RegExp‹›* = new RegExp('^ss(\\.(s+|0+))?$') *Defined in [src/DateTimeDefault.ts:9](https://github.com/handsontable/hyperformula/blob/a18429c/src/DateTimeDefault.ts#L9)* ___ ### TIME_SEPARATOR • **TIME_SEPARATOR**: *":"* = ":" *Defined in [src/DateTimeDefault.ts:14](https://github.com/handsontable/hyperformula/blob/a18429c/src/DateTimeDefault.ts#L14)* ___ ### WHITESPACE_REGEXP • **WHITESPACE_REGEXP**: *RegExp‹›* = new RegExp('\\s+') *Defined in [src/DateTimeDefault.ts:12](https://github.com/handsontable/hyperformula/blob/a18429c/src/DateTimeDefault.ts#L12)* ___ ### WRONG_RANGE_SIZE • **WRONG_RANGE_SIZE**: *"AbsoluteCellRange: Wrong range size"* = "AbsoluteCellRange: Wrong range size" *Defined in [src/AbsoluteCellRange.ts:22](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L22)* ___ ### _notified • **_notified**: *boolean* = false *Defined in [src/helpers/licenseKeyValidator.ts:43](https://github.com/handsontable/hyperformula/blob/a18429c/src/helpers/licenseKeyValidator.ts#L43)* ___ ### _rl • **_rl**: *"length"* = "length" *Defined in [src/helpers/licenseKeyHelper.ts:9](https://github.com/handsontable/hyperformula/blob/a18429c/src/helpers/licenseKeyHelper.ts#L9)* **`license`** Copyright (c) 2025 Handsoncode. All rights reserved. ___ ### dateFormatRegex • **dateFormatRegex**: *RegExp‹›* = /(\\.|dd|DD|d|D|mm|MM|m|M|YYYY|YY|yyyy|yy|HH|hh|H|h|ss(\.(0+|s+))?|s|AM\/PM|am\/pm|A\/P|a\/p|\[mm]|\[MM]|\[hh]|\[HH])/g *Defined in [src/format/parser.ts:8](https://github.com/handsontable/hyperformula/blob/a18429c/src/format/parser.ts#L8)* ___ ### defaultLanguage • **defaultLanguage**: *string* = Config.defaultConfig.language *Defined in [src/index.ts:108](https://github.com/handsontable/hyperformula/blob/a18429c/src/index.ts#L108)* ___ ### memoizedParseDateFormat • **memoizedParseDateFormat**: *(Anonymous function)* = memoize(parseDateFormat) *Defined in [src/DateTimeDefault.ts:17](https://github.com/handsontable/hyperformula/blob/a18429c/src/DateTimeDefault.ts#L17)* ___ ### memoizedParseTimeFormat • **memoizedParseTimeFormat**: *(Anonymous function)* = memoize(parseTimeFormat) *Defined in [src/DateTimeDefault.ts:16](https://github.com/handsontable/hyperformula/blob/a18429c/src/DateTimeDefault.ts#L16)* ___ ### numDays • **numDays**: *number[]* = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] *Defined in [src/DateTimeHelper.ts:10](https://github.com/handsontable/hyperformula/blob/a18429c/src/DateTimeHelper.ts#L10)* ___ ### numberFormatRegex • **numberFormatRegex**: *RegExp‹›* = /(\\.|[#0]+(\.[#0]*)?)/g *Defined in [src/format/parser.ts:9](https://github.com/handsontable/hyperformula/blob/a18429c/src/format/parser.ts#L9)* ___ ### prefSumDays • **prefSumDays**: *number[]* = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334] *Defined in [src/DateTimeHelper.ts:11](https://github.com/handsontable/hyperformula/blob/a18429c/src/DateTimeHelper.ts#L11)* ___ ### privatePool • **privatePool**: *WeakMap‹[Config](https://hyperformula.handsontable.com/docs/api/classes/config.md), object›* = new WeakMap() *Defined in [src/Config.ts:27](https://github.com/handsontable/hyperformula/blob/a18429c/src/Config.ts#L27)* ## Functions ### CellValueTypeOrd ▸ **CellValueTypeOrd**(`arg`: [CellValueType](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-cellvaluetype)): *number* *Defined in [src/Cell.ts:97](https://github.com/handsontable/hyperformula/blob/a18429c/src/Cell.ts#L97)* **Parameters:** Name | Type | ------ | ------ | `arg` | [CellValueType](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-cellvaluetype) | **Returns:** *number* ___ ### _cp ▸ **_cp**(`v`: any): *number* *Defined in [src/helpers/licenseKeyHelper.ts:14](https://github.com/handsontable/hyperformula/blob/a18429c/src/helpers/licenseKeyHelper.ts#L14)* **Parameters:** Name | Type | ------ | ------ | `v` | any | **Returns:** *number* ___ ### _hd ▸ **_hd**(`v`: any): *number* *Defined in [src/helpers/licenseKeyHelper.ts:10](https://github.com/handsontable/hyperformula/blob/a18429c/src/helpers/licenseKeyHelper.ts#L10)* **Parameters:** Name | Type | ------ | ------ | `v` | any | **Returns:** *number* ___ ### _nm ▸ **_nm**(`v`: any): *string* *Defined in [src/helpers/licenseKeyHelper.ts:12](https://github.com/handsontable/hyperformula/blob/a18429c/src/helpers/licenseKeyHelper.ts#L12)* **Parameters:** Name | Type | ------ | ------ | `v` | any | **Returns:** *string* ___ ### _pi ▸ **_pi**(`v`: any): *number* *Defined in [src/helpers/licenseKeyHelper.ts:11](https://github.com/handsontable/hyperformula/blob/a18429c/src/helpers/licenseKeyHelper.ts#L11)* **Parameters:** Name | Type | ------ | ------ | `v` | any | **Returns:** *number* ___ ### _ss ▸ **_ss**(`v`: any, `s`: any, `l`: any): *any* *Defined in [src/helpers/licenseKeyHelper.ts:13](https://github.com/handsontable/hyperformula/blob/a18429c/src/helpers/licenseKeyHelper.ts#L13)* **Parameters:** Name | Type | ------ | ------ | `v` | any | `s` | any | `l` | any | **Returns:** *any* ___ ### absoluteSheetReference ▸ **absoluteSheetReference**(`address`: AddressWithSheet, `baseAddress`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *number* *Defined in [src/Cell.ts:222](https://github.com/handsontable/hyperformula/blob/a18429c/src/Cell.ts#L222)* **Parameters:** Name | Type | ------ | ------ | `address` | AddressWithSheet | `baseAddress` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | **Returns:** *number* ___ ### absolutizeDependencies ▸ **absolutizeDependencies**(`deps`: RelativeDependency[], `baseAddress`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *[CellDependency](https://hyperformula.handsontable.com/docs/api/globals.md#celldependency)[]* *Defined in [src/absolutizeDependencies.ts:17](https://github.com/handsontable/hyperformula/blob/a18429c/src/absolutizeDependencies.ts#L17)* Converts dependencies from maybe relative addressing to absolute addressing. **Parameters:** Name | Type | Description | ------ | ------ | ------ | `deps` | RelativeDependency[] | list of addresses in R0C0 format | `baseAddress` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | base address with regard to which make a convertion | **Returns:** *[CellDependency](https://hyperformula.handsontable.com/docs/api/globals.md#celldependency)[]* ___ ### addressKey ▸ **addressKey**(`address`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *string* *Defined in [src/Cell.ts:209](https://github.com/handsontable/hyperformula/blob/a18429c/src/Cell.ts#L209)* **Parameters:** Name | Type | ------ | ------ | `address` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | **Returns:** *string* ___ ### arraySizeForBinaryOp ▸ **arraySizeForBinaryOp**(`leftArraySize`: [ArraySize](https://hyperformula.handsontable.com/docs/api/classes/arraysize.md), `rightArraySize`: [ArraySize](https://hyperformula.handsontable.com/docs/api/classes/arraysize.md)): *[ArraySize](https://hyperformula.handsontable.com/docs/api/classes/arraysize.md)* *Defined in [src/ArraySize.ts:34](https://github.com/handsontable/hyperformula/blob/a18429c/src/ArraySize.ts#L34)* **Parameters:** Name | Type | ------ | ------ | `leftArraySize` | [ArraySize](https://hyperformula.handsontable.com/docs/api/classes/arraysize.md) | `rightArraySize` | [ArraySize](https://hyperformula.handsontable.com/docs/api/classes/arraysize.md) | **Returns:** *[ArraySize](https://hyperformula.handsontable.com/docs/api/classes/arraysize.md)* ___ ### arraySizeForUnaryOp ▸ **arraySizeForUnaryOp**(`arraySize`: [ArraySize](https://hyperformula.handsontable.com/docs/api/classes/arraysize.md)): *[ArraySize](https://hyperformula.handsontable.com/docs/api/classes/arraysize.md)* *Defined in [src/ArraySize.ts:38](https://github.com/handsontable/hyperformula/blob/a18429c/src/ArraySize.ts#L38)* **Parameters:** Name | Type | ------ | ------ | `arraySize` | [ArraySize](https://hyperformula.handsontable.com/docs/api/classes/arraysize.md) | **Returns:** *[ArraySize](https://hyperformula.handsontable.com/docs/api/classes/arraysize.md)* ___ ### buildColumnSearchStrategy ▸ **buildColumnSearchStrategy**(`dependencyGraph`: DependencyGraph, `config`: [Config](https://hyperformula.handsontable.com/docs/api/classes/config.md), `statistics`: [Statistics](https://hyperformula.handsontable.com/docs/api/classes/statistics.md)): *[ColumnSearchStrategy](https://hyperformula.handsontable.com/docs/api/interfaces/columnsearchstrategy.md)* *Defined in [src/Lookup/SearchStrategy.ts:63](https://github.com/handsontable/hyperformula/blob/a18429c/src/Lookup/SearchStrategy.ts#L63)* **Parameters:** Name | Type | ------ | ------ | `dependencyGraph` | DependencyGraph | `config` | [Config](https://hyperformula.handsontable.com/docs/api/classes/config.md) | `statistics` | [Statistics](https://hyperformula.handsontable.com/docs/api/classes/statistics.md) | **Returns:** *[ColumnSearchStrategy](https://hyperformula.handsontable.com/docs/api/interfaces/columnsearchstrategy.md)* ___ ### checkKeySchema ▸ **checkKeySchema**(`v`: any): *boolean* *Defined in [src/helpers/licenseKeyHelper.ts:20](https://github.com/handsontable/hyperformula/blob/a18429c/src/helpers/licenseKeyHelper.ts#L20)* **Parameters:** Name | Type | ------ | ------ | `v` | any | **Returns:** *boolean* ___ ### checkLicenseKeyValidity ▸ **checkLicenseKeyValidity**(`licenseKey`: string): *[LicenseKeyValidityState](https://hyperformula.handsontable.com/docs/api/enums/licensekeyvaliditystate.md)* *Defined in [src/helpers/licenseKeyValidator.ts:51](https://github.com/handsontable/hyperformula/blob/a18429c/src/helpers/licenseKeyValidator.ts#L51)* Checks if the provided license key is grammatically valid or not expired. **Parameters:** Name | Type | Description | ------ | ------ | ------ | `licenseKey` | string | The license key to check. | **Returns:** *[LicenseKeyValidityState](https://hyperformula.handsontable.com/docs/api/enums/licensekeyvaliditystate.md)* Returns the checking state. ___ ### collatorFromConfig ▸ **collatorFromConfig**(`config`: [Config](https://hyperformula.handsontable.com/docs/api/classes/config.md)): *Collator* *Defined in [src/StringHelper.ts:8](https://github.com/handsontable/hyperformula/blob/a18429c/src/StringHelper.ts#L8)* **Parameters:** Name | Type | ------ | ------ | `config` | [Config](https://hyperformula.handsontable.com/docs/api/classes/config.md) | **Returns:** *Collator* ___ ### configCheckIfParametersNotInConflict ▸ **configCheckIfParametersNotInConflict**(...`params`: object[]): *void* *Defined in [src/ArgumentSanitization.ts:57](https://github.com/handsontable/hyperformula/blob/a18429c/src/ArgumentSanitization.ts#L57)* **Parameters:** Name | Type | ------ | ------ | `...params` | object[] | **Returns:** *void* ___ ### configValueFromParam ▸ **configValueFromParam**(`inputValue`: any, `expectedType`: string | string[], `paramName`: [ConfigParamsList](https://hyperformula.handsontable.com/docs/api/globals.md#configparamslist)): *any* *Defined in [src/ArgumentSanitization.ts:16](https://github.com/handsontable/hyperformula/blob/a18429c/src/ArgumentSanitization.ts#L16)* **Parameters:** Name | Type | ------ | ------ | `inputValue` | any | `expectedType` | string | string[] | `paramName` | [ConfigParamsList](https://hyperformula.handsontable.com/docs/api/globals.md#configparamslist) | **Returns:** *any* ___ ### configValueFromParamCheck ▸ **configValueFromParamCheck**(`inputValue`: any, `typeCheck`: function, `expectedType`: string, `paramName`: [ConfigParamsList](https://hyperformula.handsontable.com/docs/api/globals.md#configparamslist)): *any* *Defined in [src/ArgumentSanitization.ts:47](https://github.com/handsontable/hyperformula/blob/a18429c/src/ArgumentSanitization.ts#L47)* **Parameters:** ▪ **inputValue**: *any* ▪ **typeCheck**: *function* ▸ (`object`: any): *boolean* **Parameters:** Name | Type | ------ | ------ | `object` | any | ▪ **expectedType**: *string* ▪ **paramName**: *[ConfigParamsList](https://hyperformula.handsontable.com/docs/api/globals.md#configparamslist)* **Returns:** *any* ___ ### countChars ▸ **countChars**(`text`: string, `char`: string): *number* *Defined in [src/format/format.ts:74](https://github.com/handsontable/hyperformula/blob/a18429c/src/format/format.ts#L74)* **Parameters:** Name | Type | ------ | ------ | `text` | string | `char` | string | **Returns:** *number* ___ ### createTokens ▸ **createTokens**(`regexTokens`: RegExpExecArray[], `str`: string): *[FormatToken](https://hyperformula.handsontable.com/docs/api/interfaces/formattoken.md)[]* *Defined in [src/format/parser.ts:66](https://github.com/handsontable/hyperformula/blob/a18429c/src/format/parser.ts#L66)* **Parameters:** Name | Type | ------ | ------ | `regexTokens` | RegExpExecArray[] | `str` | string | **Returns:** *[FormatToken](https://hyperformula.handsontable.com/docs/api/interfaces/formattoken.md)[]* ___ ### dayToMonth ▸ **dayToMonth**(`dayOfYear`: number): *number* *Defined in [src/DateTimeHelper.ts:270](https://github.com/handsontable/hyperformula/blob/a18429c/src/DateTimeHelper.ts#L270)* **Parameters:** Name | Type | ------ | ------ | `dayOfYear` | number | **Returns:** *number* ___ ### defaultParseToDate ▸ **defaultParseToDate**(`dateItems`: string[], `dateFormat`: [Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹string›): *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹[SimpleDate](https://hyperformula.handsontable.com/docs/api/interfaces/simpledate.md)›* *Defined in [src/DateTimeDefault.ts:137](https://github.com/handsontable/hyperformula/blob/a18429c/src/DateTimeDefault.ts#L137)* Parses a date value from a string if the string matches the given date format. **Parameters:** Name | Type | ------ | ------ | `dateItems` | string[] | `dateFormat` | [Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹string› | **Returns:** *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹[SimpleDate](https://hyperformula.handsontable.com/docs/api/interfaces/simpledate.md)›* ___ ### defaultParseToDateTime ▸ **defaultParseToDateTime**(`text`: string, `dateFormat`: [Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹string›, `timeFormat`: [Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹string›): *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹[DateTime](https://hyperformula.handsontable.com/docs/api/globals.md#datetime)›* *Defined in [src/DateTimeDefault.ts:30](https://github.com/handsontable/hyperformula/blob/a18429c/src/DateTimeDefault.ts#L30)* Parses a DateTime value from a string if the string matches the given date format and time format. Idea for more readable implementation: - divide string into parts by a regexp [date_regexp]? [time_regexp]? [ampm_regexp]? - start by finding the time part, because it is unambiguous '([0-9]+:[0-9:.]+ ?[ap]?m?)$', before it is the date part - OR split by spaces - last segment is ampm token, second to last is time (with or without ampm), rest is date If applied: - date parsing might work differently after these changes but still according to the docs - make sure to test edge cases like timeFormats: ['hh', 'ss.ss'] etc, string: '01-01-2019 AM', 'PM' **Parameters:** Name | Type | ------ | ------ | `text` | string | `dateFormat` | [Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹string› | `timeFormat` | [Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹string› | **Returns:** *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹[DateTime](https://hyperformula.handsontable.com/docs/api/globals.md#datetime)›* ___ ### defaultParseToTime ▸ **defaultParseToTime**(`timeItems`: string[], `timeFormat`: [Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹string›): *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹[SimpleTime](https://hyperformula.handsontable.com/docs/api/interfaces/simpletime.md)›* *Defined in [src/DateTimeDefault.ts:82](https://github.com/handsontable/hyperformula/blob/a18429c/src/DateTimeDefault.ts#L82)* Parses a time value from a string if the string matches the given time format. **Parameters:** Name | Type | ------ | ------ | `timeItems` | string[] | `timeFormat` | [Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹string› | **Returns:** *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹[SimpleTime](https://hyperformula.handsontable.com/docs/api/interfaces/simpletime.md)›* ___ ### defaultStringifyCurrency ▸ **defaultStringifyCurrency**(`_value`: number, `_formatArg`: string): *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹string›* *Defined in [src/format/format.ts:328](https://github.com/handsontable/hyperformula/blob/a18429c/src/format/format.ts#L328)* Default implementation of the `stringifyCurrency` config option. Returning `undefined` instructs the formatter to fall through to the built-in number formatter, preserving HyperFormula's zero-dependency default behavior. Replace this default by setting the [`stringifyCurrency`](https://hyperformula.handsontable.com/api/interfaces/configparams.md#stringifycurrency) config option. **Parameters:** Name | Type | Description | ------ | ------ | ------ | `_value` | number | the numeric value to format (unused in default). | `_formatArg` | string | the format string passed to `TEXT` (unused in default). | **Returns:** *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹string›* `undefined` — caller should fall through to the built-in formatter. ___ ### defaultStringifyDateTime ▸ **defaultStringifyDateTime**(`dateTime`: [SimpleDateTime](https://hyperformula.handsontable.com/docs/api/globals.md#simpledatetime), `formatArg`: string): *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹string›* *Defined in [src/format/format.ts:224](https://github.com/handsontable/hyperformula/blob/a18429c/src/format/format.ts#L224)* Default `stringifyDateTime` callback — formats a date/time value against an Excel-style format string (e.g. `YYYY-MM-DD HH:mm:ss`). Returns `undefined` for format strings that are not date/time formats so the dispatcher in `format()` can fall through to `parseForNumberFormat` (or to a user-supplied `stringifyCurrency` callback for currency-tagged formats). **LCID currency-tag guard** — explicitly returns `undefined` for Excel currency tags `[$SYMBOL-LCID]` (non-empty SYMBOL portion). Without the guard, `parseForDateTimeFormat` greedily consumes letters like `D`/`M`/`S`/`Y`/`H` inside the currency code (e.g. `D` in USD, `H` in CHF, `M`+`D` in AMD), mangling the output of an `[$USD-409] #,##0.00` format into `[$US9-409] #,##0.00` because `D` is read as a day token. The pre-HF-24 behaviour was to mis-format; the guarded return is the deliberate correction, not a regression. Bit-for-bit compatibility is preserved for every non-currency format (dates, durations, `$#,##0.00`, etc.). The guard pattern (`/\[\$[^\-\]]+-/`) requires ≥1 character between `[$` and `-` so it distinguishes currency tags (`[$USD-409]`, `[$€-2]`) from Excel's locale-only modifier (`[$-409]`, `[$-F800]`), which is valid on date/time formats and must continue to flow through this function. **Parameters:** Name | Type | Description | ------ | ------ | ------ | `dateTime` | [SimpleDateTime](https://hyperformula.handsontable.com/docs/api/globals.md#simpledatetime) | parsed date/time value to render | `formatArg` | string | Excel-style format string | **Returns:** *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹string›* formatted string, or `undefined` to defer to the next dispatch step ___ ### defaultStringifyDuration ▸ **defaultStringifyDuration**(`time`: [SimpleTime](https://hyperformula.handsontable.com/docs/api/interfaces/simpletime.md), `formatArg`: string): *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹string›* *Defined in [src/format/format.ts:132](https://github.com/handsontable/hyperformula/blob/a18429c/src/format/format.ts#L132)* Default `stringifyDuration` callback — formats a duration value against an Excel-style time format string (e.g. `[hh]:mm:ss`). Returns `undefined` for format strings that are not duration formats so the dispatcher in `format()` can fall through to other handlers. **LCID currency-tag guard** — sibling to the same guard in `defaultStringifyDateTime`; explicitly returns `undefined` for Excel currency tags `[$SYMBOL-LCID]` because the SYMBOL portion contains duration-token letters (`H` in CHF/HUF, `m` in AMD/HMD) that `parseForDateTimeFormat` would otherwise interpret as time tokens and mangle the output. See `defaultStringifyDateTime` for the full symbol-vs-locale-modifier rationale and the historical pre-HF-24 behaviour the guard corrects. **Parameters:** Name | Type | Description | ------ | ------ | ------ | `time` | [SimpleTime](https://hyperformula.handsontable.com/docs/api/interfaces/simpletime.md) | parsed duration value to render | `formatArg` | string | Excel-style format string | **Returns:** *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹string›* formatted string, or `undefined` to defer to the next dispatch step ___ ### doesContainRelativeReferences ▸ **doesContainRelativeReferences**(`ast`: Ast): *boolean* *Defined in [src/NamedExpressions.ts:299](https://github.com/handsontable/hyperformula/blob/a18429c/src/NamedExpressions.ts#L299)* **Parameters:** Name | Type | ------ | ------ | `ast` | Ast | **Returns:** *boolean* ___ ### doesItLookLikeADateTimeQuickCheck ▸ **doesItLookLikeADateTimeQuickCheck**(`text`: string): *boolean* *Defined in [src/DateTimeDefault.ts:222](https://github.com/handsontable/hyperformula/blob/a18429c/src/DateTimeDefault.ts#L222)* If this function returns false, the string is not parsable as a date time. Otherwise, it might be. This is a quick check that is used to avoid running the more expensive parsing operations. **Parameters:** Name | Type | ------ | ------ | `text` | string | **Returns:** *boolean* ___ ### empty ▸ **empty**‹**T**›(): *IterableIterator‹T›* *Defined in [src/generatorUtils.ts:8](https://github.com/handsontable/hyperformula/blob/a18429c/src/generatorUtils.ts#L8)* **Type parameters:** ▪ **T** **Returns:** *IterableIterator‹T›* ___ ### equalSimpleCellAddress ▸ **equalSimpleCellAddress**(`left`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), `right`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *boolean* *Defined in [src/Cell.ts:226](https://github.com/handsontable/hyperformula/blob/a18429c/src/Cell.ts#L226)* **Parameters:** Name | Type | ------ | ------ | `left` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | `right` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | **Returns:** *boolean* ___ ### extractTime ▸ **extractTime**(`v`: any): *number* *Defined in [src/helpers/licenseKeyHelper.ts:16](https://github.com/handsontable/hyperformula/blob/a18429c/src/helpers/licenseKeyHelper.ts#L16)* **Parameters:** Name | Type | ------ | ------ | `v` | any | **Returns:** *number* ___ ### filterDependenciesOutOfScope ▸ **filterDependenciesOutOfScope**(`deps`: [CellDependency](https://hyperformula.handsontable.com/docs/api/globals.md#celldependency)[]): *[CellDependency](https://hyperformula.handsontable.com/docs/api/globals.md#celldependency)[]* *Defined in [src/absolutizeDependencies.ts:21](https://github.com/handsontable/hyperformula/blob/a18429c/src/absolutizeDependencies.ts#L21)* **Parameters:** Name | Type | ------ | ------ | `deps` | [CellDependency](https://hyperformula.handsontable.com/docs/api/globals.md#celldependency)[] | **Returns:** *[CellDependency](https://hyperformula.handsontable.com/docs/api/globals.md#celldependency)[]* ___ ### findBoundaries ▸ **findBoundaries**(`sheet`: [Sheet](https://hyperformula.handsontable.com/docs/api/globals.md#sheet)): *[SheetBoundaries](https://hyperformula.handsontable.com/docs/api/interfaces/sheetboundaries.md)* *Defined in [src/Sheet.ts:49](https://github.com/handsontable/hyperformula/blob/a18429c/src/Sheet.ts#L49)* Returns actual width, height and fill ratio of a sheet **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheet` | [Sheet](https://hyperformula.handsontable.com/docs/api/globals.md#sheet) | two-dimmensional array sheet representation | **Returns:** *[SheetBoundaries](https://hyperformula.handsontable.com/docs/api/interfaces/sheetboundaries.md)* ___ ### findInOrderedArray ▸ **findInOrderedArray**(`key`: number, `values`: number[], `handlingMisses`: "lowerBound" | "upperBound"): *number* *Defined in [src/Lookup/ColumnIndex.ts:339](https://github.com/handsontable/hyperformula/blob/a18429c/src/Lookup/ColumnIndex.ts#L339)* **Parameters:** Name | Type | Default | ------ | ------ | ------ | `key` | number | - | `values` | number[] | - | `handlingMisses` | "lowerBound" | "upperBound" | "upperBound" | **Returns:** *number* ___ ### first ▸ **first**‹**T**›(`iterable`: IterableIterator‹T›): *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹T›* *Defined in [src/generatorUtils.ts:22](https://github.com/handsontable/hyperformula/blob/a18429c/src/generatorUtils.ts#L22)* **Type parameters:** ▪ **T** **Parameters:** Name | Type | ------ | ------ | `iterable` | IterableIterator‹T› | **Returns:** *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹T›* ___ ### format ▸ **format**(`value`: number, `formatArg`: string, `config`: [Config](https://hyperformula.handsontable.com/docs/api/classes/config.md), `dateHelper`: [DateTimeHelper](https://hyperformula.handsontable.com/docs/api/classes/datetimehelper.md)): *RawScalarValue* *Defined in [src/format/format.ts:28](https://github.com/handsontable/hyperformula/blob/a18429c/src/format/format.ts#L28)* **Parameters:** Name | Type | ------ | ------ | `value` | number | `formatArg` | string | `config` | [Config](https://hyperformula.handsontable.com/docs/api/classes/config.md) | `dateHelper` | [DateTimeHelper](https://hyperformula.handsontable.com/docs/api/classes/datetimehelper.md) | **Returns:** *RawScalarValue* ___ ### formatDate ▸ **formatDate**(`date`: Date): *string* *Defined in [src/helpers/licenseKeyValidator.ts:91](https://github.com/handsontable/hyperformula/blob/a18429c/src/helpers/licenseKeyValidator.ts#L91)* Formats a Date instance to hard-coded format MMMM DD, YYYY. **Parameters:** Name | Type | Description | ------ | ------ | ------ | `date` | Date | The date to format. | **Returns:** *string* ___ ### formatToken ▸ **formatToken**(`type`: [TokenType](https://hyperformula.handsontable.com/docs/api/enums/tokentype.md), `value`: string): *[FormatToken](https://hyperformula.handsontable.com/docs/api/interfaces/formattoken.md)* *Defined in [src/format/parser.ts:21](https://github.com/handsontable/hyperformula/blob/a18429c/src/format/parser.ts#L21)* **Parameters:** Name | Type | ------ | ------ | `type` | [TokenType](https://hyperformula.handsontable.com/docs/api/enums/tokentype.md) | `value` | string | **Returns:** *[FormatToken](https://hyperformula.handsontable.com/docs/api/interfaces/formattoken.md)* ___ ### getCellType ▸ **getCellType**(`vertex`: [Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹CellVertex›, `address`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *[CellType](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-celltype)* *Defined in [src/Cell.ts:61](https://github.com/handsontable/hyperformula/blob/a18429c/src/Cell.ts#L61)* **Parameters:** Name | Type | ------ | ------ | `vertex` | [Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹CellVertex› | `address` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | **Returns:** *[CellType](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-celltype)* ___ ### getCellValueDetailedType ▸ **getCellValueDetailedType**(`cellValue`: InterpreterValue): *[CellValueDetailedType](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-cellvaluedetailedtype)* *Defined in [src/Cell.ts:133](https://github.com/handsontable/hyperformula/blob/a18429c/src/Cell.ts#L133)* **Parameters:** Name | Type | ------ | ------ | `cellValue` | InterpreterValue | **Returns:** *[CellValueDetailedType](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-cellvaluedetailedtype)* ___ ### getCellValueFormat ▸ **getCellValueFormat**(`cellValue`: InterpreterValue): *string | undefined* *Defined in [src/Cell.ts:141](https://github.com/handsontable/hyperformula/blob/a18429c/src/Cell.ts#L141)* **Parameters:** Name | Type | ------ | ------ | `cellValue` | InterpreterValue | **Returns:** *string | undefined* ___ ### getCellValueType ▸ **getCellValueType**(`cellValue`: InterpreterValue): *[CellValueType](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-cellvaluetype)* *Defined in [src/Cell.ts:113](https://github.com/handsontable/hyperformula/blob/a18429c/src/Cell.ts#L113)* **Parameters:** Name | Type | ------ | ------ | `cellValue` | InterpreterValue | **Returns:** *[CellValueType](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-cellvaluetype)* ___ ### getDefaultConfig ▸ **getDefaultConfig**(): *[ConfigParams](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md)* *Defined in [src/Config.ts:354](https://github.com/handsontable/hyperformula/blob/a18429c/src/Config.ts#L354)* **Returns:** *[ConfigParams](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md)* ___ ### getFullConfigFromPartial ▸ **getFullConfigFromPartial**(`partialConfig`: Partial‹[ConfigParams](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md)›): *[ConfigParams](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md)* *Defined in [src/Config.ts:340](https://github.com/handsontable/hyperformula/blob/a18429c/src/Config.ts#L340)* **Parameters:** Name | Type | ------ | ------ | `partialConfig` | Partial‹[ConfigParams](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md)› | **Returns:** *[ConfigParams](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md)* ___ ### instanceOfSimpleDate ▸ **instanceOfSimpleDate**(`obj`: any): *obj is SimpleDate* *Defined in [src/DateTimeHelper.ts:34](https://github.com/handsontable/hyperformula/blob/a18429c/src/DateTimeHelper.ts#L34)* **Parameters:** Name | Type | ------ | ------ | `obj` | any | **Returns:** *obj is SimpleDate* ___ ### instanceOfSimpleTime ▸ **instanceOfSimpleTime**(`obj`: any): *obj is SimpleTime* *Defined in [src/DateTimeHelper.ts:43](https://github.com/handsontable/hyperformula/blob/a18429c/src/DateTimeHelper.ts#L43)* **Parameters:** Name | Type | ------ | ------ | `obj` | any | **Returns:** *obj is SimpleTime* ___ ### invalidSimpleColumnAddress ▸ **invalidSimpleColumnAddress**(`address`: [SimpleColumnAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecolumnaddress.md)): *boolean* *Defined in [src/Cell.ts:190](https://github.com/handsontable/hyperformula/blob/a18429c/src/Cell.ts#L190)* **Parameters:** Name | Type | ------ | ------ | `address` | [SimpleColumnAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecolumnaddress.md) | **Returns:** *boolean* ___ ### invalidSimpleRowAddress ▸ **invalidSimpleRowAddress**(`address`: [SimpleRowAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplerowaddress.md)): *boolean* *Defined in [src/Cell.ts:181](https://github.com/handsontable/hyperformula/blob/a18429c/src/Cell.ts#L181)* **Parameters:** Name | Type | ------ | ------ | `address` | [SimpleRowAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplerowaddress.md) | **Returns:** *boolean* ___ ### isBoolean ▸ **isBoolean**(`text`: string): *boolean* *Defined in [src/CellContentParser.ts:81](https://github.com/handsontable/hyperformula/blob/a18429c/src/CellContentParser.ts#L81)* **Parameters:** Name | Type | ------ | ------ | `text` | string | **Returns:** *boolean* ___ ### isColOrRowInvalid ▸ **isColOrRowInvalid**(`address`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *boolean* *Defined in [src/Cell.ts:203](https://github.com/handsontable/hyperformula/blob/a18429c/src/Cell.ts#L203)* Checks if the column or row id is negative. **Parameters:** Name | Type | ------ | ------ | `address` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | **Returns:** *boolean* ___ ### isError ▸ **isError**(`text`: string, `errorMapping`: Record‹string, [ErrorType](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-errortype)›): *boolean* *Defined in [src/CellContentParser.ts:86](https://github.com/handsontable/hyperformula/blob/a18429c/src/CellContentParser.ts#L86)* **Parameters:** Name | Type | ------ | ------ | `text` | string | `errorMapping` | Record‹string, [ErrorType](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-errortype)› | **Returns:** *boolean* ___ ### isEscapeToken ▸ **isEscapeToken**(`token`: RegExpExecArray): *boolean* *Defined in [src/format/parser.ts:131](https://github.com/handsontable/hyperformula/blob/a18429c/src/format/parser.ts#L131)* **Parameters:** Name | Type | ------ | ------ | `token` | RegExpExecArray | **Returns:** *boolean* ___ ### isFormula ▸ **isFormula**(`text`: string): *boolean* *Defined in [src/CellContentParser.ts:77](https://github.com/handsontable/hyperformula/blob/a18429c/src/CellContentParser.ts#L77)* Checks whether string looks like formula or not. **Parameters:** Name | Type | Description | ------ | ------ | ------ | `text` | string | formula | **Returns:** *boolean* ___ ### isNonnegativeInteger ▸ **isNonnegativeInteger**(`x`: number): *boolean* *Defined in [src/CrudOperations.ts:657](https://github.com/handsontable/hyperformula/blob/a18429c/src/CrudOperations.ts#L657)* **Parameters:** Name | Type | ------ | ------ | `x` | number | **Returns:** *boolean* ___ ### isPositiveInteger ▸ **isPositiveInteger**(`x`: number): *boolean* *Defined in [src/CrudOperations.ts:653](https://github.com/handsontable/hyperformula/blob/a18429c/src/CrudOperations.ts#L653)* **Parameters:** Name | Type | ------ | ------ | `x` | number | **Returns:** *boolean* ___ ### isRowOrColumnRange ▸ **isRowOrColumnRange**(`leftCorner`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), `width`: number, `height`: number): *boolean* *Defined in [src/Operations.ts:1100](https://github.com/handsontable/hyperformula/blob/a18429c/src/Operations.ts#L1100)* **Parameters:** Name | Type | ------ | ------ | `leftCorner` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | `width` | number | `height` | number | **Returns:** *boolean* ___ ### isSimpleCellAddress ▸ **isSimpleCellAddress**(`obj`: unknown): *obj is SimpleCellAddress* *Defined in [src/Cell.ts:214](https://github.com/handsontable/hyperformula/blob/a18429c/src/Cell.ts#L214)* Checks if the object is a simple cell address. **Parameters:** Name | Type | ------ | ------ | `obj` | unknown | **Returns:** *obj is SimpleCellAddress* ___ ### isSimpleCellRange ▸ **isSimpleCellRange**(`val`: unknown): *val is SimpleCellRange* *Defined in [src/AbsoluteCellRange.ts:34](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L34)* Type guard that checks if an object is a valid SimpleCellRange. **Parameters:** Name | Type | Description | ------ | ------ | ------ | `val` | unknown | Value to check | **Returns:** *val is SimpleCellRange* True if and only if the object is a valid SimpleCellRange ___ ### matchDateFormat ▸ **matchDateFormat**(`str`: string): *RegExpExecArray[]* *Defined in [src/format/parser.ts:39](https://github.com/handsontable/hyperformula/blob/a18429c/src/format/parser.ts#L39)* **Parameters:** Name | Type | ------ | ------ | `str` | string | **Returns:** *RegExpExecArray[]* ___ ### matchNumberFormat ▸ **matchNumberFormat**(`str`: string): *RegExpExecArray[]* *Defined in [src/format/parser.ts:55](https://github.com/handsontable/hyperformula/blob/a18429c/src/format/parser.ts#L55)* **Parameters:** Name | Type | ------ | ------ | `str` | string | **Returns:** *RegExpExecArray[]* ___ ### memoize ▸ **memoize**‹**T**›(`fn`: function): *(Anonymous function)* *Defined in [src/DateTimeDefault.ts:229](https://github.com/handsontable/hyperformula/blob/a18429c/src/DateTimeDefault.ts#L229)* Function memoization for improved performance. **Type parameters:** ▪ **T** **Parameters:** ▪ **fn**: *function* ▸ (`arg`: string): *T* **Parameters:** Name | Type | ------ | ------ | `arg` | string | **Returns:** *(Anonymous function)* ___ ### movedSimpleCellAddress ▸ **movedSimpleCellAddress**(`address`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), `toSheet`: number, `toRight`: number, `toBottom`: number): *[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)* *Defined in [src/Cell.ts:205](https://github.com/handsontable/hyperformula/blob/a18429c/src/Cell.ts#L205)* **Parameters:** Name | Type | ------ | ------ | `address` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | `toSheet` | number | `toRight` | number | `toBottom` | number | **Returns:** *[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)* ___ ### normalizeAddedIndexes ▸ **normalizeAddedIndexes**(`indexes`: [ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[]): *[ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[]* *Defined in [src/Operations.ts:1068](https://github.com/handsontable/hyperformula/blob/a18429c/src/Operations.ts#L1068)* **Parameters:** Name | Type | ------ | ------ | `indexes` | [ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[] | **Returns:** *[ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[]* ___ ### normalizeRemovedIndexes ▸ **normalizeRemovedIndexes**(`indexes`: [ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[]): *[ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[]* *Defined in [src/Operations.ts:1037](https://github.com/handsontable/hyperformula/blob/a18429c/src/Operations.ts#L1037)* **Parameters:** Name | Type | ------ | ------ | `indexes` | [ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[] | **Returns:** *[ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[]* ___ ### numberFormat ▸ **numberFormat**(`tokens`: [FormatToken](https://hyperformula.handsontable.com/docs/api/interfaces/formattoken.md)[], `value`: number): *RawScalarValue* *Defined in [src/format/format.ts:78](https://github.com/handsontable/hyperformula/blob/a18429c/src/format/format.ts#L78)* **Parameters:** Name | Type | ------ | ------ | `tokens` | [FormatToken](https://hyperformula.handsontable.com/docs/api/interfaces/formattoken.md)[] | `value` | number | **Returns:** *RawScalarValue* ___ ### numberToSimpleTime ▸ **numberToSimpleTime**(`arg`: number): *[SimpleTime](https://hyperformula.handsontable.com/docs/api/interfaces/simpletime.md)* *Defined in [src/DateTimeHelper.ts:304](https://github.com/handsontable/hyperformula/blob/a18429c/src/DateTimeHelper.ts#L304)* **Parameters:** Name | Type | ------ | ------ | `arg` | number | **Returns:** *[SimpleTime](https://hyperformula.handsontable.com/docs/api/interfaces/simpletime.md)* ___ ### objectDestroy ▸ **objectDestroy**(`object`: any): *void* *Defined in [src/Destroy.ts:6](https://github.com/handsontable/hyperformula/blob/a18429c/src/Destroy.ts#L6)* **`license`** Copyright (c) 2025 Handsoncode. All rights reserved. **Parameters:** Name | Type | ------ | ------ | `object` | any | **Returns:** *void* ___ ### offsetMonth ▸ **offsetMonth**(`date`: [SimpleDate](https://hyperformula.handsontable.com/docs/api/interfaces/simpledate.md), `offset`: number): *[SimpleDate](https://hyperformula.handsontable.com/docs/api/interfaces/simpledate.md)* *Defined in [src/DateTimeHelper.ts:286](https://github.com/handsontable/hyperformula/blob/a18429c/src/DateTimeHelper.ts#L286)* **Parameters:** Name | Type | ------ | ------ | `date` | [SimpleDate](https://hyperformula.handsontable.com/docs/api/interfaces/simpledate.md) | `offset` | number | **Returns:** *[SimpleDate](https://hyperformula.handsontable.com/docs/api/interfaces/simpledate.md)* ___ ### padLeft ▸ **padLeft**(`number`: number | string, `size`: number): *string* *Defined in [src/format/format.ts:58](https://github.com/handsontable/hyperformula/blob/a18429c/src/format/format.ts#L58)* **Parameters:** Name | Type | ------ | ------ | `number` | number | string | `size` | number | **Returns:** *string* ___ ### padRight ▸ **padRight**(`number`: number | string, `size`: number): *string* *Defined in [src/format/format.ts:66](https://github.com/handsontable/hyperformula/blob/a18429c/src/format/format.ts#L66)* **Parameters:** Name | Type | ------ | ------ | `number` | number | string | `size` | number | **Returns:** *string* ___ ### parse ▸ **parse**(`str`: string): *[FormatExpression](https://hyperformula.handsontable.com/docs/api/interfaces/formatexpression.md)* *Defined in [src/format/parser.ts:121](https://github.com/handsontable/hyperformula/blob/a18429c/src/format/parser.ts#L121)* **Parameters:** Name | Type | ------ | ------ | `str` | string | **Returns:** *[FormatExpression](https://hyperformula.handsontable.com/docs/api/interfaces/formatexpression.md)* ___ ### parseDateFormat ▸ **parseDateFormat**(`dateFormat`: string): *object* *Defined in [src/DateTimeDefault.ts:206](https://github.com/handsontable/hyperformula/blob/a18429c/src/DateTimeDefault.ts#L206)* Parses a date format string into a format object. **Parameters:** Name | Type | ------ | ------ | `dateFormat` | string | **Returns:** *object* * **dayItem**: *number* * **itemsCount**: *number* * **longYearItem**: *number* * **monthItem**: *number* * **shortYearItem**: *number* ___ ### parseForDateTimeFormat ▸ **parseForDateTimeFormat**(`str`: string): *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹[FormatExpression](https://hyperformula.handsontable.com/docs/api/interfaces/formatexpression.md)›* *Defined in [src/format/parser.ts:96](https://github.com/handsontable/hyperformula/blob/a18429c/src/format/parser.ts#L96)* **Parameters:** Name | Type | ------ | ------ | `str` | string | **Returns:** *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹[FormatExpression](https://hyperformula.handsontable.com/docs/api/interfaces/formatexpression.md)›* ___ ### parseForNumberFormat ▸ **parseForNumberFormat**(`str`: string): *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹[FormatExpression](https://hyperformula.handsontable.com/docs/api/interfaces/formatexpression.md)›* *Defined in [src/format/parser.ts:109](https://github.com/handsontable/hyperformula/blob/a18429c/src/format/parser.ts#L109)* **Parameters:** Name | Type | ------ | ------ | `str` | string | **Returns:** *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹[FormatExpression](https://hyperformula.handsontable.com/docs/api/interfaces/formatexpression.md)›* ___ ### parseTimeFormat ▸ **parseTimeFormat**(`timeFormat`: string): *object* *Defined in [src/DateTimeDefault.ts:186](https://github.com/handsontable/hyperformula/blob/a18429c/src/DateTimeDefault.ts#L186)* Parses a time format string into a format object. **Parameters:** Name | Type | ------ | ------ | `timeFormat` | string | **Returns:** *object* * **hourItem**: *number* * **itemsCount**: *number* * **minuteItem**: *number* * **secondItem**: *number* ___ ### postMortem ▸ **postMortem**(`method`: any): *(Anonymous function)* *Defined in [src/Destroy.ts:16](https://github.com/handsontable/hyperformula/blob/a18429c/src/Destroy.ts#L16)* **Parameters:** Name | Type | ------ | ------ | `method` | any | **Returns:** *(Anonymous function)* ___ ### replacer ▸ **replacer**(`key`: string, `val`: any): *any* *Defined in [src/errors.ts:134](https://github.com/handsontable/hyperformula/blob/a18429c/src/errors.ts#L134)* **Parameters:** Name | Type | ------ | ------ | `key` | string | `val` | any | **Returns:** *any* ___ ### roundToEpsilon ▸ **roundToEpsilon**(`arg`: number, `epsilon`: number): *number* *Defined in [src/DateTimeHelper.ts:299](https://github.com/handsontable/hyperformula/blob/a18429c/src/DateTimeHelper.ts#L299)* **Parameters:** Name | Type | Default | ------ | ------ | ------ | `arg` | number | - | `epsilon` | number | 1 | **Returns:** *number* ___ ### roundToNearestSecond ▸ **roundToNearestSecond**(`arg`: number): *number* *Defined in [src/DateTimeHelper.ts:295](https://github.com/handsontable/hyperformula/blob/a18429c/src/DateTimeHelper.ts#L295)* **Parameters:** Name | Type | ------ | ------ | `arg` | number | **Returns:** *number* ___ ### simpleCellAddress ▸ **simpleCellAddress**(`sheet`: number, `col`: number, `row`: number): *[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)* *Defined in [src/Cell.ts:198](https://github.com/handsontable/hyperformula/blob/a18429c/src/Cell.ts#L198)* **Parameters:** Name | Type | ------ | ------ | `sheet` | number | `col` | number | `row` | number | **Returns:** *[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)* ___ ### simpleCellRange ▸ **simpleCellRange**(`start`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), `end`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *object* *Defined in [src/AbsoluteCellRange.ts:43](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L43)* **Parameters:** Name | Type | ------ | ------ | `start` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | `end` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | **Returns:** *object* * **end**: *[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)* * **start**: *[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)* ___ ### simpleColumnAddress ▸ **simpleColumnAddress**(`sheet`: number, `col`: number): *[SimpleColumnAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecolumnaddress.md)* *Defined in [src/Cell.ts:188](https://github.com/handsontable/hyperformula/blob/a18429c/src/Cell.ts#L188)* **Parameters:** Name | Type | ------ | ------ | `sheet` | number | `col` | number | **Returns:** *[SimpleColumnAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecolumnaddress.md)* ___ ### simpleRowAddress ▸ **simpleRowAddress**(`sheet`: number, `row`: number): *[SimpleRowAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplerowaddress.md)* *Defined in [src/Cell.ts:179](https://github.com/handsontable/hyperformula/blob/a18429c/src/Cell.ts#L179)* **Parameters:** Name | Type | ------ | ------ | `sheet` | number | `row` | number | **Returns:** *[SimpleRowAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplerowaddress.md)* ___ ### split ▸ **split**‹**T**›(`iterable`: IterableIterator‹T›): *object* *Defined in [src/generatorUtils.ts:11](https://github.com/handsontable/hyperformula/blob/a18429c/src/generatorUtils.ts#L11)* **Type parameters:** ▪ **T** **Parameters:** Name | Type | ------ | ------ | `iterable` | IterableIterator‹T› | **Returns:** *object* * **rest**: *IterableIterator‹T›* * **value**? : *T* ___ ### timeToNumber ▸ **timeToNumber**(`time`: [SimpleTime](https://hyperformula.handsontable.com/docs/api/interfaces/simpletime.md)): *number* *Defined in [src/DateTimeHelper.ts:315](https://github.com/handsontable/hyperformula/blob/a18429c/src/DateTimeHelper.ts#L315)* **Parameters:** Name | Type | ------ | ------ | `time` | [SimpleTime](https://hyperformula.handsontable.com/docs/api/interfaces/simpletime.md) | **Returns:** *number* ___ ### toBasisEU ▸ **toBasisEU**(`date`: [SimpleDate](https://hyperformula.handsontable.com/docs/api/interfaces/simpledate.md)): *[SimpleDate](https://hyperformula.handsontable.com/docs/api/interfaces/simpledate.md)* *Defined in [src/DateTimeHelper.ts:319](https://github.com/handsontable/hyperformula/blob/a18429c/src/DateTimeHelper.ts#L319)* **Parameters:** Name | Type | ------ | ------ | `date` | [SimpleDate](https://hyperformula.handsontable.com/docs/api/interfaces/simpledate.md) | **Returns:** *[SimpleDate](https://hyperformula.handsontable.com/docs/api/interfaces/simpledate.md)* ___ ### truncateDayInMonth ▸ **truncateDayInMonth**(`date`: [SimpleDate](https://hyperformula.handsontable.com/docs/api/interfaces/simpledate.md)): *[SimpleDate](https://hyperformula.handsontable.com/docs/api/interfaces/simpledate.md)* *Defined in [src/DateTimeHelper.ts:291](https://github.com/handsontable/hyperformula/blob/a18429c/src/DateTimeHelper.ts#L291)* **Parameters:** Name | Type | ------ | ------ | `date` | [SimpleDate](https://hyperformula.handsontable.com/docs/api/interfaces/simpledate.md) | **Returns:** *[SimpleDate](https://hyperformula.handsontable.com/docs/api/interfaces/simpledate.md)* ___ ### validateArgToType ▸ **validateArgToType**(`inputValue`: any, `expectedType`: string, `paramName`: string): *void* *Defined in [src/ArgumentSanitization.ts:81](https://github.com/handsontable/hyperformula/blob/a18429c/src/ArgumentSanitization.ts#L81)* **Parameters:** Name | Type | ------ | ------ | `inputValue` | any | `expectedType` | string | `paramName` | string | **Returns:** *void* ___ ### validateAsSheet ▸ **validateAsSheet**(`sheet`: [Sheet](https://hyperformula.handsontable.com/docs/api/globals.md#sheet)): *void* *Defined in [src/Sheet.ts:33](https://github.com/handsontable/hyperformula/blob/a18429c/src/Sheet.ts#L33)* **Parameters:** Name | Type | ------ | ------ | `sheet` | [Sheet](https://hyperformula.handsontable.com/docs/api/globals.md#sheet) | **Returns:** *void* ___ ### validateNumberToBeAtLeast ▸ **validateNumberToBeAtLeast**(`value`: number, `paramName`: string, `minimum`: number): *void* *Defined in [src/ArgumentSanitization.ts:34](https://github.com/handsontable/hyperformula/blob/a18429c/src/ArgumentSanitization.ts#L34)* **Parameters:** Name | Type | ------ | ------ | `value` | number | `paramName` | string | `minimum` | number | **Returns:** *void* ___ ### validateNumberToBeAtMost ▸ **validateNumberToBeAtMost**(`value`: number, `paramName`: string, `maximum`: number): *void* *Defined in [src/ArgumentSanitization.ts:40](https://github.com/handsontable/hyperformula/blob/a18429c/src/ArgumentSanitization.ts#L40)* **Parameters:** Name | Type | ------ | ------ | `value` | number | `paramName` | string | `maximum` | number | **Returns:** *void* ## Object literals ### CellValueDetailedType ### ▪ **CellValueDetailedType**: *object* *Defined in [src/Cell.ts:95](https://github.com/handsontable/hyperformula/blob/a18429c/src/Cell.ts#L95)* ___ ### CellValueType ### ▪ **CellValueType**: *object* *Defined in [src/Cell.ts:92](https://github.com/handsontable/hyperformula/blob/a18429c/src/Cell.ts#L92)* ___ ### consoleMessages ### ▪ **consoleMessages**: *object* *Defined in [src/helpers/licenseKeyValidator.ts:36](https://github.com/handsontable/hyperformula/blob/a18429c/src/helpers/licenseKeyValidator.ts#L36)* List of all not valid messages which may occur. ### expired ▸ **expired**(`__namedParameters`: object): *string* *Defined in [src/helpers/licenseKeyValidator.ts:38](https://github.com/handsontable/hyperformula/blob/a18429c/src/helpers/licenseKeyValidator.ts#L38)* **Parameters:** ▪ **__namedParameters**: *object* Name | Type | ------ | ------ | `keyValidityDate` | string | **Returns:** *string* ### invalid ▸ **invalid**(): *string* *Defined in [src/helpers/licenseKeyValidator.ts:37](https://github.com/handsontable/hyperformula/blob/a18429c/src/helpers/licenseKeyValidator.ts#L37)* **Returns:** *string* ### missing ▸ **missing**(): *string* *Defined in [src/helpers/licenseKeyValidator.ts:40](https://github.com/handsontable/hyperformula/blob/a18429c/src/helpers/licenseKeyValidator.ts#L40)* **Returns:** *string* ___ ### maxDate ### ▪ **maxDate**: *object* *Defined in [src/DateTimeHelper.ts:51](https://github.com/handsontable/hyperformula/blob/a18429c/src/DateTimeHelper.ts#L51)* ### day • **day**: *number* = 31 *Defined in [src/DateTimeHelper.ts:51](https://github.com/handsontable/hyperformula/blob/a18429c/src/DateTimeHelper.ts#L51)* ### month • **month**: *number* = 12 *Defined in [src/DateTimeHelper.ts:51](https://github.com/handsontable/hyperformula/blob/a18429c/src/DateTimeHelper.ts#L51)* ### year • **year**: *number* = 9999 *Defined in [src/DateTimeHelper.ts:51](https://github.com/handsontable/hyperformula/blob/a18429c/src/DateTimeHelper.ts#L51)* --- ## ClipboardCellType URL: https://hyperformula.handsontable.com/docs/api/enums/clipboardcelltype # ClipboardCellType ## Enumeration members ### EMPTY • **EMPTY**: *Defined in [src/ClipboardOperations.ts:25](https://github.com/handsontable/hyperformula/blob/a18429c/src/ClipboardOperations.ts#L25)* ___ ### FORMULA • **FORMULA**: *Defined in [src/ClipboardOperations.ts:26](https://github.com/handsontable/hyperformula/blob/a18429c/src/ClipboardOperations.ts#L26)* ___ ### PARSING_ERROR • **PARSING_ERROR**: *Defined in [src/ClipboardOperations.ts:27](https://github.com/handsontable/hyperformula/blob/a18429c/src/ClipboardOperations.ts#L27)* ___ ### VALUE • **VALUE**: *Defined in [src/ClipboardOperations.ts:24](https://github.com/handsontable/hyperformula/blob/a18429c/src/ClipboardOperations.ts#L24)* --- ## AdvancedFindOptions URL: https://hyperformula.handsontable.com/docs/api/interfaces/advancedfindoptions # AdvancedFindOptions ## Properties ### returnOccurrence • **returnOccurrence**? : *"first" | "last"* *Defined in [src/Lookup/SearchStrategy.ts:24](https://github.com/handsontable/hyperformula/blob/a18429c/src/Lookup/SearchStrategy.ts#L24)* --- ## CellValueChange URL: https://hyperformula.handsontable.com/docs/api/interfaces/cellvaluechange # CellValueChange ## Properties ### address • **address**: *[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)* *Defined in [src/ContentChanges.ts:11](https://github.com/handsontable/hyperformula/blob/a18429c/src/ContentChanges.ts#L11)* ___ ### oldValue • **oldValue**? : *InterpreterValue* *Defined in [src/ContentChanges.ts:13](https://github.com/handsontable/hyperformula/blob/a18429c/src/ContentChanges.ts#L13)* ___ ### value • **value**: *InterpreterValue* *Defined in [src/ContentChanges.ts:12](https://github.com/handsontable/hyperformula/blob/a18429c/src/ContentChanges.ts#L12)* --- ## CellArray URL: https://hyperformula.handsontable.com/docs/api/interfaces/cellarray # CellArray ## Properties ### size • **size**: *[ArraySize](https://hyperformula.handsontable.com/docs/api/classes/arraysize.md)* *Defined in [src/ArrayValue.ts:12](https://github.com/handsontable/hyperformula/blob/a18429c/src/ArrayValue.ts#L12)* ## Methods ### get ▸ **get**(`col`: number, `row`: number): *InternalScalarValue* *Defined in [src/ArrayValue.ts:18](https://github.com/handsontable/hyperformula/blob/a18429c/src/ArrayValue.ts#L18)* **Parameters:** Name | Type | ------ | ------ | `col` | number | `row` | number | **Returns:** *InternalScalarValue* ___ ### height ▸ **height**(): *number* *Defined in [src/ArrayValue.ts:16](https://github.com/handsontable/hyperformula/blob/a18429c/src/ArrayValue.ts#L16)* **Returns:** *number* ___ ### simpleRangeValue ▸ **simpleRangeValue**(): *[SimpleRangeValue](https://hyperformula.handsontable.com/docs/api/classes/simplerangevalue.md) | [CellError](https://hyperformula.handsontable.com/docs/api/classes/cellerror.md)* *Defined in [src/ArrayValue.ts:20](https://github.com/handsontable/hyperformula/blob/a18429c/src/ArrayValue.ts#L20)* **Returns:** *[SimpleRangeValue](https://hyperformula.handsontable.com/docs/api/classes/simplerangevalue.md) | [CellError](https://hyperformula.handsontable.com/docs/api/classes/cellerror.md)* ___ ### width ▸ **width**(): *number* *Defined in [src/ArrayValue.ts:14](https://github.com/handsontable/hyperformula/blob/a18429c/src/ArrayValue.ts#L14)* **Returns:** *number* --- ## ChangeExporter URL: https://hyperformula.handsontable.com/docs/api/interfaces/changeexporter # ChangeExporter ## Properties ### exportChange • **exportChange**: *function* *Defined in [src/ContentChanges.ts:17](https://github.com/handsontable/hyperformula/blob/a18429c/src/ContentChanges.ts#L17)* #### Type declaration: ▸ (`arg`: [CellValueChange](https://hyperformula.handsontable.com/docs/api/interfaces/cellvaluechange.md)): *T | T[]* **Parameters:** Name | Type | ------ | ------ | `arg` | [CellValueChange](https://hyperformula.handsontable.com/docs/api/interfaces/cellvaluechange.md) | --- ## Events URL: https://hyperformula.handsontable.com/docs/api/enums/events # Events ## Enumeration members ### EvaluationResumed • **EvaluationResumed**: = "evaluationResumed" *Defined in [src/Emitter.ts:17](https://github.com/handsontable/hyperformula/blob/a18429c/src/Emitter.ts#L17)* ___ ### EvaluationSuspended • **EvaluationSuspended**: = "evaluationSuspended" *Defined in [src/Emitter.ts:16](https://github.com/handsontable/hyperformula/blob/a18429c/src/Emitter.ts#L16)* ___ ### NamedExpressionAdded • **NamedExpressionAdded**: = "namedExpressionAdded" *Defined in [src/Emitter.ts:13](https://github.com/handsontable/hyperformula/blob/a18429c/src/Emitter.ts#L13)* ___ ### NamedExpressionRemoved • **NamedExpressionRemoved**: = "namedExpressionRemoved" *Defined in [src/Emitter.ts:14](https://github.com/handsontable/hyperformula/blob/a18429c/src/Emitter.ts#L14)* ___ ### SheetAdded • **SheetAdded**: = "sheetAdded" *Defined in [src/Emitter.ts:10](https://github.com/handsontable/hyperformula/blob/a18429c/src/Emitter.ts#L10)* ___ ### SheetRemoved • **SheetRemoved**: = "sheetRemoved" *Defined in [src/Emitter.ts:11](https://github.com/handsontable/hyperformula/blob/a18429c/src/Emitter.ts#L11)* ___ ### SheetRenamed • **SheetRenamed**: = "sheetRenamed" *Defined in [src/Emitter.ts:12](https://github.com/handsontable/hyperformula/blob/a18429c/src/Emitter.ts#L12)* ___ ### ValuesUpdated • **ValuesUpdated**: = "valuesUpdated" *Defined in [src/Emitter.ts:15](https://github.com/handsontable/hyperformula/blob/a18429c/src/Emitter.ts#L15)* --- ## ChangedCell URL: https://hyperformula.handsontable.com/docs/api/interfaces/changedcell # ChangedCell ## Properties ### address • **address**: *[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)* *Defined in [src/Operations.ts:133](https://github.com/handsontable/hyperformula/blob/a18429c/src/Operations.ts#L133)* ___ ### cellType • **cellType**: *[ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell)* *Defined in [src/Operations.ts:134](https://github.com/handsontable/hyperformula/blob/a18429c/src/Operations.ts#L134)* --- ## LanguageAlreadyRegisteredError URL: https://hyperformula.handsontable.com/docs/api/classes/languagealreadyregisterederror # LanguageAlreadyRegisteredError Error thrown when trying to register already registered language **`see`** [registerLanguage](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#static-registerlanguage) ## Constructors ### constructor \+ **new LanguageAlreadyRegisteredError**(): *[LanguageAlreadyRegisteredError](https://hyperformula.handsontable.com/docs/api/classes/languagealreadyregisterederror.md)* *Defined in [src/errors.ts:302](https://github.com/handsontable/hyperformula/blob/a18429c/src/errors.ts#L302)* **Returns:** *[LanguageAlreadyRegisteredError](https://hyperformula.handsontable.com/docs/api/classes/languagealreadyregisterederror.md)* ## Properties ### message • **message**: *string* ___ ### name • **name**: *string* ___ ### stack • **stack**? : *undefined | string* ___ ### Error ▪ **Error**: *ErrorConstructor* --- ## ClipboardCellEmpty URL: https://hyperformula.handsontable.com/docs/api/interfaces/clipboardcellempty # ClipboardCellEmpty ## Properties ### type • **type**: *[EMPTY](https://hyperformula.handsontable.com/docs/api/enums/clipboardcelltype.md#empty)* *Defined in [src/ClipboardOperations.ts:37](https://github.com/handsontable/hyperformula/blob/a18429c/src/ClipboardOperations.ts#L37)* --- ## ClipboardCellFormula URL: https://hyperformula.handsontable.com/docs/api/interfaces/clipboardcellformula # ClipboardCellFormula ## Properties ### hash • **hash**: *string* *Defined in [src/ClipboardOperations.ts:42](https://github.com/handsontable/hyperformula/blob/a18429c/src/ClipboardOperations.ts#L42)* ___ ### type • **type**: *[FORMULA](https://hyperformula.handsontable.com/docs/api/enums/clipboardcelltype.md#formula)* *Defined in [src/ClipboardOperations.ts:41](https://github.com/handsontable/hyperformula/blob/a18429c/src/ClipboardOperations.ts#L41)* --- ## ClipboardCellValue URL: https://hyperformula.handsontable.com/docs/api/interfaces/clipboardcellvalue # ClipboardCellValue ## Properties ### parsedValue • **parsedValue**: *ValueCellVertexValue* *Defined in [src/ClipboardOperations.ts:32](https://github.com/handsontable/hyperformula/blob/a18429c/src/ClipboardOperations.ts#L32)* ___ ### rawValue • **rawValue**: *[RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent)* *Defined in [src/ClipboardOperations.ts:33](https://github.com/handsontable/hyperformula/blob/a18429c/src/ClipboardOperations.ts#L33)* ___ ### type • **type**: *[VALUE](https://hyperformula.handsontable.com/docs/api/enums/clipboardcelltype.md#value)* *Defined in [src/ClipboardOperations.ts:31](https://github.com/handsontable/hyperformula/blob/a18429c/src/ClipboardOperations.ts#L31)* --- ## ClipboardCellParsingError URL: https://hyperformula.handsontable.com/docs/api/interfaces/clipboardcellparsingerror # ClipboardCellParsingError ## Properties ### errors • **errors**: *ParsingError[]* *Defined in [src/ClipboardOperations.ts:48](https://github.com/handsontable/hyperformula/blob/a18429c/src/ClipboardOperations.ts#L48)* ___ ### rawInput • **rawInput**: *string* *Defined in [src/ClipboardOperations.ts:47](https://github.com/handsontable/hyperformula/blob/a18429c/src/ClipboardOperations.ts#L47)* ___ ### type • **type**: *[PARSING_ERROR](https://hyperformula.handsontable.com/docs/api/enums/clipboardcelltype.md#parsing_error)* *Defined in [src/ClipboardOperations.ts:46](https://github.com/handsontable/hyperformula/blob/a18429c/src/ClipboardOperations.ts#L46)* --- ## ColumnsRemoval URL: https://hyperformula.handsontable.com/docs/api/interfaces/columnsremoval # ColumnsRemoval ## Properties ### columnCount • **columnCount**: *number* *Defined in [src/Operations.ts:146](https://github.com/handsontable/hyperformula/blob/a18429c/src/Operations.ts#L146)* ___ ### columnFrom • **columnFrom**: *number* *Defined in [src/Operations.ts:145](https://github.com/handsontable/hyperformula/blob/a18429c/src/Operations.ts#L145)* ___ ### removedCells • **removedCells**: *[ChangedCell](https://hyperformula.handsontable.com/docs/api/interfaces/changedcell.md)[]* *Defined in [src/Operations.ts:148](https://github.com/handsontable/hyperformula/blob/a18429c/src/Operations.ts#L148)* ___ ### version • **version**: *number* *Defined in [src/Operations.ts:147](https://github.com/handsontable/hyperformula/blob/a18429c/src/Operations.ts#L147)* --- ## ColumnSearchStrategy URL: https://hyperformula.handsontable.com/docs/api/interfaces/columnsearchstrategy # ColumnSearchStrategy ## Methods ### add ▸ **add**(`value`: RawInterpreterValue, `address`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *void* *Defined in [src/Lookup/SearchStrategy.ts:37](https://github.com/handsontable/hyperformula/blob/a18429c/src/Lookup/SearchStrategy.ts#L37)* **Parameters:** Name | Type | ------ | ------ | `value` | RawInterpreterValue | `address` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | **Returns:** *void* ___ ### addColumns ▸ **addColumns**(`columnsSpan`: [ColumnsSpan](https://hyperformula.handsontable.com/docs/api/classes/columnsspan.md)): *void* *Defined in [src/Lookup/SearchStrategy.ts:45](https://github.com/handsontable/hyperformula/blob/a18429c/src/Lookup/SearchStrategy.ts#L45)* **Parameters:** Name | Type | ------ | ------ | `columnsSpan` | [ColumnsSpan](https://hyperformula.handsontable.com/docs/api/classes/columnsspan.md) | **Returns:** *void* ___ ### advancedFind ▸ **advancedFind**(`keyMatcher`: function, `range`: [SimpleRangeValue](https://hyperformula.handsontable.com/docs/api/classes/simplerangevalue.md), `options`: [AdvancedFindOptions](https://hyperformula.handsontable.com/docs/api/interfaces/advancedfindoptions.md)): *number* *Defined in [src/Lookup/SearchStrategy.ts:33](https://github.com/handsontable/hyperformula/blob/a18429c/src/Lookup/SearchStrategy.ts#L33)* **Parameters:** ▪ **keyMatcher**: *function* ▸ (`arg`: RawInterpreterValue): *boolean* **Parameters:** Name | Type | ------ | ------ | `arg` | RawInterpreterValue | ▪ **range**: *[SimpleRangeValue](https://hyperformula.handsontable.com/docs/api/classes/simplerangevalue.md)* ▪ **options**: *[AdvancedFindOptions](https://hyperformula.handsontable.com/docs/api/interfaces/advancedfindoptions.md)* **Returns:** *number* ___ ### applyChanges ▸ **applyChanges**(`contentChanges`: [CellValueChange](https://hyperformula.handsontable.com/docs/api/interfaces/cellvaluechange.md)[]): *void* *Defined in [src/Lookup/SearchStrategy.ts:43](https://github.com/handsontable/hyperformula/blob/a18429c/src/Lookup/SearchStrategy.ts#L43)* **Parameters:** Name | Type | ------ | ------ | `contentChanges` | [CellValueChange](https://hyperformula.handsontable.com/docs/api/interfaces/cellvaluechange.md)[] | **Returns:** *void* ___ ### change ▸ **change**(`oldValue`: RawInterpreterValue | undefined, `newValue`: RawInterpreterValue, `address`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *void* *Defined in [src/Lookup/SearchStrategy.ts:41](https://github.com/handsontable/hyperformula/blob/a18429c/src/Lookup/SearchStrategy.ts#L41)* **Parameters:** Name | Type | ------ | ------ | `oldValue` | RawInterpreterValue | undefined | `newValue` | RawInterpreterValue | `address` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | **Returns:** *void* ___ ### find ▸ **find**(`searchKey`: RawNoErrorScalarValue, `range`: [SimpleRangeValue](https://hyperformula.handsontable.com/docs/api/classes/simplerangevalue.md), `options`: [SearchOptions](https://hyperformula.handsontable.com/docs/api/interfaces/searchoptions.md)): *number* *Defined in [src/Lookup/SearchStrategy.ts:31](https://github.com/handsontable/hyperformula/blob/a18429c/src/Lookup/SearchStrategy.ts#L31)* **Parameters:** Name | Type | ------ | ------ | `searchKey` | RawNoErrorScalarValue | `range` | [SimpleRangeValue](https://hyperformula.handsontable.com/docs/api/classes/simplerangevalue.md) | `options` | [SearchOptions](https://hyperformula.handsontable.com/docs/api/interfaces/searchoptions.md) | **Returns:** *number* ___ ### forceApplyPostponedTransformations ▸ **forceApplyPostponedTransformations**(): *void* *Defined in [src/Lookup/SearchStrategy.ts:60](https://github.com/handsontable/hyperformula/blob/a18429c/src/Lookup/SearchStrategy.ts#L60)* Forces all lazily-tracked ValueIndex entries to apply any pending transformations, bringing every entry's version up to the current LazilyTransformingAstService version. Must be called before compacting LazilyTransformingAstService. **Returns:** *void* ___ ### moveValues ▸ **moveValues**(`range`: IterableIterator‹[RawScalarValue, [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)]›, `toRight`: number, `toBottom`: number, `toSheet`: number): *void* *Defined in [src/Lookup/SearchStrategy.ts:51](https://github.com/handsontable/hyperformula/blob/a18429c/src/Lookup/SearchStrategy.ts#L51)* **Parameters:** Name | Type | ------ | ------ | `range` | IterableIterator‹[RawScalarValue, [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)]› | `toRight` | number | `toBottom` | number | `toSheet` | number | **Returns:** *void* ___ ### remove ▸ **remove**(`value`: RawInterpreterValue | undefined, `address`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *void* *Defined in [src/Lookup/SearchStrategy.ts:39](https://github.com/handsontable/hyperformula/blob/a18429c/src/Lookup/SearchStrategy.ts#L39)* **Parameters:** Name | Type | ------ | ------ | `value` | RawInterpreterValue | undefined | `address` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | **Returns:** *void* ___ ### removeColumns ▸ **removeColumns**(`columnsSpan`: [ColumnsSpan](https://hyperformula.handsontable.com/docs/api/classes/columnsspan.md)): *void* *Defined in [src/Lookup/SearchStrategy.ts:47](https://github.com/handsontable/hyperformula/blob/a18429c/src/Lookup/SearchStrategy.ts#L47)* **Parameters:** Name | Type | ------ | ------ | `columnsSpan` | [ColumnsSpan](https://hyperformula.handsontable.com/docs/api/classes/columnsspan.md) | **Returns:** *void* ___ ### removeSheet ▸ **removeSheet**(`sheetId`: number): *void* *Defined in [src/Lookup/SearchStrategy.ts:49](https://github.com/handsontable/hyperformula/blob/a18429c/src/Lookup/SearchStrategy.ts#L49)* **Parameters:** Name | Type | ------ | ------ | `sheetId` | number | **Returns:** *void* ___ ### removeValues ▸ **removeValues**(`range`: IterableIterator‹[RawScalarValue, [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)]›): *void* *Defined in [src/Lookup/SearchStrategy.ts:53](https://github.com/handsontable/hyperformula/blob/a18429c/src/Lookup/SearchStrategy.ts#L53)* **Parameters:** Name | Type | ------ | ------ | `range` | IterableIterator‹[RawScalarValue, [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)]› | **Returns:** *void* --- ## FormatExpression URL: https://hyperformula.handsontable.com/docs/api/interfaces/formatexpression # FormatExpression ## Properties ### tokens • **tokens**: *[FormatToken](https://hyperformula.handsontable.com/docs/api/interfaces/formattoken.md)[]* *Defined in [src/format/parser.ts:36](https://github.com/handsontable/hyperformula/blob/a18429c/src/format/parser.ts#L36)* ___ ### type • **type**: *[FormatExpressionType](https://hyperformula.handsontable.com/docs/api/enums/formatexpressiontype.md)* *Defined in [src/format/parser.ts:35](https://github.com/handsontable/hyperformula/blob/a18429c/src/format/parser.ts#L35)* --- ## ConfigParams URL: https://hyperformula.handsontable.com/docs/api/interfaces/configparams # ConfigParams ## License ### licenseKey • **licenseKey**: *string* *Defined in [src/ConfigParams.ts:182](https://github.com/handsontable/hyperformula/blob/a18429c/src/ConfigParams.ts#L182)* Sets your HyperFormula license key. To use HyperFormula on the GPLv3 license terms, set this option to `gpl-v3`. To use HyperFormula with your proprietary license, set this option to your valid license key string. For more information, go [here](https://hyperformula.handsontable.com/docs/guide/license-key.md). **`default`** undefined ___ ## Engine ### chooseAddressMappingPolicy • **chooseAddressMappingPolicy**: *ChooseAddressMapping* *Defined in [src/ConfigParams.ts:55](https://github.com/handsontable/hyperformula/blob/a18429c/src/ConfigParams.ts#L55)* Sets the address mapping policy to be used. Built-in implementations: - `DenseSparseChooseBasedOnThreshold`: sets the address mapping policy separately for each sheet, based on fill ratio. - `AlwaysDense`: uses `DenseStrategy` for all sheets. - `AlwaysSparse`: uses `SparseStrategy` for all sheets. For more information, see the [Performance guide](https://hyperformula.handsontable.com/docs/guide/performance.md). **`default`** AlwaysDense ___ ### context • **context**: *unknown* *Defined in [src/ConfigParams.ts:63](https://github.com/handsontable/hyperformula/blob/a18429c/src/ConfigParams.ts#L63)* A generic parameter that can be used to pass data to custom functions. For more information, see the [Custom functions guide](https://hyperformula.handsontable.com/docs/guide/custom-functions.md). **`default`** undefined ___ ### evaluateNullToZero • **evaluateNullToZero**: *boolean* *Defined in [src/ConfigParams.ts:125](https://github.com/handsontable/hyperformula/blob/a18429c/src/ConfigParams.ts#L125)* When set to `true`, formulas evaluating to `null` evaluate to `0` instead. **`default`** false ___ ### maxColumns • **maxColumns**: *number* *Defined in [src/ConfigParams.ts:228](https://github.com/handsontable/hyperformula/blob/a18429c/src/ConfigParams.ts#L228)* Sets the maximum number of columns. **`default`** 18.278 (Columns A, B, ..., ZZZ) ___ ### maxPendingLazyTransformations • **maxPendingLazyTransformations**: *number* *Defined in [src/ConfigParams.ts:435](https://github.com/handsontable/hyperformula/blob/a18429c/src/ConfigParams.ts#L435)* Controls memory usage for long-running instances by limiting the number of pending lazy transformations before cleanup occurs. Structural operations (adding/removing rows/columns, moving cells) create transformations that are applied lazily to formulas. This setting determines how many can accumulate before they are flushed and memory is reclaimed. Lower values reduce peak memory usage but may slightly increase CPU overhead. Higher values reduce overhead but allow more memory accumulation. **`default`** 50 ___ ### maxRows • **maxRows**: *number* *Defined in [src/ConfigParams.ts:222](https://github.com/handsontable/hyperformula/blob/a18429c/src/ConfigParams.ts#L222)* Sets the maximum number of rows. **`default`** 40.000 ___ ### useArrayArithmetic • **useArrayArithmetic**: *boolean* *Defined in [src/ConfigParams.ts:392](https://github.com/handsontable/hyperformula/blob/a18429c/src/ConfigParams.ts#L392)* When set to `true`, array arithmetic is enabled globally. When set to `false`, array arithmetic is enabled only inside array functions (`ARRAYFORMULA`, `FILTER`, and `ARRAY_CONSTRAIN`). For more information, see the [Arrays guide](https://hyperformula.handsontable.com/docs/guide/arrays.md). **`default`** false ___ ### useColumnIndex • **useColumnIndex**: *boolean* *Defined in [src/ConfigParams.ts:404](https://github.com/handsontable/hyperformula/blob/a18429c/src/ConfigParams.ts#L404)* When set to `true`, switches column search strategy from binary search to column index. Using column index improves efficiency of the `VLOOKUP` and `MATCH` functions, but increases memory usage. When searching with wildcards or regular expressions, column search strategy falls back to binary search (even with `useColumnIndex` set to `true`). For more information, see the [Performance guide](https://hyperformula.handsontable.com/docs/guide/performance.md). **`default`** false ___ ### useStats • **useStats**: *boolean* *Defined in [src/ConfigParams.ts:412](https://github.com/handsontable/hyperformula/blob/a18429c/src/ConfigParams.ts#L412)* When set to `true`, enables gathering engine statistics and timings. Useful for testing and benchmarking. **`default`** false ___ ## Formula Syntax ### arrayColumnSeparator • **arrayColumnSeparator**: *"," | ";"* *Defined in [src/ConfigParams.ts:208](https://github.com/handsontable/hyperformula/blob/a18429c/src/ConfigParams.ts#L208)* Sets a column separator symbol for array notation. For more information, see the [Arrays guide](https://hyperformula.handsontable.com/docs/guide/arrays.md). **`default`** ',' ___ ### arrayRowSeparator • **arrayRowSeparator**: *";" | "|"* *Defined in [src/ConfigParams.ts:216](https://github.com/handsontable/hyperformula/blob/a18429c/src/ConfigParams.ts#L216)* Sets a row separator symbol for array notation. For more information, see the [Arrays guide](https://hyperformula.handsontable.com/docs/guide/arrays.md). **`default`** ';' ___ ### functionArgSeparator • **functionArgSeparator**: *string* *Defined in [src/ConfigParams.ts:105](https://github.com/handsontable/hyperformula/blob/a18429c/src/ConfigParams.ts#L105)* Sets a separator character that separates procedure arguments in formulas. Must be different from [decimalSeparator](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#decimalseparator) and [thousandSeparator](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#thousandseparator). For more information, see the [Internationalization features guide](https://hyperformula.handsontable.com/docs/guide/i18n-features.md). **`default`** ',' ___ ### functionPlugins • **functionPlugins**: *any[]* *Defined in [src/ConfigParams.ts:134](https://github.com/handsontable/hyperformula/blob/a18429c/src/ConfigParams.ts#L134)* Lists additional function plugins to be used by the formula interpreter. For more information, see the [Custom functions guide](https://hyperformula.handsontable.com/docs/guide/custom-functions.md). **`default`** [] ___ ### ignoreWhiteSpace • **ignoreWhiteSpace**: *"standard" | "any"* *Defined in [src/ConfigParams.ts:160](https://github.com/handsontable/hyperformula/blob/a18429c/src/ConfigParams.ts#L160)* Controls the set of whitespace characters that are allowed inside a formula. When set to `'standard'`, allows only SPACE (U+0020), CHARACTER TABULATION (U+0009), LINE FEED (U+000A), and CARRIAGE RETURN (U+000D) (compliant with OpenFormula Standard 1.3) When set to `'any'`, allows all whitespace characters that would be captured by the `\s` character class of the JavaScript regular expressions. **`default`** 'standard' ___ ### language • **language**: *string* *Defined in [src/ConfigParams.ts:150](https://github.com/handsontable/hyperformula/blob/a18429c/src/ConfigParams.ts#L150)* Sets a translation package for function and error names. For more information, see the [Localizing functions guide](https://hyperformula.handsontable.com/docs/guide/localizing-functions.md). **`default`** 'enGB' ___ ## Undo and Redo ### undoLimit • **undoLimit**: *number* *Defined in [src/ConfigParams.ts:420](https://github.com/handsontable/hyperformula/blob/a18429c/src/ConfigParams.ts#L420)* Sets the number of elements kept in the undo history. For more information, see the [Undo-Redo guide](https://hyperformula.handsontable.com/docs/guide/undo-redo.md). **`default`** 20 ___ ## Date and Time ### dateFormats • **dateFormats**: *string[]* *Defined in [src/ConfigParams.ts:95](https://github.com/handsontable/hyperformula/blob/a18429c/src/ConfigParams.ts#L95)* Sets the date formats accepted by the date-parsing function. A format must be specified as a string consisting of tokens and separators. Supported tokens: - `DD` (day of month) - `MM` (month as a number) - `YYYY` (year as a 4-digit number) - `YY` (year as a 2-digit number) Supported separators: - `/` (slash) - `-` (dash) - `.` (dot) - ` ` (empty space) Regardless of the separator specified in the format string, all of the above are accepted by the date-parsing function. For more information, see the [Date and time handling guide](https://hyperformula.handsontable.com/docs/guide/date-and-time-handling.md). **`default`** ['DD/MM/YYYY', 'DD/MM/YY'] ___ ### leapYear1900 • **leapYear1900**: *boolean* *Defined in [src/ConfigParams.ts:170](https://github.com/handsontable/hyperformula/blob/a18429c/src/ConfigParams.ts#L170)* Sets year 1900 as a leap year. For compatibility with Lotus 1-2-3 and Microsoft Excel, set this option to `true`. For more information, see the [Date and time handling guide](https://hyperformula.handsontable.com/docs/guide/date-and-time-handling.md) and [nullDate](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#nulldate). **`default`** false ___ ### nullDate • **nullDate**: *[SimpleDate](https://hyperformula.handsontable.com/docs/api/interfaces/simpledate.md)* *Defined in [src/ConfigParams.ts:238](https://github.com/handsontable/hyperformula/blob/a18429c/src/ConfigParams.ts#L238)* Internally, each date is represented as a number of days that passed since `nullDate`. This option sets a specific date from which that number of days is counted. For more information, see the [Date and time handling guide](https://hyperformula.handsontable.com/docs/guide/date-and-time-handling.md). **`default`** {year: 1899, month: 12, day: 30} ___ ### nullYear • **nullYear**: *number* *Defined in [src/ConfigParams.ts:252](https://github.com/handsontable/hyperformula/blob/a18429c/src/ConfigParams.ts#L252)* Sets the interpretation of two-digit year values. Two-digit year values (`xx`) can either become `19xx` or `20xx`. If `xx` is less or equal to `nullYear`, two-digit year values become `20xx`. If `xx` is more than `nullYear`, two-digit year values become `19xx`. For more information, see the [Date and time handling guide](https://hyperformula.handsontable.com/docs/guide/date-and-time-handling.md). **`default`** 30 ___ ### parseDateTime • **parseDateTime**: *function* *Defined in [src/ConfigParams.ts:262](https://github.com/handsontable/hyperformula/blob/a18429c/src/ConfigParams.ts#L262)* Sets a function that parses strings representing date-time into actual date-time values. The function should return a [DateTime](https://hyperformula.handsontable.com/docs/api/globals.md#datetime) object or undefined. For more information, see the [Date and time handling guide](https://hyperformula.handsontable.com/docs/guide/date-and-time-handling.md). **`default`** defaultParseToDateTime #### Type declaration: ▸ (`dateTimeString`: string, `dateFormat?`: undefined | string, `timeFormat?`: undefined | string): *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹[DateTime](https://hyperformula.handsontable.com/docs/api/globals.md#datetime)›* **Parameters:** Name | Type | ------ | ------ | `dateTimeString` | string | `dateFormat?` | undefined | string | `timeFormat?` | undefined | string | ___ ### stringifyDateTime • **stringifyDateTime**: *function* *Defined in [src/ConfigParams.ts:302](https://github.com/handsontable/hyperformula/blob/a18429c/src/ConfigParams.ts#L302)* Sets a function that converts date-time values into strings. The function should return a string or undefined. For more information, see the [Date and time handling guide](https://hyperformula.handsontable.com/docs/guide/date-and-time-handling.md). **`default`** defaultStringifyDateTime #### Type declaration: ▸ (`dateTime`: [SimpleDateTime](https://hyperformula.handsontable.com/docs/api/globals.md#simpledatetime), `dateTimeFormat`: string): *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹string›* **Parameters:** Name | Type | ------ | ------ | `dateTime` | [SimpleDateTime](https://hyperformula.handsontable.com/docs/api/globals.md#simpledatetime) | `dateTimeFormat` | string | ___ ### stringifyDuration • **stringifyDuration**: *function* *Defined in [src/ConfigParams.ts:312](https://github.com/handsontable/hyperformula/blob/a18429c/src/ConfigParams.ts#L312)* Sets a function that converts time duration values into strings. The function should return a string or undefined. For more information, see the [Date and time handling guide](https://hyperformula.handsontable.com/docs/guide/date-and-time-handling.md). **`default`** defaultStringifyDuration #### Type declaration: ▸ (`time`: [SimpleTime](https://hyperformula.handsontable.com/docs/api/interfaces/simpletime.md), `timeFormat`: string): *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹string›* **Parameters:** Name | Type | ------ | ------ | `time` | [SimpleTime](https://hyperformula.handsontable.com/docs/api/interfaces/simpletime.md) | `timeFormat` | string | ___ ### timeFormats • **timeFormats**: *string[]* *Defined in [src/ConfigParams.ts:382](https://github.com/handsontable/hyperformula/blob/a18429c/src/ConfigParams.ts#L382)* Sets the time formats accepted by the time-parsing function. A format must be specified as a string consisting of at least two tokens separated by `:` (a colon). Supported tokens: - `hh` (hours) - `mm` (minutes) - `ss`, `ss.s`, `ss.ss`, `ss.sss`, `ss.ssss`, etc. (seconds) The number of decimal places in the seconds token does not matter. All versions of the seconds token are equivalent in the context of parsing time values. Regardless of the time format specified, the hours-minutes-seconds value may be followed by the AM/PM designator. For more information, see the [Date and time handling guide](https://hyperformula.handsontable.com/docs/guide/date-and-time-handling.md). **`example`** E.g., for `timeFormats = ['hh:mm:ss.sss']`, valid time strings include: - `1:33:33` - `1:33:33.3` - `1:33:33.33` - `1:33:33.333` - `01:33:33` - `1:33:33 AM` - `1:33:33 PM` - `1:33:33 am` - `1:33:33 pm` - `1:33:33AM` - `1:33:33PM` **`default`** ['hh:mm', 'hh:mm:ss.sss'] ___ ## Number ### currencySymbol • **currencySymbol**: *string[]* *Defined in [src/ConfigParams.ts:71](https://github.com/handsontable/hyperformula/blob/a18429c/src/ConfigParams.ts#L71)* Sets symbols that denote currency numbers. For more information, see the [Internationalization features guide](https://hyperformula.handsontable.com/docs/guide/i18n-features.md). **`default`** ['$'] ___ ### decimalSeparator • **decimalSeparator**: *"." | ","* *Defined in [src/ConfigParams.ts:119](https://github.com/handsontable/hyperformula/blob/a18429c/src/ConfigParams.ts#L119)* Sets a decimal separator used for parsing numerical literals. Can be one of the following: - `.` (period) - `,` (comma) Must be different from [thousandSeparator](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#thousandseparator) and [functionArgSeparator](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#functionargseparator). For more information, see the [Internationalization features guide](https://hyperformula.handsontable.com/docs/guide/i18n-features.md). **`default`** '.' ___ ### precisionEpsilon • **precisionEpsilon**: *number* *Defined in [src/ConfigParams.ts:277](https://github.com/handsontable/hyperformula/blob/a18429c/src/ConfigParams.ts#L277)* Sets how far two numerical values need to be from each other to be treated as non-equal. `a` and `b` are equal if all three of the following conditions are met: - Both `a` and `b` are of the same sign - `abs(a)` <= `(1+precisionEpsilon) * abs(b)` - `abs(b)` <= `(1+precisionEpsilon) * abs(a)` Additionally, this option controls the snap-to-zero behavior for additions and subtractions: - For `c=a+b`, if `abs(c)` <= `precisionEpsilon * abs(a)`, then `c` is set to `0` - For `c=a-b`, if `abs(c)` <= `precisionEpsilon * abs(a)`, then `c` is set to `0` **`default`** 1e-13 ___ ### precisionRounding • **precisionRounding**: *number* *Defined in [src/ConfigParams.ts:292](https://github.com/handsontable/hyperformula/blob/a18429c/src/ConfigParams.ts#L292)* Sets the precision level of calculations' output. Internally, all arithmetic operations are performed using JavaScript's built-in numbers. But when HyperFormula exports a cell's value, it rounds the output to the `precisionRounding` number of significant digits. Setting `precisionRounding` too low can cause large numbers' imprecision (for example, with `precisionRounding` set to `4`, 100005 becomes 100010). Setting precisionRounding too high will expose the floating-point calculation errors. For example, with `precisionRounding` set to `15`, `0.1 + 0.2` results in `0.3000000000000001`. **`default`** 10 ___ ### smartRounding • **smartRounding**: *boolean* *Defined in [src/ConfigParams.ts:336](https://github.com/handsontable/hyperformula/blob/a18429c/src/ConfigParams.ts#L336)* When set to `false`, no rounding happens, and numbers are equal if and only if they are of truly identical value. For more information, see [precisionEpsilon](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#precisionepsilon). **`default`** true ___ ### stringifyCurrency • **stringifyCurrency**: *function* *Defined in [src/ConfigParams.ts:328](https://github.com/handsontable/hyperformula/blob/a18429c/src/ConfigParams.ts#L328)* Sets a function that converts numeric values into currency-formatted strings. The function receives the raw value and the format string passed to `TEXT` and should return a string or `undefined`. The formatter calls this for every format string that reaches it, not only currency-shaped ones — return `undefined` for any format your callback does not handle and HyperFormula will fall through to the built-in number formatter. For more information, see the [Currency handling guide](https://hyperformula.handsontable.com/docs/guide/currency-handling.md). **`default`** defaultStringifyCurrency #### Type declaration: ▸ (`value`: number, `currencyFormat`: string): *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹string›* **Parameters:** Name | Type | ------ | ------ | `value` | number | `currencyFormat` | string | ___ ### thousandSeparator • **thousandSeparator**: *"" | "," | " " | "."* *Defined in [src/ConfigParams.ts:351](https://github.com/handsontable/hyperformula/blob/a18429c/src/ConfigParams.ts#L351)* Sets the thousands' separator symbol for parsing numerical literals. Can be one of the following: - empty - `,` (comma) - ` ` (empty space) Must be different from [decimalSeparator](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#decimalseparator) and [functionArgSeparator](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#functionargseparator). For more information, see the [Internationalization features guide](https://hyperformula.handsontable.com/docs/guide/i18n-features.md). **`default`** '' ___ ## String ### accentSensitive • **accentSensitive**: *boolean* *Defined in [src/ConfigParams.ts:20](https://github.com/handsontable/hyperformula/blob/a18429c/src/ConfigParams.ts#L20)* When set to `true`, makes string comparison accent-sensitive. Applies only to comparison operators. For more information, see the [Types of operators guide](https://hyperformula.handsontable.com/docs/guide/types-of-operators.md#comparing-strings). **`default`** false ___ ### caseFirst • **caseFirst**: *"upper" | "lower" | "false"* *Defined in [src/ConfigParams.ts:42](https://github.com/handsontable/hyperformula/blob/a18429c/src/ConfigParams.ts#L42)* When set to `upper`, upper case sorts first. When set to `lower`, lower case sorts first. When set to `false`, uses the locale's default. For more information, see the [Types of operators guide](https://hyperformula.handsontable.com/docs/guide/types-of-operators.md#comparing-strings). **`default`** 'lower' ___ ### caseSensitive • **caseSensitive**: *boolean* *Defined in [src/ConfigParams.ts:30](https://github.com/handsontable/hyperformula/blob/a18429c/src/ConfigParams.ts#L30)* When set to `true`, makes string comparison case-sensitive. Applies to comparison operators only. For more information, see the [Types of operators guide](https://hyperformula.handsontable.com/docs/guide/types-of-operators.md#comparing-strings). **`default`** false ___ ### ignorePunctuation • **ignorePunctuation**: *boolean* *Defined in [src/ConfigParams.ts:142](https://github.com/handsontable/hyperformula/blob/a18429c/src/ConfigParams.ts#L142)* When set to `true`, string comparison ignores punctuation. For more information, see the [Types of operators guide](https://hyperformula.handsontable.com/docs/guide/types-of-operators.md#comparing-strings). **`default`** false ___ ### localeLang • **localeLang**: *string* *Defined in [src/ConfigParams.ts:192](https://github.com/handsontable/hyperformula/blob/a18429c/src/ConfigParams.ts#L192)* Sets the locale for language-sensitive string comparison. Accepts **IETF BCP 47** language tags. For more information, see the [Internationalization features guide](https://hyperformula.handsontable.com/docs/guide/i18n-features.md). **`default`** 'en' ___ ### matchWholeCell • **matchWholeCell**: *boolean* *Defined in [src/ConfigParams.ts:200](https://github.com/handsontable/hyperformula/blob/a18429c/src/ConfigParams.ts#L200)* When set to `true`, function criteria require whole cells to match the pattern. When set to `false`, function criteria require just a sub-word to match the pattern. **`default`** true ___ ### useRegularExpressions • **useRegularExpressions**: *boolean* *Defined in [src/ConfigParams.ts:441](https://github.com/handsontable/hyperformula/blob/a18429c/src/ConfigParams.ts#L441)* When set to `true`, criteria in functions (SUMIF, COUNTIF, ...) are allowed to use regular expressions. **`default`** false ___ ### useWildcards • **useWildcards**: *boolean* *Defined in [src/ConfigParams.ts:447](https://github.com/handsontable/hyperformula/blob/a18429c/src/ConfigParams.ts#L447)* When set to `true`, criteria in functions (SUMIF, COUNTIF, ...) can use the `*` and `?` wildcards. **`default`** true --- ## FormatToken URL: https://hyperformula.handsontable.com/docs/api/interfaces/formattoken # FormatToken ## Properties ### type • **type**: *[TokenType](https://hyperformula.handsontable.com/docs/api/enums/tokentype.md)* *Defined in [src/format/parser.ts:17](https://github.com/handsontable/hyperformula/blob/a18429c/src/format/parser.ts#L17)* ___ ### value • **value**: *string* *Defined in [src/format/parser.ts:18](https://github.com/handsontable/hyperformula/blob/a18429c/src/format/parser.ts#L18)* --- ## Listeners URL: https://hyperformula.handsontable.com/docs/api/interfaces/listeners # Listeners ## Batch ### evaluationResumed • **evaluationResumed**: *function* *Defined in [src/Emitter.ts:316](https://github.com/handsontable/hyperformula/blob/a18429c/src/Emitter.ts#L316)* Occurs when evaluation is resumed. **`param`** the values and location of applied changes **`example`** ```js const hfInstance = HyperFormula.buildFromSheets({ MySheet1: [ ['1'] ], MySheet2: [ ['10'] ] }); // define a function to be called when the event occurs const handler = (changes) => { console.log('baz') } // subscribe to the 'evaluationResumed' event, pass the handler hfInstance.on('evaluationResumed', handler); // first, suspend evaluation hfInstance.suspendEvaluation(); // now, resume evaluation // the console prints 'baz' each time evaluation is resumed hfInstance.resumeEvaluation(); // unsubscribe from the 'evaluationResumed' event hfInstance.off('evaluationResumed', handler); // suspend evaluation again hfInstance.suspendEvaluation(); // resume evaluation again // this time, the console doesn't print anything hfInstance.resumeEvaluation();; ``` #### Type declaration: ▸ (`changes`: [ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]): *any* **Parameters:** Name | Type | ------ | ------ | `changes` | [ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[] | ___ ### evaluationSuspended • **evaluationSuspended**: *function* *Defined in [src/Emitter.ts:274](https://github.com/handsontable/hyperformula/blob/a18429c/src/Emitter.ts#L274)* Occurs when evaluation is suspended. **`example`** ```js const hfInstance = HyperFormula.buildFromSheets({ MySheet1: [ ['1'] ], MySheet2: [ ['10'] ] }); // define a function to be called when the event occurs const handler = ( ) => { console.log('baz') } // subscribe to the 'evaluationSuspended' event, pass the handler hfInstance.on('evaluationSuspended', handler); // suspend evaluation // the console prints 'baz' each time evaluation is suspended hfInstance.suspendEvaluation(); // resume evaluation hfInstance.resumeEvaluation(); // unsubscribe from the 'evaluationSuspended' event hfInstance.off('evaluationSuspended', handler); // suspend evaluation again // this time, the console doesn't print anything hfInstance.suspendEvaluation();; ``` #### Type declaration: ▸ (): *any* ___ ## Named Expression ### namedExpressionAdded • **namedExpressionAdded**: *function* *Defined in [src/Emitter.ts:162](https://github.com/handsontable/hyperformula/blob/a18429c/src/Emitter.ts#L162)* Occurs when a named expression with specified values and location is added. **`param`** the name of added expression **`param`** the values and location of applied changes **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['42'], ]); // define a function to be called when the event occurs const handler = (namedExpressionName, changes) => { console.log('baz') } // subscribe to the 'namedExpressionAdded' event, pass the handler hfInstance.on('namedExpressionAdded', handler); // add a named expression // the console prints 'baz' each time a named expression is added const changes = hfInstance.addNamedExpression('prettyName', '=Sheet1!$A$1+100', 0); // unsubscribe from the 'namedExpressionAdded' event hfInstance.off('namedExpressionAdded', handler); // add another named expression // this time, the console doesn't print anything const changes = hfInstance.addNamedExpression('uglyName', '=Sheet1!$A$1+100', 0); ``` #### Type declaration: ▸ (`namedExpressionName`: string, `changes`: [ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]): *any* **Parameters:** Name | Type | ------ | ------ | `namedExpressionName` | string | `changes` | [ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[] | ___ ### namedExpressionRemoved • **namedExpressionRemoved**: *function* *Defined in [src/Emitter.ts:202](https://github.com/handsontable/hyperformula/blob/a18429c/src/Emitter.ts#L202)* Occurs when a named expression with specified values is removed and from an indicated location. **`param`** the name of removed expression **`param`** the values and location of applied changes **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['42'], ]); // define a function to be called when the event occurs const handler = (namedExpressionName, changes) => { console.log('baz') } // subscribe to the 'namedExpressionRemoved' event, pass the handler hfInstance.on('namedExpressionRemoved', handler); // add some named expressions hfInstance.addNamedExpression('prettyName', '=Sheet1!$A$1+100', 0); hfInstance.addNamedExpression('uglyName', '=Sheet1!$A$1+100', 0); // remove a named expression // the console prints 'baz' each time a named expression is removed const changes = hfInstance.removeNamedExpression('prettyName', 0); // unsubscribe from the 'namedExpressionRemoved' event hfInstance.off('namedExpressionRemoved', handler); // remove another named expression // this time, the console doesn't print anything const changes = hfInstance.removeNamedExpression('uglyName', 0); ``` #### Type declaration: ▸ (`namedExpressionName`: string, `changes`: [ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]): *any* **Parameters:** Name | Type | ------ | ------ | `namedExpressionName` | string | `changes` | [ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[] | ___ ## Sheet ### sheetAdded • **sheetAdded**: *function* *Defined in [src/Emitter.ts:52](https://github.com/handsontable/hyperformula/blob/a18429c/src/Emitter.ts#L52)* Occurs when a sheet is added anywhere inside the workbook. **`param`** the name of added sheet **`example`** ```js const hfInstance = HyperFormula.buildEmpty(); // define a function to be called when the event occurs const handler = (addedSheetDisplayName) => { console.log('baz') } // subscribe to the 'sheetAdded' event, pass the handler hfInstance.on('sheetAdded', handler); // add a sheet to trigger the 'sheetAdded' event, // the console prints 'baz' each time a sheet is added hfInstance.addSheet('FooBar'); // unsubscribe from the 'sheetAdded' event hfInstance.off('sheetAdded', handler); // add a sheet // this time, the console doesn't print anything hfInstance.addSheet('FooBaz'); ``` #### Type declaration: ▸ (`addedSheetDisplayName`: string): *any* **Parameters:** Name | Type | ------ | ------ | `addedSheetDisplayName` | string | ___ ### sheetRemoved • **sheetRemoved**: *function* *Defined in [src/Emitter.ts:89](https://github.com/handsontable/hyperformula/blob/a18429c/src/Emitter.ts#L89)* Occurs when a sheet is removed from anywhere inside the workbook. **`param`** the name of removed sheet **`param`** the values and location of applied changes **`example`** ```js const hfInstance = HyperFormula.buildFromSheets({ MySheet1: [ ['=SUM(MySheet2!A1:A2)'] ], MySheet2: [ ['10'] ], }); // define a function to be called when the event occurs const handler = (removedSheetDisplayName, changes) => { console.log('baz') } // subscribe to the 'sheetRemoved' event, pass the handler hfInstance.on('sheetRemoved', handler); // remove a sheet to trigger the 'sheetRemoved' event, // the console prints 'baz' each time a sheet is removed hfInstance.removeSheet(0); // unsubscribe from the 'sheetRemoved' event hfInstance.off('sheetRemoved', handler); // remove a sheet // this time, the console doesn't print anything hfInstance.removeSheet(1); ``` #### Type declaration: ▸ (`removedSheetDisplayName`: string, `changes`: [ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]): *any* **Parameters:** Name | Type | ------ | ------ | `removedSheetDisplayName` | string | `changes` | [ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[] | ___ ### sheetRenamed • **sheetRenamed**: *function* *Defined in [src/Emitter.ts:126](https://github.com/handsontable/hyperformula/blob/a18429c/src/Emitter.ts#L126)* Occurs when a sheet is renamed anywhere inside the workbook. **`param`** the old name of a sheet before renaming **`param`** the new name of the sheet after renaming **`example`** ```js const hfInstance = HyperFormula.buildFromSheets({ MySheet1: [ ['=SUM(MySheet2!A1:A2)'] ], MySheet2: [ ['10'] ], }); // define a function to be called when the event occurs const handler = (oldName, newName) => { console.log(`Sheet ${oldName} was renamed to ${newName}`) } // subscribe to the 'sheetRenamed' event, pass the handler hfInstance.on('sheetRenamed', handler); // rename a sheet to trigger the 'sheetRenamed' event, // the console prints `Sheet ${oldName} was renamed to ${newName}` each time a sheet is renamed hfInstance.renameSheet(0, 'MySheet0'); // unsubscribe from the 'sheetRenamed' event hfInstance.off('sheetRenamed', handler); // rename a sheet // this time, the console doesn't print anything hfInstance.renameSheet(1, 'MySheet1'); ``` #### Type declaration: ▸ (`oldDisplayName`: string, `newDisplayName`: string): *any* **Parameters:** Name | Type | ------ | ------ | `oldDisplayName` | string | `newDisplayName` | string | ___ ## Values ### valuesUpdated • **valuesUpdated**: *function* *Defined in [src/Emitter.ts:237](https://github.com/handsontable/hyperformula/blob/a18429c/src/Emitter.ts#L237)* Occurs when values in a specified location are changed and cause recalculation. **`param`** the values and location of applied changes **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['1', '2', '=A1'], ]); // define a function to be called when the event occurs const handler = (changes) => { console.log('baz') } // subscribe to the 'valuesUpdated' event, pass the handler hfInstance.on('valuesUpdated', handler); // trigger recalculation, for example, with the 'setCellContents' method // the console prints 'baz' each time a value change triggers recalculation const changes = hfInstance.setCellContents({ col: 3, row: 0, sheet: 0 }, [['=B1']]); // unsubscribe from the 'valuesUpdated' event hfInstance.off('valuesUpdated', handler); // trigger another recalculation // this time, the console doesn't print anything const changes = hfInstance.setCellContents({ col: 3, row: 0, sheet: 0 }, [['=A1']]); ``` #### Type declaration: ▸ (`changes`: [ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]): *any* **Parameters:** Name | Type | ------ | ------ | `changes` | [ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[] | --- ## GraphBuilderStrategy URL: https://hyperformula.handsontable.com/docs/api/interfaces/graphbuilderstrategy # GraphBuilderStrategy ## Methods ### run ▸ **run**(`sheets`: [Sheets](https://hyperformula.handsontable.com/docs/api/globals.md#sheets)): *[Dependencies](https://hyperformula.handsontable.com/docs/api/globals.md#dependencies)* *Defined in [src/GraphBuilder.ts:64](https://github.com/handsontable/hyperformula/blob/a18429c/src/GraphBuilder.ts#L64)* **Parameters:** Name | Type | ------ | ------ | `sheets` | [Sheets](https://hyperformula.handsontable.com/docs/api/globals.md#sheets) | **Returns:** *[Dependencies](https://hyperformula.handsontable.com/docs/api/globals.md#dependencies)* --- ## NamedExpression URL: https://hyperformula.handsontable.com/docs/api/interfaces/namedexpression # NamedExpression ## Properties ### expression • **expression**? : *undefined | string* *Defined in [src/NamedExpressions.ts:18](https://github.com/handsontable/hyperformula/blob/a18429c/src/NamedExpressions.ts#L18)* ___ ### name • **name**: *string* *Defined in [src/NamedExpressions.ts:16](https://github.com/handsontable/hyperformula/blob/a18429c/src/NamedExpressions.ts#L16)* ___ ### options • **options**? : *[NamedExpressionOptions](https://hyperformula.handsontable.com/docs/api/globals.md#namedexpressionoptions)* *Defined in [src/NamedExpressions.ts:19](https://github.com/handsontable/hyperformula/blob/a18429c/src/NamedExpressions.ts#L19)* ___ ### scope • **scope**? : *undefined | number* *Defined in [src/NamedExpressions.ts:17](https://github.com/handsontable/hyperformula/blob/a18429c/src/NamedExpressions.ts#L17)* --- ## WorksheetStore URL: https://hyperformula.handsontable.com/docs/api/classes/worksheetstore # WorksheetStore ## Properties ### mapping • **mapping**: *Map‹string, [InternalNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/internalnamedexpression.md)‹››* = new Map() *Defined in [src/NamedExpressions.ts:90](https://github.com/handsontable/hyperformula/blob/a18429c/src/NamedExpressions.ts#L90)* ## Methods ### add ▸ **add**(`namedExpression`: [InternalNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/internalnamedexpression.md)): *void* *Defined in [src/NamedExpressions.ts:92](https://github.com/handsontable/hyperformula/blob/a18429c/src/NamedExpressions.ts#L92)* **Parameters:** Name | Type | ------ | ------ | `namedExpression` | [InternalNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/internalnamedexpression.md) | **Returns:** *void* ___ ### get ▸ **get**(`expressionName`: string): *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹[InternalNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/internalnamedexpression.md)›* *Defined in [src/NamedExpressions.ts:96](https://github.com/handsontable/hyperformula/blob/a18429c/src/NamedExpressions.ts#L96)* **Parameters:** Name | Type | ------ | ------ | `expressionName` | string | **Returns:** *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹[InternalNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/internalnamedexpression.md)›* ___ ### getAllNamedExpressions ▸ **getAllNamedExpressions**(): *[InternalNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/internalnamedexpression.md)[]* *Defined in [src/NamedExpressions.ts:104](https://github.com/handsontable/hyperformula/blob/a18429c/src/NamedExpressions.ts#L104)* **Returns:** *[InternalNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/internalnamedexpression.md)[]* ___ ### has ▸ **has**(`expressionName`: string): *boolean* *Defined in [src/NamedExpressions.ts:100](https://github.com/handsontable/hyperformula/blob/a18429c/src/NamedExpressions.ts#L100)* **Parameters:** Name | Type | ------ | ------ | `expressionName` | string | **Returns:** *boolean* ___ ### isNameAvailable ▸ **isNameAvailable**(`expressionName`: string): *boolean* *Defined in [src/NamedExpressions.ts:108](https://github.com/handsontable/hyperformula/blob/a18429c/src/NamedExpressions.ts#L108)* **Parameters:** Name | Type | ------ | ------ | `expressionName` | string | **Returns:** *boolean* ___ ### remove ▸ **remove**(`expressionName`: string): *void* *Defined in [src/NamedExpressions.ts:113](https://github.com/handsontable/hyperformula/blob/a18429c/src/NamedExpressions.ts#L113)* **Parameters:** Name | Type | ------ | ------ | `expressionName` | string | **Returns:** *void* --- ## SearchOptions URL: https://hyperformula.handsontable.com/docs/api/interfaces/searchoptions # SearchOptions ## Properties ### ifNoMatch • **ifNoMatch**: *"returnLowerBound" | "returnUpperBound" | "returnNotFound"* *Defined in [src/Lookup/SearchStrategy.ts:19](https://github.com/handsontable/hyperformula/blob/a18429c/src/Lookup/SearchStrategy.ts#L19)* ___ ### ordering • **ordering**: *"asc" | "desc" | "none"* *Defined in [src/Lookup/SearchStrategy.ts:18](https://github.com/handsontable/hyperformula/blob/a18429c/src/Lookup/SearchStrategy.ts#L18)* ___ ### returnOccurrence • **returnOccurrence**? : *"first" | "last"* *Defined in [src/Lookup/SearchStrategy.ts:20](https://github.com/handsontable/hyperformula/blob/a18429c/src/Lookup/SearchStrategy.ts#L20)* --- ## RowsRemoval URL: https://hyperformula.handsontable.com/docs/api/interfaces/rowsremoval # RowsRemoval ## Properties ### removedCells • **removedCells**: *[ChangedCell](https://hyperformula.handsontable.com/docs/api/interfaces/changedcell.md)[]* *Defined in [src/Operations.ts:141](https://github.com/handsontable/hyperformula/blob/a18429c/src/Operations.ts#L141)* ___ ### rowCount • **rowCount**: *number* *Defined in [src/Operations.ts:139](https://github.com/handsontable/hyperformula/blob/a18429c/src/Operations.ts#L139)* ___ ### rowFrom • **rowFrom**: *number* *Defined in [src/Operations.ts:138](https://github.com/handsontable/hyperformula/blob/a18429c/src/Operations.ts#L138)* ___ ### version • **version**: *number* *Defined in [src/Operations.ts:140](https://github.com/handsontable/hyperformula/blob/a18429c/src/Operations.ts#L140)* --- ## MoveCellsResult URL: https://hyperformula.handsontable.com/docs/api/interfaces/movecellsresult # MoveCellsResult ## Properties ### addedGlobalNamedExpressions • **addedGlobalNamedExpressions**: *string[]* *Defined in [src/Operations.ts:154](https://github.com/handsontable/hyperformula/blob/a18429c/src/Operations.ts#L154)* ___ ### overwrittenCellsData • **overwrittenCellsData**: *[[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), [ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell)][]* *Defined in [src/Operations.ts:153](https://github.com/handsontable/hyperformula/blob/a18429c/src/Operations.ts#L153)* ___ ### version • **version**: *number* *Defined in [src/Operations.ts:152](https://github.com/handsontable/hyperformula/blob/a18429c/src/Operations.ts#L152)* --- ## SearchStrategy URL: https://hyperformula.handsontable.com/docs/api/interfaces/searchstrategy # SearchStrategy ## Methods ### advancedFind ▸ **advancedFind**(`keyMatcher`: function, `range`: [SimpleRangeValue](https://hyperformula.handsontable.com/docs/api/classes/simplerangevalue.md), `options`: [AdvancedFindOptions](https://hyperformula.handsontable.com/docs/api/interfaces/advancedfindoptions.md)): *number* *Defined in [src/Lookup/SearchStrategy.ts:33](https://github.com/handsontable/hyperformula/blob/a18429c/src/Lookup/SearchStrategy.ts#L33)* **Parameters:** ▪ **keyMatcher**: *function* ▸ (`arg`: RawInterpreterValue): *boolean* **Parameters:** Name | Type | ------ | ------ | `arg` | RawInterpreterValue | ▪ **range**: *[SimpleRangeValue](https://hyperformula.handsontable.com/docs/api/classes/simplerangevalue.md)* ▪ **options**: *[AdvancedFindOptions](https://hyperformula.handsontable.com/docs/api/interfaces/advancedfindoptions.md)* **Returns:** *number* ___ ### find ▸ **find**(`searchKey`: RawNoErrorScalarValue, `range`: [SimpleRangeValue](https://hyperformula.handsontable.com/docs/api/classes/simplerangevalue.md), `options`: [SearchOptions](https://hyperformula.handsontable.com/docs/api/interfaces/searchoptions.md)): *number* *Defined in [src/Lookup/SearchStrategy.ts:31](https://github.com/handsontable/hyperformula/blob/a18429c/src/Lookup/SearchStrategy.ts#L31)* **Parameters:** Name | Type | ------ | ------ | `searchKey` | RawNoErrorScalarValue | `range` | [SimpleRangeValue](https://hyperformula.handsontable.com/docs/api/classes/simplerangevalue.md) | `options` | [SearchOptions](https://hyperformula.handsontable.com/docs/api/interfaces/searchoptions.md) | **Returns:** *number* --- ## CellRange URL: https://hyperformula.handsontable.com/docs/api/interfaces/cellrange # CellRange ## Properties ### end • **end**: *CellAddress* *Defined in [src/Cell.ts:237](https://github.com/handsontable/hyperformula/blob/a18429c/src/Cell.ts#L237)* ___ ### start • **start**: *CellAddress* *Defined in [src/Cell.ts:236](https://github.com/handsontable/hyperformula/blob/a18429c/src/Cell.ts#L236)* --- ## SerializedNamedExpression URL: https://hyperformula.handsontable.com/docs/api/interfaces/serializednamedexpression # SerializedNamedExpression ## Properties ### expression • **expression**: *[RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent)* *Defined in [src/Serialization.ts:18](https://github.com/handsontable/hyperformula/blob/a18429c/src/Serialization.ts#L18)* ___ ### name • **name**: *string* *Defined in [src/Serialization.ts:17](https://github.com/handsontable/hyperformula/blob/a18429c/src/Serialization.ts#L17)* ___ ### options • **options**? : *[NamedExpressionOptions](https://hyperformula.handsontable.com/docs/api/globals.md#namedexpressionoptions)* *Defined in [src/Serialization.ts:20](https://github.com/handsontable/hyperformula/blob/a18429c/src/Serialization.ts#L20)* ___ ### scope • **scope**? : *undefined | number* *Defined in [src/Serialization.ts:19](https://github.com/handsontable/hyperformula/blob/a18429c/src/Serialization.ts#L19)* --- ## SheetBoundaries URL: https://hyperformula.handsontable.com/docs/api/interfaces/sheetboundaries # SheetBoundaries Represents size and fill ratio of a sheet ## Properties ### fill • **fill**: *number* *Defined in [src/Sheet.ts:30](https://github.com/handsontable/hyperformula/blob/a18429c/src/Sheet.ts#L30)* ___ ### height • **height**: *number* *Defined in [src/Sheet.ts:29](https://github.com/handsontable/hyperformula/blob/a18429c/src/Sheet.ts#L29)* ___ ### width • **width**: *number* *Defined in [src/Sheet.ts:28](https://github.com/handsontable/hyperformula/blob/a18429c/src/Sheet.ts#L28)* --- ## SheetCellAddress URL: https://hyperformula.handsontable.com/docs/api/interfaces/sheetcelladdress # SheetCellAddress ## Properties ### col • **col**: *number* *Defined in [src/Cell.ts:231](https://github.com/handsontable/hyperformula/blob/a18429c/src/Cell.ts#L231)* ___ ### row • **row**: *number* *Defined in [src/Cell.ts:232](https://github.com/handsontable/hyperformula/blob/a18429c/src/Cell.ts#L232)* --- ## SimpleColumnAddress URL: https://hyperformula.handsontable.com/docs/api/interfaces/simplecolumnaddress # SimpleColumnAddress ## Properties ### col • **col**: *number* *Defined in [src/Cell.ts:184](https://github.com/handsontable/hyperformula/blob/a18429c/src/Cell.ts#L184)* ___ ### sheet • **sheet**: *number* *Defined in [src/Cell.ts:185](https://github.com/handsontable/hyperformula/blob/a18429c/src/Cell.ts#L185)* --- ## SimpleCellAddress URL: https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress # SimpleCellAddress ## Properties ### col • **col**: *number* *Defined in [src/Cell.ts:193](https://github.com/handsontable/hyperformula/blob/a18429c/src/Cell.ts#L193)* ___ ### row • **row**: *number* *Defined in [src/Cell.ts:194](https://github.com/handsontable/hyperformula/blob/a18429c/src/Cell.ts#L194)* ___ ### sheet • **sheet**: *number* *Defined in [src/Cell.ts:195](https://github.com/handsontable/hyperformula/blob/a18429c/src/Cell.ts#L195)* --- ## SimpleCellRange URL: https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange # SimpleCellRange ## Properties ### end • **end**: *[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)* *Defined in [src/AbsoluteCellRange.ts:26](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L26)* ___ ### start • **start**: *[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)* *Defined in [src/AbsoluteCellRange.ts:25](https://github.com/handsontable/hyperformula/blob/a18429c/src/AbsoluteCellRange.ts#L25)* --- ## SimpleRowAddress URL: https://hyperformula.handsontable.com/docs/api/interfaces/simplerowaddress # SimpleRowAddress ## Properties ### row • **row**: *number* *Defined in [src/Cell.ts:175](https://github.com/handsontable/hyperformula/blob/a18429c/src/Cell.ts#L175)* ___ ### sheet • **sheet**: *number* *Defined in [src/Cell.ts:176](https://github.com/handsontable/hyperformula/blob/a18429c/src/Cell.ts#L176)* --- ## SimpleDate URL: https://hyperformula.handsontable.com/docs/api/interfaces/simpledate # SimpleDate ## Properties ### day • **day**: *number* *Defined in [src/DateTimeHelper.ts:20](https://github.com/handsontable/hyperformula/blob/a18429c/src/DateTimeHelper.ts#L20)* ___ ### month • **month**: *number* *Defined in [src/DateTimeHelper.ts:19](https://github.com/handsontable/hyperformula/blob/a18429c/src/DateTimeHelper.ts#L19)* ___ ### year • **year**: *number* *Defined in [src/DateTimeHelper.ts:18](https://github.com/handsontable/hyperformula/blob/a18429c/src/DateTimeHelper.ts#L18)* --- ## SimpleTime URL: https://hyperformula.handsontable.com/docs/api/interfaces/simpletime # SimpleTime ## Properties ### hours • **hours**: *number* *Defined in [src/DateTimeHelper.ts:24](https://github.com/handsontable/hyperformula/blob/a18429c/src/DateTimeHelper.ts#L24)* ___ ### minutes • **minutes**: *number* *Defined in [src/DateTimeHelper.ts:25](https://github.com/handsontable/hyperformula/blob/a18429c/src/DateTimeHelper.ts#L25)* ___ ### seconds • **seconds**: *number* *Defined in [src/DateTimeHelper.ts:26](https://github.com/handsontable/hyperformula/blob/a18429c/src/DateTimeHelper.ts#L26)* --- ## TemplateVars URL: https://hyperformula.handsontable.com/docs/api/interfaces/templatevars # TemplateVars --- ## TypedEmitter URL: https://hyperformula.handsontable.com/docs/api/interfaces/typedemitter # TypedEmitter ## Methods ### off ▸ **off**‹**Event**›(`s`: Event, `listener`: Listeners[Event]): *void* *Defined in [src/Emitter.ts:322](https://github.com/handsontable/hyperformula/blob/a18429c/src/Emitter.ts#L322)* **Type parameters:** ▪ **Event**: *keyof Listeners* **Parameters:** Name | Type | ------ | ------ | `s` | Event | `listener` | Listeners[Event] | **Returns:** *void* ___ ### on ▸ **on**‹**Event**›(`s`: Event, `listener`: Listeners[Event]): *void* *Defined in [src/Emitter.ts:320](https://github.com/handsontable/hyperformula/blob/a18429c/src/Emitter.ts#L320)* **Type parameters:** ▪ **Event**: *keyof Listeners* **Parameters:** Name | Type | ------ | ------ | `s` | Event | `listener` | Listeners[Event] | **Returns:** *void* ___ ### once ▸ **once**‹**Event**›(`s`: Event, `listener`: Listeners[Event]): *void* *Defined in [src/Emitter.ts:324](https://github.com/handsontable/hyperformula/blob/a18429c/src/Emitter.ts#L324)* **Type parameters:** ▪ **Event**: *keyof Listeners* **Parameters:** Name | Type | ------ | ------ | `s` | Event | `listener` | Listeners[Event] | **Returns:** *void* --- ## UndoEntry URL: https://hyperformula.handsontable.com/docs/api/interfaces/undoentry # UndoEntry ## Methods ### doRedo ▸ **doRedo**(`undoRedo`: [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md)): *void* *Defined in [src/UndoRedo.ts:24](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L24)* **Parameters:** Name | Type | ------ | ------ | `undoRedo` | [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md) | **Returns:** *void* ___ ### doUndo ▸ **doUndo**(`undoRedo`: [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md)): *void* *Defined in [src/UndoRedo.ts:22](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L22)* **Parameters:** Name | Type | ------ | ------ | `undoRedo` | [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md) | **Returns:** *void* ___ ### getReferencedOldDataVersions ▸ **getReferencedOldDataVersions**(): *number[]* *Defined in [src/UndoRedo.ts:30](https://github.com/handsontable/hyperformula/blob/a18429c/src/UndoRedo.ts#L30)* Returns the LazilyTransformingAstService version keys referenced by this entry's oldData storage. Used to clean up oldData when the entry is permanently evicted from the undo/redo stack. **Returns:** *number[]* --- ## ValueIndex URL: https://hyperformula.handsontable.com/docs/api/interfaces/valueindex # ValueIndex ## Properties ### index • **index**: *number[]* *Defined in [src/Lookup/ColumnIndex.ts:34](https://github.com/handsontable/hyperformula/blob/a18429c/src/Lookup/ColumnIndex.ts#L34)* ___ ### version • **version**: *number* *Defined in [src/Lookup/ColumnIndex.ts:33](https://github.com/handsontable/hyperformula/blob/a18429c/src/Lookup/ColumnIndex.ts#L33)* --- ## CellContent URL: https://hyperformula.handsontable.com/docs/api/modules/cellcontent # CellContent ## Type aliases ### Type Ƭ **Type**: *[Number](https://hyperformula.handsontable.com/docs/api/classes/cellcontent.number.md) | [String](https://hyperformula.handsontable.com/docs/api/classes/cellcontent.string.md) | [Boolean](https://hyperformula.handsontable.com/docs/api/classes/cellcontent.boolean.md) | [Empty](https://hyperformula.handsontable.com/docs/api/classes/cellcontent.empty.md) | [Formula](https://hyperformula.handsontable.com/docs/api/classes/cellcontent.formula.md) | [Error](https://hyperformula.handsontable.com/docs/api/classes/cellcontent.error.md)* *Defined in [src/CellContentParser.ts:69](https://github.com/handsontable/hyperformula/blob/a18429c/src/CellContentParser.ts#L69)* --- ## Advanced usage URL: https://hyperformula.handsontable.com/docs/guide/advanced-usage # Advanced usage > By default, cells are identified using a `SimpleCellAddress` which > consists of a sheet ID, column ID, and row ID, like > this: `{ sheet: 0, col: 0, row: 0 }` > > Alternatively, you can work with the **A1 notation** known from > spreadsheets like Excel or Google Sheets. The API provides the helper > function `simpleCellAddressFromString` which you can use to > retrieve the `SimpleCellAddress` . The following example shows how to use formulas to find out which of the two Teams (A or B) is the winning one. You will do that by comparing the average scores of players in each team. The initial steps are the same as in the [basic example](https://hyperformula.handsontable.com/docs/guide/basic-usage.md). First, import HyperFormula and choose the configuration options: ```javascript import { HyperFormula } from 'hyperformula'; const options = { licenseKey: 'gpl-v3' }; ``` This time you will use the `buildFromEmpty` static method to initialize the engine: ```javascript // initiate the engine with no data const hfInstance = HyperFormula.buildEmpty(options); ``` Now, let's prepare some data. The first column will be players' IDs and the second column will be their scores. Then, you will define the formulas responsible for calculating the average scores. ```javascript // first column represents players' IDs // second column represents players' scores const playersA = [ ['1', '2'], ['2', '3'], ['3', '5'], ['4', '7'], ['5', '13'], ['6', '17'] ]; const playersB = [ ['7', '19'], ['8', '31'], ['9', '61'], ['10', '89'], ['11', '107'], ['12', '127'] ]; // in cell A1 a formula checks which team is the winning one // in cells A2 and A3 formulas calculate the average score of players const formulas = [ ['=IF(Formulas!A2>Formulas!A3,"TeamA","TeamB")'], ['=AVERAGE(TeamA!B1:B6)'], ['=AVERAGE(TeamB!B1:B6)'] ]; ``` Now prepare sheets and insert the data into them: ```javascript // add 'TeamA' sheet const sheetNameA = hfInstance.addSheet('TeamA'); // get the new sheet ID for further API calls const sheetIdA = hfInstance.getSheetId(sheetNameA); // insert playersA content into targeted 'TeamA' sheet hfInstance.setSheetContent(sheetIdA, playersA); // add 'TeamB' sheet const sheetNameB = hfInstance.addSheet('TeamB'); // get the new sheet ID for further API calls const sheetIdB = hfInstance.getSheetId(sheetNameB); // insert playersB content into targeted 'TeamB' sheet hfInstance.setSheetContent(sheetIdB, playersB); // check the content in the console output console.log(hfInstance.getAllSheetsValues()); ``` After setting everything up, you can add formulas: ```javascript // add a sheet named 'Formulas' const sheetNameC = hfInstance.addSheet('Formulas'); // get the new sheet ID for further API calls const sheetIdC = hfInstance.getSheetId(sheetNameC); // add formulas to that sheet hfInstance.setSheetContent(sheetIdC, formulas); ``` Almost done! Now, you can use the `getSheetValues` method to get all values including the calculated ones. Alternatively, you can use `getCellValue`to get the value from a specific cell. ```javascript // get all sheet values const sheetValues = hfInstance.getSheetValues(sheetIdC); // get the simple cell address of 'A1' from that sheet const simpleCellAddress = hfInstance.simpleCellAddressFromString('A1', sheetIdC); // check the winning team 🎉 const winningTeam = hfInstance.getCellValue(simpleCellAddress); // print the result to the console console.log(winningTeam) ``` --- ## Array formulas URL: https://hyperformula.handsontable.com/docs/guide/arrays # Array formulas Use array formulas to perform an operation (or call a function) on multiple cells at a time. ## About arrays In HyperFormula, an array can be: * A range of cell addresses (e.g., `A1:A10`) * A result of an arithmetic operation (e.g., `5*A1:B5`) * A result of a function (e.g., `=ARRAYFORMULA(ARRAY_CONSTRAIN(A2:E5, 2, 2))`) * An **inline array**: an ad-hoc array that doesn't reference any range of cells (e.g., `{1, 3, 5}`) An array is inherently a two-dimensional object. `1`x`1` arrays are treated as single, zero-dimensional values (**scalars**). ### Inline arrays An inline array is defined by curly braces: `{ }`. It can contain one or more rows, separated by: - The [`arrayColumnSeparator`](https://hyperformula.handsontable.com/docs/api/classes/config.md#arraycolumnseparator) (default: `,`) - The [`arrayRowSeparator`](https://hyperformula.handsontable.com/docs/api/classes/config.md#arrayrowseparator) (default: `;`) Every row must be of equal length. > **Inline arrays are not recomputed after initialization.** > > If an inline array contains a cell reference, and the cell's value changes, the array is not updated. ``` = {1, 2, 3} // an inline array with a single row = {1, 2 ; 3, 4} // an inline array with two rows = SUM({1, 2, 3}) // an inline array as an argument of a function = {A1, A2} // when the values of A1 or A2 change, this inline array is not updated = {1, 2 ; 3} // an invalid inline array: two rows of different lengths ``` ## Array arithmetic mode To use array formulas in HyperFormula, you need to enable the **array arithmetic mode**. You can enable the array arithmetic mode: * [Locally](#enabling-the-array-arithmetic-mode-locally) (for an individual function or operation) * [Globally](#enabling-the-array-arithmetic-mode-globally) (for your HyperFormula instance) ### Enabling the array arithmetic mode locally To enable the array arithmetic mode once, within a particular function or formula, use the `ARRAYFORMULA` function: | Syntax | Example | |:--------------------------------------------------|:----------------------------------| | `ARRAYFORMULA(your_array_formula)` | `=ARRAYFORMULA(A2:A5*B2:B5)` | | `ARRAYFORMULA(YOUR_FUNCTION(your_array_formula))` | `=ARRAYFORMULA(ISEVEN(A2:A5*10))` | ### Enabling the array arithmetic mode globally To enable the array arithmetic mode by default, everywhere in your HyperFormula instance: * In your HyperFormula [configuration](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#usearrayarithmetic), set the `useArrayArithmetic` option to `true`. With the array arithmetic mode enabled globally, you can operate on arrays without using the `ARRAYFORMULA` function: ``` =A2:A5*B2:B5 ISEVEN(A2:A5*10) ``` ## Array features Thanks to HyperFormula's built-in array features, you can: * [Operate on arrays](#operating-on-arrays) just like on [scalars](#about-arrays) * [Pass arrays to functions](#passing-arrays-to-scalar-functions-vectorization) that accept [scalars](#about-arrays) * [Broadcast](#broadcasting) smaller input arrays across larger output areas You can also: * Use the `FILTER` function to [filter an array](#filtering-an-array), based on boolean arrays * Use the `ARRAY_CONSTRAIN` function to [constrain an array's size](#constraining-an-array-s-size) ### Operating on arrays You can operate on arrays just like on single values. When the [array arithmetic mode](#array-arithmetic-mode) is enabled, each output array value is the result of your operation on the corresponding input array value. ``` =ARRAYFORMULA(A2:A5*B2:B5) // calculates: // =A2*B2 // =A3*B3 // =A4*B4 // =A5*B5 ``` ### Passing arrays to scalar functions (vectorization) When the [array arithmetic mode](#array-arithmetic-mode) is enabled, HyperFormula automatically _vectorizes_ most functions. As a consequence of that, you can pass arrays to functions that would normally accept [scalars](#about-arrays). The result would also be an array. ``` =ARRAYFORMULA(ISEVEN(A2:A5)) // calculates: // =ISEVEN(A2) // =ISEVEN(A3) // =ISEVEN(A4) // =ISEVEN(A5) ``` ### Broadcasting If an input array has a dimension of `1`, it's automatically repeated ("broadcast") on that dimension to match the size of the output. ``` =ARRAYFORMULA(ISEVEN(A2:A5*B2)) // calculates: // =ISEVEN(A2*B2) // =ISEVEN(A3*B2) // =ISEVEN(A4*B2) // =ISEVEN(A5*B2) ``` ### Filtering an array When the [array arithmetic mode](#array-arithmetic-mode) is enabled, you can filter an array, based on boolean arrays, using the `FILTER` function: | Syntax | Example | |:-----------------------------------------------------|:------------------------------------------------| | `FILTER(your_array, BoolArray1[, BoolArray2[, ...]]` | `=ARRAYFORMULA(FILTER(A2:A5*10), {1, 0, 0, 1})` | ### Constraining an array's size When the [array arithmetic mode](#array-arithmetic-mode) is enabled, you can constrain the size of the output array, using the `ARRAY_CONSTRAIN` function: | Syntax | Example | |:-------------------------------------------|:----------------------------------------------| | `ARRAY_CONSTRAIN(your_array,height,width)` | `=ARRAYFORMULA(ARRAY_CONSTRAIN(A2:E5, 2, 2))` | If your specified output array size is smaller than the input array size, only the corresponding top-left cells of the input array are taken into account. If your specified output array size is larger or equal to the input array size, no change is made. ## Array rules ### With the array arithmetic mode enabled When the [array arithmetic mode](#array-arithmetic-mode) is enabled, and you pass an array to a [scalar](#about-arrays) function, the following rules apply: * Array dimensions need to be consistent (e.g., every row needs to be of the same length). * If an input array value is missing (due to a difference in dimensions), the corresponding output array value is `#N/A`. * If a cell evaluates to an array, the array values are spilled into neighboring cells (unless the neighboring cells are already filled).
This behavior doesn't apply to ranges, which return the `#VALUE!` error in this case. * If one of input array dimensions is `1` (`1`x`n` or `n`x`1`), the array is repeated, to match the output array dimensions. ### With the array arithmetic mode disabled When the [array arithmetic mode](#array-arithmetic-mode) is disabled, and you pass an array to a [scalar](#about-arrays) function, the array is reduced to 1 element (usually the array's top-left value). When the [array arithmetic mode](#array-arithmetic-mode) is disabled, and you operate on a range of width/height equal to `1`, the behavior depends on your array formula's location: | Your array formula's location | Behavior | |:--------------------------------------------------|:---------------------------------------| | In the same row as as one of the range's elements | Only that particular element is taken. | | Any other cell | `#VALUE!` error | --- ## Batch operations URL: https://hyperformula.handsontable.com/docs/guide/batch-operations # Batch operations HyperFormula offers a built-in feature for doing batch operations. It allows you to combine multiple data modification actions into a single operation. In some cases, batch operations can result in better performance, especially when your app requires doing a large number of operations. ## How to batch ### Using the [`batch`](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#batch) method You can use the [`batch`](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#batch) method to batch operations. This method accepts just one parameter: a callback function that stacks the selected operations into one. It performs the cumulative operation at the end. This method returns a list of cells whose values were affected by this operation together with their absolute addresses and new values. ```javascript const hfInstance = HyperFormula.buildFromSheets({ MySheet1: [ ['1'] ], MySheet2: [ ['10'] ], }); // multiple operations in a single callback will trigger evaluation only once // and only one set of changes will be returned as a combined result of all // the operations that were triggered within the callback const changes = hfInstance.batch(() => { hfInstance.setCellContents({ col: 3, row: 0, sheet: 0 }, [['=B1']]); hfInstance.setCellContents({ col: 4, row: 0, sheet: 0 }, [['=A1']]); // and numerous others }); ``` ### Using the [`suspendEvaluation`](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#suspendevaluation) and [`resumeEvaluation`](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#resumeevaluation) methods The same result can be achieved by suspending and resuming the evaluation. To do that you need to explicitly suspend the evaluation, then do the operations one by one, and then resume the evaluation. This method returns a list of cells which values were affected by the operation together with their absolute addresses and new values. ```javascript const hfInstance = HyperFormula.buildFromSheets({ MySheet1: [ ['1'] ], MySheet2: [ ['10'] ], }); // suspend the evaluation hfInstance.suspendEvaluation(); // perform operations hfInstance.setCellContents({ col: 3, row: 0, sheet: 0 }, [['=B1']]); hfInstance.setSheetContent(1, [['50'], ['60']]); // resume the evaluation const changes = hfInstance.resumeEvaluation(); ``` You can resume the evaluation by calling the [`resumeEvaluation`](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#resumeevaluation) method which triggers the recalculation. Just like in the case of the [`batch`](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#batch) method, it returns a list of cells which values changed after the operation, together with their absolute addresses, and new values. ### Checking the evaluation suspension state When you need to check if the evaluation is suspended you can call the [`isEvaluationSuspended`](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#isevaluationsuspended) method. ```javascript const hfInstance = HyperFormula.buildEmpty(); // suspend the evaluation hfInstance.suspendEvaluation(); // check if the evaluation is suspended // this method returns a simple boolean value const isEvaluationSuspended = hfInstance.isEvaluationSuspended(); // resume evaluation if needed hfInstance.resumeEvaluation(); ``` ## When to batch You can batch operations anytime you want to stack several actions into one. However, if you want to see the most amazing benefits of this feature, use batch operations when there are a lot of heavy methods. This will result in better performance. The best candidates to batch in this situation are the following methods: * `clearSheet` * `setSheetContent` * `setCellContents` * `addNamedExpression` * `changeNamedExpression` * `removeNamedExpression` These operations have an impact on calculation results and may affect the performance. Batching can be useful when there is a need for multiple memory-consuming operations. In this case, you should consider using it to achieve better performance in the application you develop; it will result in faster calculation across the whole HyperFormula instance. Batching can also be useful when you decide to use HyperFormula on the [server-side](https://hyperformula.handsontable.com/docs/guide/server-side-installation). Several operations can be sent as a single one. ## What you can't batch You can't batch read operations. Methods such as [`getCellValue`](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#getcellvalue), [`getSheetSerialized`](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#getsheetserialized), or [`getFillRangeData`](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#getfillrangedata) will result in an error when called inside a [batch callback](#using-the-batch-method) or when the evaluation is [suspended](#using-the-suspendevaluation-and-resumeevaluation-methods). The [paste](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#paste) method also can't be called when batching as it reads the contents of the copied cells. --- ## Branding URL: https://hyperformula.handsontable.com/docs/guide/branding # Branding ## Our logo The logo is comprised of the word "HyperFormula" combined with the integral ( `∫` ) which replaces the letter "F". Use our logo responsibly, and do not alter it in any way. ## Logotype ![](https://hyperformula.handsontable.com/docs/hf_logo.png) ## Resources [Download resources](https://hyperformula.handsontable.com/docs/hyperformula_logo.zip) [Download brand book](https://hyperformula.handsontable.com/docs/hyperformula_brand_book.pdf) ## Terms of use Your use of Content is governed by [Terms of Use](https://handsontable.com/terms-of-use) and subject to these brand guidelines. ## Trademark protection HyperFormula ® is a registered trademark. The brand package and other brand materials available on this website are owned by Handsoncode. * [TMview](https://www.tmdn.org/tmview/#/tmview/detail/EM500000018141121) (European Trade Mark and Design Network) * [EUIPO](https://euipo.europa.eu/eSearch/#details/trademarks/018141121) (European Union Intellectual Property Office) --- ## HyperFormula AI SDK for Vercel URL: https://hyperformula.handsontable.com/docs/guide/ai-sdk # HyperFormula AI SDK for Vercel A [Vercel AI SDK](https://sdk.vercel.ai/docs) tool that gives your agents deterministic spreadsheet and formula computation — backed by HyperFormula's Excel-compatible engine. > **Not available yet — coming soon** > > This integration is on our roadmap and **cannot be installed or used today**. The API shown below is a preview and may still change before the first release. > > If you'd like to try it, [join the early access list](https://2fmjvg.share-eu1.hsforms.com/2e6drCkuLTn-1RuiYB91eJA) — we'll ping you the moment the first beta is ready, and your sign-up directly tells us how strongly to prioritize this integration. ## What it does - **Evaluate formulas deterministically** — your agent runs any Excel-compatible formula through HyperFormula instead of asking the LLM to do math. Results are exact, reproducible, and auditable. - **Read and write cells and ranges** — the agent inspects, populates, or modifies sheet data through typed tool calls. - **Trace dependencies** — precedents and dependents are surfaced so the agent can explain how every value was derived. - **400+ built-in functions out of the box** — the agent has access to the full Excel-compatible function set (`SUM`, `VLOOKUP`, `IRR`, `INDEX/MATCH`, and the rest), no implementation work required. ## Example Using HyperFormula as a tool inside the Vercel AI SDK: ```js import { generateText } from 'ai'; import { openai } from '@ai-sdk/openai'; import HyperFormula from 'hyperformula'; import { createSpreadsheetTools } from 'hyperformula/ai'; // Build a workbook your agent can reason about. const hf = HyperFormula.buildFromArray([ ['Revenue', 100], ['Cost', 60], ['Profit', '=B1-B2'], ]); // Pass the spreadsheet tools straight into generateText. const result = await generateText({ model: openai('gpt-4o'), tools: createSpreadsheetTools(hf), prompt: 'What drives the profit number, and what happens if revenue doubles?', }); ``` A single import, one extra line in `tools`, and the model can evaluate formulas, read ranges, and edit cells through the SDK — without inventing numbers. ## Use cases - **Explain the spreadsheet** — ask the agent what a workbook does, which cells are inputs, and how each output is derived; get answers grounded in real formula evaluation. - **What-if scenarios and forecasting** — the agent tweaks assumptions and reports how downstream results change, deterministically. - **Validate and clean data** — the agent scans ranges for errors, missing values, or inconsistencies and fixes them in place. - **Generate formulas from natural language** — the agent translates a plain-English calculation into a verified, working Excel formula. - **Financial modeling and reporting** — NPV, IRR, amortization, KPI rollups, and other quantitative workflows where the answer must be exact and auditable. ## Get early access > **Be the first to try it** > > We're actively building this integration. Drop your email and we'll notify you the moment the first beta lands — so you can try it before the public release. > > [Join the early access list →](https://2fmjvg.share-eu1.hsforms.com/2e6drCkuLTn-1RuiYB91eJA) ## Links - [Vercel AI SDK documentation](https://sdk.vercel.ai/docs) - [HyperFormula on GitHub](https://github.com/handsontable/hyperformula) - [HyperFormula on npm](https://www.npmjs.com/package/hyperformula) - [Built-in functions](https://hyperformula.handsontable.com/docs/guide/built-in-functions.md) - [Custom functions](https://hyperformula.handsontable.com/docs/guide/custom-functions.md) --- ## Basic operations URL: https://hyperformula.handsontable.com/docs/guide/basic-operations # Basic operations HyperFormula can perform efficient **CRUD** operations on the workbook. You can apply these operations to various workbook elements, such as: * Cells * Rows / Columns * Sheets **Check the [API](https://hyperformula.handsontable.com/docs/api)** for a full reference of methods available for CRUD operations. HyperFormula automatically updates all references, both relative and absolute, in all sheets affected by the change. Operations affecting only the dependency graph should not decrease performance. However, multiple operations that have an impact on calculation results may affect performance; these are [`clearSheet`](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#clearsheet), [`setSheetContent`](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#setsheetcontent), [`setCellContents`](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#setcellcontents), [`addNamedExpression`](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#addnamedexpression), [`changeNamedExpression`](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#changenamedexpression), and [`removeNamedExpression`](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#removenamedexpression). It is advised to [batch](https://hyperformula.handsontable.com/docs/guide/batch-operations.md) them. ## Sheets ### Adding a sheet A sheet can be added by using the [`addSheet`](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#addsheet) method. You can pass a name for it or leave it without a parameter. In the latter case the method will create an autogenerated name for it. That name can then be returned for further use. ```javascript // the autogenerated sheet name can be assigned to a variable const myNewSheet = hfInstance.addSheet(); // create a sheet with a specific name hfInstance.addSheet('SheetName'); ``` You can also count sheets by using the [`countSheets`](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#countsheets) method. This method does not require any parameters. ```javascript // count the number of sheets you added const sheetsCount = hfInstance.countSheets(); ``` ### Removing a sheet A sheet can be removed by using the [`removeSheet`](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#removesheet) method. To do that you need to pass a mandatory parameter: the ID of a sheet to be removed. This method returns [an array of changed cells](#changes-array). ```javascript // track the changes triggered by removing the sheet 0 const changes = hfInstance.removeSheet(0); ``` ### Renaming a sheet A sheet can be renamed by using the [`renameSheet`](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#renamesheet) method. You need to pass the ID of a sheet you want to rename (you can get it with the [`getSheetId`](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#getsheetid) method only if you know its name) along with a new name as the first and second parameters, respectively. ```javascript // rename the first sheet hfInstance.renameSheet(0, 'NewSheetName'); // you can retrieve the sheet ID if you know its name const sheetID = hfInstance.getSheetId('SheetName'); // use the retrieved sheet ID in the method hfInstance.renameSheet(sheetID, 'AnotherNewName'); ``` ### Clearing a sheet A sheet's content can be cleared with the [`clearSheet`](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#clearsheet) method. You need to provide the ID of a sheet whose content you want to clear. This method returns [an array of changed cells](#changes-array). ```javascript // clear the content of sheet 0 const changes = hfInstance.clearSheet(0); ``` ### Replacing sheet content Instead of removing and adding the content of a sheet you can replace it right away. To do so use [`setSheetContent`](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#setsheetcontent), in which you can pass the sheet ID and its new values. This method returns [an array of changed cells](#changes-array). ```javascript // set new values for sheet 0 const changes = hfInstance.setSheetContent(0, [['50'], ['60']]); ``` ## Rows ### Adding rows You can add one or more rows by using the [`addRows`](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#addrows) method. The first parameter you need to pass is a sheet ID, and the second parameter represents the position and the size of a block of rows to be added. This method returns [an array of changed cells](#changes-array). ```javascript // track the changes triggered by adding // two rows at position 0 inside the first sheet const changes = hfInstance.addRows(0, [0, 2]); ``` ### Removing rows You can remove one or more rows by using the [`removeRows`](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#removerows) method. The first parameter you need to pass is a sheet ID, and the second parameter represents the position and the size of a block of rows to be removed. This method returns [an array of changed cells](#changes-array). ```javascript // track the changes triggered by removing // two rows at position 0 inside the first sheet const changes = hfInstance.removeRows(0, [0, 2]); ``` ### Moving rows You can move one or more rows by using the [`moveRows`](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#moverows) method. You need to pass the following parameters: * Sheet ID * Starting row * Number of rows to be moved * [Target row](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#moverows) This method returns [an array of changed cells](#changes-array). ```javascript // track the changes triggered by moving // the first row in the first sheet into row 2 const changes = hfInstance.moveRows(0, 0, 1, 2); ``` ### Reordering rows You can change the order of rows by using the [`setRowOrder`](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#setroworder) method. You need to pass the following parameters: * Sheet ID * [New row order](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#setroworder) The new row order is a permutation of the form `[ newPositionForRow0, newPositionForRow1, newPositionForRow2, ... ]`. The value at index `i` is the new position for the row that is currently at index `i`. See the [Sorting data](https://hyperformula.handsontable.com/docs/guide/sorting-data.md) guide for details. This method returns [an array of changed cells](#changes-array). ```javascript // move row 0 to position 1, row 1 to position 2, and row 2 to position 0 const changes = hfInstance.setRowOrder(0, [1, 2, 0]); ``` ## Columns ### Adding columns You can add one or more columns by using the [`addColumns`](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#addcolumns) method. The first parameter you need to pass is a sheet ID, and the second parameter represents the position and the size of a block of columns to be added. This method returns [an array of changed cells](#changes-array). ```javascript // track the changes triggered by adding // two columns at position 0 inside the first sheet const changes = hfInstance.addColumns(0, [0, 2]); ``` ### Removing columns You can remove one or more columns by using the [`removeColumns`](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#removecolumns) method. The first parameter you need to pass is a sheet ID, and the second parameter represents the position and the size of a block of columns to be removed. This method returns [an array of changed cells](#changes-array). ```javascript // track the changes triggered by removing // two columns at position 0 inside the first sheet const changes = hfInstance.removeColumns(0, [0, 2]); ``` ### Moving columns You can move one or more columns by using the [`moveColumns`](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#movecolumns) method. You need to pass the following parameters: * Sheet ID * Starting column * Number of columns to be moved * [Target column](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#movecolumns) This method returns [an array of changed cells](#changes-array). ```javascript // track the changes triggered by moving // the first column in the first sheet into column 2 const changes = hfInstance.moveColumns(0, 0, 1, 2); ``` ### Reordering columns You can change the order of columns by using the [`setColumnOrder`](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#setcolumnorder) method. You need to pass the following parameters: * Sheet ID * [New column order](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#setcolumnorder) The new column order is a permutation of the form `[ newPositionForColumn0, newPositionForColumn1, newPositionForColumn2, ... ]`. The value at index `i` is the new position for the column that is currently at index `i`. See the [Sorting data](https://hyperformula.handsontable.com/docs/guide/sorting-data.md) guide for details. This method returns [an array of changed cells](#changes-array). ```javascript // move column 0 to position 1, column 1 to position 2, and column 2 to position 0 const changes = hfInstance.setColumnOrder(0, [1, 2, 0]); ``` ## Cells > By default, cells are identified using a [`SimpleCellAddress`](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress) which > consists of a sheet ID, column ID, and row ID, like this: > `{ sheet: 0, col: 0, row: 0 }` > > Alternatively, you can work with the **A1 notation** known from > spreadsheets like Excel or Google Sheets. The API provides the helper > function [`simpleCellAddressFromString`](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#simplecelladdressfromstring) which you can use to retrieve > the [`SimpleCellAddress`](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress) . ### Moving cells You can move one or more cells using the [`moveCells`](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#movecells) method. You need to pass the following parameters: * Source range ([SimpleCellRange](https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange)) * Top left corner of the destination range ([SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress)) This method returns [an array of changed cells](#changes-array). ```javascript // choose the source cells const source = { sheet: 0, col: 1, row: 0 }; // choose the target cells const destination = { sheet: 0, col: 3, row: 0 }; // track the changes triggered by moving // one cell from source to target location const changes = hfInstance.moveCells({ start: source, end: source }, destination); ``` ### Updating cells You can set the content of a block of cells by using the [`setCellContents`](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#setcellcontents) method. You need to pass the top left corner address of a block as a [`SimpleCellAddress`](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress), along with the content to be set. It can be content for either a single cell or a set of cells in an array. This method returns [an array of changed cells](#changes-array). ```javascript // track the changes triggered by setting // a block of cells with content '=B1' const changes = hfInstance.setCellContents({ col: 3, row: 0, sheet: 0 }, [['=B1']]); ``` ### Getting cell value You can get the value of a cell by using [`getCellValue`](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#getcellvalue) . Remember to pass the coordinates as a [`SimpleCellAddress`](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress) . ```javascript // get the value of the B1 cell const B1Value = hfInstance.getCellValue({ sheet: 0, col: 1, row: 0 }); ``` ### Getting cell formula You can retrieve the formula from a cell by using [`getCellFormula`](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#getcellformula). Remember to pass the coordinates as a [`SimpleCellAddress`](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress) . ```javascript // get the formula from the A1 cell const A1Formula = hfInstance.getCellFormula({ sheet: 0, col: 0, row: 0 }); ``` ## Handling an error Each time you call a method, HyperFormula will perform the corresponding operation. If there is an issue, it will throw an error. Methods available in the HyperFormula's API might throw different errors, but all of them follow the same pattern. Thus, the errors can be handled in a similar manner. For example, imagine you let users rename their sheets in an application but by mistake they choose a sheet ID that does not exist. It would be nice to display the error to the user, so they are aware of this fact. ```javascript // variable used to carry the message for the user let messageUsedInUI; // attempt to rename a sheet try { hfInstance.renameSheet(5, "Payroll"); // whoops! there is no sheet with an ID of 5 } catch (e) { // notify the user that a sheet with an ID of 5 does not exist if (e instanceof NoSheetWithIdError) { messageUsedInUI = "Sheet with provided ID does not exist"; } // a generic error message, just in case else { messageUsedInUI = "Something went wrong"; } } ``` ## isItPossibleTo* methods There are also methods that you may find useful to call in pair with the above-mentioned operations. These methods are prefixed with `isItPossibleTo*` whose sole purpose is to check if the desired operation is possible. They all return a simple `boolean` value. You will find it handy when you want to give the user a more generic message and you don't want to react to specific errors. This can be particularly useful for interaction with the UI of the application you work on. For example, you can allow the user to add new sheets by typing a new sheet name inside an input field. You can easily check if that action is allowed, and if it is not, throw an error. ```javascript // an instance with some example data const hfInstance = HyperFormula.buildFromArray([ ['1', '2'], ]); // a variable used to carry the message for the user let messageUsedInUI; // use this method to check the possibility to remove columns const isRemovable = hfInstance.isItPossibleToRemoveColumns(0, [1, 1]); // check if there is a possibility to remove columns if (!isRemovable) { messageUsedInUI = 'Sorry, you cannot perform a remove action' } ``` ## Changes array All data modification methods return an array of [`ExportedChange`](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange). This is a collection of cells whose **values** were affected by an operation, together with their absolute addresses and new values. ```javascript [{ address: { sheet: 0, col: 0, row: 0 }, newValue: { error: [CellError], value: '#REF!' }, }] ``` This gives you information about where the change happened, what the new value of a cell is, and even what type it is - in this case, an error. The array of changes includes only cells that have different **values** after performing the operation. See the example: ```js const hf = HyperFormula.buildFromArray([ [0], [1], ['=SUM(A1:A2)'], ['=COUNTBLANK(A1:A3)'], ]); // insert an empty row between the row 0 and the row 1 const changes = hf.addRows(0, [1, 1]); console.log(hf.getSheetSerialized(0)); // sheet after adding the row: // [ // [0], // [], // [1], // ['=SUM(A1:A3)'], // ['=COUNTBLANK(A1:A4)'], // ] console.log(changes); // changes include only the COUNTBLANK cell: // [{ // address: { sheet: 0, row: 4, col: 0 }, // newValue: 1, // }] ``` ## Demo This demo presents several basic operations integrated with a sample UI. --- ## Building URL: https://hyperformula.handsontable.com/docs/guide/building # Building The build process uses Webpack and Babel, as well as npm tasks listed in package.json. During this process, the source located in the `src/*` directory is transformed into the output files. The library is developed in TypeScript and the exact configuration options can be found in `tsconfig.json`. To run the commands you need to set up your environment to have `npm` or `yarn` properly installed. After that, navigate to the project and run `npm install`. ## Output formats The build produces the following output formats, all declared as entry points in `package.json`: * `commonjs/` - CommonJS modules (main entry, used by Node.js and bundlers) * `es/` - ES modules (`.mjs` files, used by tree-shaking bundlers) * `dist/` - UMD bundles for direct use in the browser * `typings/` - TypeScript declaration files (`.d.ts`) **For UMD versions which reside in CDN:** * `./dist/hyperformula.js` - a full version which does not have dependencies, they need to be added manually * `./dist/hyperformula.min.js` - a minified version which does not have dependencies, they need to be added manually * `./dist/hyperformula.full.js` - a full version with dependencies * `./dist/hyperformula.full.min.js` - a minified version with dependencies ## Build the project To build the project you can use the following commands: * `npm run bundle-all` - generates development and production builds, verifies the version * `npm run bundle:es` - transpiles files into the `import/export` format , builds ES6 version * `npm run bundle:cjs` - builds CommonJS version * `npm run bundle:development` - generates development build * `npm run bundle:production` - generates production build * `npm run bundle:languages` - builds the languages * `npm run bundle:typings` - generates TypeScript typing, only emits ‘.d.ts’ declaration files We use the Node 22 LTS in the build-chain and recommend this version for building. Note that for using (not building) HyperFormula, a wider range of Node versions is supported. ## Verify the build By using the following commands you can verify the build: * `verify-bundles` - runs all verify commands * `verify:umd` - verifies UMD version * `verify:umd:min` - verifies UMD minified version without dependencies * `verify:umd:full` - verifies UMD version with dependencies * `verify:umd:full.min` - verifies minified UMD version with dependencies * `verify:cjs` - verifies CommonJS version with dependencies * `verify:publish-package` - checks if npm built the package correctly * `verify:typings` - verifies TypeScript typings ## Build the documentation Most likely, you will want to document the code. You can use the following commands to generate the documentation: * `npm run docs:build` - builds the docs * `npm run docs:dev` - serves the development version of the docs locally ## Run the tests > HyperFormula main test suite is maintained outside of this repository. You can find more information [here](https://github.com/handsontable/hyperformula/blob/master/test/README.md). The tests are done with Jest and Karma. The same test suite should pass in both of them because the library might be used [server-side](https://hyperformula.handsontable.com/docs/guide/server-side-installation) or in a browser, so you have to be sure that both environments are fine. * `npm run test` - runs the linter and all tests * `npm run test:jest` - runs unit tests * To run a test suite that matches a word, add a Jest `-t` flag. For example: `npm run test:jest -- -t 'SUMIF'` runs only the tests that match the word `SUMIF` within `describe()` or `it()`. * To run a specific test suite, pass the file name. For example: `npm run test:jest 'function-sumif.spec.ts'` runs only the unit tests from the file `function-sumif.spec.ts`. * `npm run test:browser` - runs tests in **karma** once and closes all open browsers * To run a specific `spec` file or a test suite you can add a Karma `--spec` flag. For example: `npm run test:browser.debug -- --spec=matrix.spec.ts` runs `matrix.spec.ts` browser tests only * `npm run test:browser.debug` - runs test in **karma** only in Chrome until you exit the process. It watches changes in `src` and `test` directories and rebuilds them automatically. ## Run the linter You can use the following commands to lint the code, so it meets the required standards. ESLint is used as the tool of choice in this case. * `npm run lint` - lints the code * `npm run lint:fix` - automatically fixes lint problems --- ## Cell references URL: https://hyperformula.handsontable.com/docs/guide/cell-references # Cell references A formula can reference one or more cells and automatically update its contents whenever any of the referenced cells change. The values from other cells can be obtained using A1 notation which is a flexible way of pointing at different sources of data for the formulas. The table below summarizes the most popular methods of referencing different cells in the workbook.
Type Current sheet Different sheet
Relative =A1 =Sheet2!A1
Absolute =$A$1 =Sheet2!$A$1
Mixed =$A1 =Sheet2!$A1
Circular (example)

A1=B1

whereas

B1=A1

Sheet1!A1=Sheet2!A1

whereas

Sheet2!A1=Sheet1!A1

Range =A1:B2 =Sheet2!A1:B2
### Referencing named expressions You can reference [named expressions](https://hyperformula.handsontable.com/docs/guide/named-expressions.md) by their assigned names. For example, if you name the expression `=SUM(100+10)` as `MySum`, you can then reference that expression by `MySum`. A named expression works within a scope. You define the scope when creating a named expression: ```javascript // define for a local scope // sheet ID passed (1) hfInstance.addNamedExpression('MyLocal', '=Sheet2!$A$1+100', 1); // define for the global scope // sheet ID not passed hfInstance.addNamedExpression('MyGlobal', '=SUM(100+10)'); ``` Now, you can reference `MyLocal` in the `1` sheet, and `MyGlobal` in any sheet. HyperFormula is more limited than typical spreadsheet software when it comes to referencing named ranges. For more information about how HyperFormula handles named ranges, see [this section](https://hyperformula.handsontable.com/docs/guide/named-expressions.md). ## Relative references Relative and absolute references play a huge role in [copy and paste](https://hyperformula.handsontable.com/docs/guide/clipboard-operations.md), autofill, and CRUD operations like moving cells or columns. By default, all references are relative which means that when you copy them to other cells, the references are updated based on the new coordinates. There are two main exceptions though: the move operation and named expressions, both of which use absolute references. HyperFormula provides `copy` , `cut` and `paste` methods that allow for handling clipboard operations. **Cut and paste** behaves a bit differently. If '=A1' is copied from cell B1 into B2 it will stay after being placed into B2. **Copy and paste** will behave a bit different in a relative mean - if '=A1' will be copied from B1 into B2 cell it will be '=A2'.
Formula in A1 Action Result in A2
=B1+1

Copy A1

Paste to A2

=B2+1
This example shows the change after the move operation was done: ```javascript // build with a simple dataset const hfInstance = HyperFormula.buildFromArray([ ['=B2', '=A1', ''], ]); // these are the coordinates for a move operation const source = { sheet: 0, col: 1, row: 0 }; const destination = { sheet: 0, col: 2, row: 0 }; // move B1 const changes = hfInstance.moveCells({ start: source, end: source }, destination); // you can see the changes inside the console console.log(changes); ``` ## Absolute references A reference to a column (a letter) or a row (a number) may be preceded with a dollar sign `$` to remain intact when the cell is copied between different places.
Formula in A1 Action Result in A2 and A3
=$B$1+1

Copy A1

Paste to A2

Paste to A3

=$B$1+1
## Range references In HyperFormula, a range is a reference to a group of at least two adjacent cells. ### Range definition Range `:` is a reference to the smallest rectangular group of adjacent cells that includes: - The cell at `` - The cell at `` ### Range types HyperFormula features the following types of ranges: | Range type | Description | Example | |--------------|-------------------------------------|-----------------------------------------------| | Cell range | Has the shape of a finite rectangle | =A1:B2
or =A2:B1
or =B1:A2
or =B2:A1 | | Column range | Contains entire columns | =A:B
or =B:A | | Row range | Contains entire rows | =1:2
or =2:1 | ### Referencing ranges You can reference ranges: - Through a relative reference, e.g., `=A1:B2` - Through an absolute reference, e.g., `=A$1:$B$2` - Through a reference with an explicit sheet address, e.g., `=Sheet5!A1:B2` ### Range restraints The following restraints apply: - You can't mix two different types of range references together (=A1:B). - Range expressions can't contain [named expressions](https://hyperformula.handsontable.com/docs/guide/named-expressions.md). - At the moment, HyperFormula doesn't support multi-cell range references (=A1:B2:C3). > In contrast to Google Sheets or Microsoft Excel, HyperFormula doesn't treat single cells as ranges. Instead, it immediately instantiates references to single cells as their values. Applying a scalar value to a function that takes ranges throws the [`CellRangeExpected`](https://hyperformula.handsontable.com/docs/api/classes/errormessage.md#cellrangeexpected) error. ### More about ranges - [Ranges in the dependency graph](https://hyperformula.handsontable.com/docs/guide/dependency-graph.md#ranges-in-the-dependency-graph) - [Types of operators: Reference operators](https://hyperformula.handsontable.com/docs/guide/types-of-operators.md#reference-operators) - [API reference: Ranges](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#ranges) ## Sheet names in references When referencing cells or ranges from different sheets, you can specify the sheet name using the following syntax: ``` =SheetName!CellReference ``` If a sheet name contains any character other than `[A-Za-z\u00C0-\u02AF0-9_]`, it must be enclosed in single quotes. E.g.: ```javascript =Data2023!A1 =Sheet_1!B2 =ÄöüSheet!C3 ='My Sheet'!A1 ='Sales-2023'!B2 ='Data (Q1)'!C3 ='Sheet #1'!D4 ``` ## Circular references Since HyperFormula does not embed any UI, it allows for the input of a circular reference into a cell. Compared to popular spreadsheets, HyperFormula does not force any specific interaction with the user (i.e., displaying a warning ) when circular reference happens. When circular reference happens, HyperFormula returns #CYCLE as the value of the cell where the circular reference occurred. After some CRUD operation is performed, the error might disappear when it is no longer a cyclic dependency. No matter the outcome, other cells are calculated normally and the dependency graph is updated. It is **non-blocking**. ## The #REF! error By deleting the cell that is referenced in a formula you make the entire formula no longer valid. As a result, you will get the #REF! error which indicates that there is an invalid address used in a cell. Consider the following example: | Formula in C1 | Action | Result in B1 | |:--------------|:----------------|:-------------| | =A1+B1+20 | Delete column A | #REF! | The #REF! error may also occur in other specific situations: * When you copy and paste formulas containing relative references, or example:
Formula in B1 Action Result in A1
=A1+1

Cut from B1

Paste to A1

#REF!
* When the VLOOKUP is told to look up values in a column whose index is out of the scope. * When the INDEX function is told to return values from rows or columns that are out of the scope. --- ## Clipboard operations URL: https://hyperformula.handsontable.com/docs/guide/clipboard-operations # Clipboard operations Through a set of dedicated methods, HyperFormula supports clipboard operations, such as copying, cutting, and pasting. This lets you integrate the functionality of interacting with the clipboard. The copied or cut data is stored as a memory reference, not directly in the system clipboard. ## Copy To copy the contents of a cell or range, use the [`copy()`](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#copy) method. Pass arguments of type [`SimpleCellRange`](https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange). ```javascript const hfInstance = HyperFormula.buildFromArray([ ['1', '2'], ]); // copy [ [ 2 ] ] const clipboardContent = hfInstance.copy({ start: { sheet: 0, col: 1, row: 0 }, end: { sheet: 0, col: 1, row: 0 }, }); ``` ## Cut To cut the contents of a cell or range, use the [`cut()`](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#cut) method. Pass arguments of type [`SimpleCellRange`](https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange). > Any CRUD operation called after the [`cut()`](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#cut) method aborts the cut operation. ```javascript const hfInstance = HyperFormula.buildFromArray([ ['1', '2'], ]); // returns the values that were cut: [ [ 1 ] ] const clipboardContent = hfInstance.cut({ start: { sheet: 0, col: 0, row: 0 }, end: { sheet: 0, col: 0, row: 0 }, }); ``` ## Paste To paste the contents of a cell or range, use the [`paste()`](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#paste) method. [`paste()`](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#paste) requires only one parameter: the top left corner of the target range. ```javascript const hfInstance = HyperFormula.buildFromArray([ ['1', '2'], ]); // [ [ 2 ] ] was copied const clipboardContent = hfInstance.copy({ start: { sheet: 0, col: 1, row: 0 }, end: { sheet: 0, col: 1, row: 0 }, }); // returns a list of modified cells: their absolute addresses and new values const changes = hfInstance.paste({ sheet: 0, col: 1, row: 0 }); ``` If the clipboard is empty, the [`paste()`](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#paste) method doesn't do anything. ### Copy and paste When called after [`copy()`](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#copy), the [`paste()`](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#paste) method: - Pastes the copied data into the target range. - Triggers a recalculation of all affected formulas. > If a formula `=A1` is copied from cell B1 into B2, the B2 formula becomes `=A2`. ### Cut and paste When called after [`cut()`](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#cut), the [`paste()`](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#paste) method: - Moves the cut data into the target range, by calling the [`moveCells()`](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#movecells) method. - Removes the cut data from the source range. - Triggers a recalculation of all affected formulas. > If a formula `=A1` is cut from cell B1 into B2, the B2 formula becomes `=A1`. #### Pasting named expressions If a copied or cut formula contains a [named expression](https://hyperformula.handsontable.com/docs/guide/named-expressions.md) defined for a local scope, and the formula is pasted to a sheet that is out of scope for that expression, the expression's scope changes to global. If the copied or cut named expression's scope is the same as the target's, the expression's local scope remains the same. ## Clear the clipboard To clear the clipboard, use the [`clearClipboard()`](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#clearclipboard) method. To check if the clipboard holds any data, use the [`isClipboardEmpty()`](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#isclipboardempty) method. ## Data storage The copied or cut data is stored as a memory reference, not directly in the system clipboard. Depending on what was cut, the data is stored as: * An array of arrays * A number * A string * A boolean * An empty value --- ## Client-side installation URL: https://hyperformula.handsontable.com/docs/guide/client-side-installation # Client-side installation ### Install with npm or Yarn You can install the latest version of HyperFormula with popular packaging managers. Navigate to your project folder and run the following command: **npm:** ```bash $ npm install hyperformula ``` **Yarn:** ```bash $ yarn add hyperformula ``` The package will be added to your `package.json` file and installed to the `./node_modules` directory. Then you can import it into your file like this: ```javascript import { HyperFormula } from 'hyperformula'; // your code ``` ## Use CDN Alternatively, you can load HyperFormula from [jsDelivr](https://www.jsdelivr.com/) and embed the URL directly in the ` ``` Or you may load just a minimal build and add the dependencies on your own: ```html ``` A useful option when you already use some of them and there is no need to duplicate the dependencies. You can read more about the dependencies of HyperFormula on a dedicated [Dependencies](https://hyperformula.handsontable.com/docs/guide/dependencies.md) page. ## Clone from GitHub If you choose to clone the project or download it from GitHub you will need to build it prior to usage. Check the [building section](https://hyperformula.handsontable.com/docs/guide/building.md) for a full list of commands and their descriptions. ### Clone with HTTPS ```bash git clone https://github.com/handsontable/hyperformula.git ``` ### Clone with SSH ```bash git clone git@github.com:handsontable/hyperformula.git ``` ## Download from GitHub You can download all resources as a ZIP archive directly from the [GitHub repository](https://github.com/handsontable/hyperformula). Then, you can use one of the above-mentioned methods to install the library. --- ## Code of conduct URL: https://hyperformula.handsontable.com/docs/guide/code-of-conduct # Code of conduct ## Our Pledge We as members, contributors, and leaders pledge to make participation in our community a harassment-free experience for everyone, regardless of age, body size, visible or invisible disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, religion, or sexual identity and orientation. We pledge to act and interact in ways that contribute to an open, welcoming, diverse, inclusive, and healthy community. ## Our Standards Examples of behavior that contributes to a positive environment for our community include: * Demonstrating empathy and kindness toward other people * Being respectful of differing opinions, viewpoints, and experiences * Giving and gracefully accepting constructive feedback * Accepting responsibility and apologizing to those affected by our mistakes, and learning from the experience * Focusing on what is best not just for us as individuals, but for the overall community **Examples of unacceptable behavior include:** * The use of sexualized language or imagery, and sexual attention or advances of any kind * Trolling, insulting or derogatory comments, and personal or political attacks * Public or private harassment * Publishing others’ private information, such as a physical or email address, without their explicit permission * Other conduct which could reasonably be considered inappropriate in a professional setting ## Enforcement Responsibilities Community leaders are responsible for clarifying and enforcing our standards of acceptable behavior and will take appropriate and fair corrective action in response to any behavior that they deem inappropriate, threatening, offensive, or harmful. Community leaders have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, and will communicate reasons for moderation decisions when appropriate. ## Scope This Code of Conduct applies within all community spaces and also applies when an individual is officially representing the community in public spaces. Examples of representing our community include using an official e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. ## Enforcement Instances of abusive, harassing, or otherwise, unacceptable behavior may be reported to the community leaders responsible for enforcement at office [at] handsontable.com. All complaints will be reviewed and investigated promptly and fairly. All community leaders are obligated to respect the privacy and security of the reporter of any incident. ## Enforcement Guidelines Community leaders will follow these Community Impact Guidelines in determining the consequences for any action they deem in violation of this Code of Conduct: ### 1. Correction Community Impact: Use of inappropriate language or other behavior deemed unprofessional or unwelcome in the community. Consequence: A private, written warning from community leaders, providing clarity around the nature of the violation and an explanation of why the behavior was inappropriate. A public apology may be requested. ### 2. Warning Community Impact: A violation through a single incident or series of actions. Consequence: A warning with consequences for continued behavior. No interaction with the people involved, including unsolicited interaction with those enforcing the Code of Conduct, for a specified period of time. This includes avoiding interactions in community spaces as well as external channels like social media. Violating these terms may lead to a temporary or permanent ban. ### 3. Temporary Ban Community Impact: A serious violation of community standards, including sustained inappropriate behavior. Consequence: A temporary ban from any sort of interaction or public communication with the community for a specified period of time. No public or private interaction with the people involved, including unsolicited interaction with those enforcing the Code of Conduct, is allowed during this period. Violating these terms may lead to a permanent ban. ### 4. Permanent Ban Community Impact: Demonstrating a pattern of violation of community standards, including sustained inappropriate behavior, harassment of an individual, or aggression toward or disparagement of classes of individuals. Consequence: A permanent ban from any sort of public interaction within the project community. ## Attribution This Code of Conduct is adapted from the [Contributor Covenant](https://www.contributor-covenant.org/), version 2.0, available at [https://www.contributor-covenant.org/version/2/0/code_of_conduct.html](https://www.contributor-covenant.org/version/2/0/code_of_conduct). --- ## Built-in functions URL: https://hyperformula.handsontable.com/docs/guide/built-in-functions # Built-in functions
## Overview HyperFormula comes with an extensive library of pre-built functions. You can use them to create complex formulas for any business application. Formula syntax and logic of function are similar to what is considered the standard in modern spreadsheet software. That is because a spreadsheet is probably the most universal software ever created. We wanted the same flexibility for HyperFormula but without the constraints of the spreadsheet UI. Each of HyperFormula's built-in function names is available in [17 languages](https://hyperformula.handsontable.com/docs/guide/localizing-functions.md#list-of-supported-languages) and [custom language packs](https://hyperformula.handsontable.com/docs/guide/localizing-functions.md) can be added. The latest version of HyperFormula has an extensive collection of **424** functions grouped into categories: - [Array manipulation](#array-manipulation) - [Database](#database) - [Date and time](#date-and-time) - [Engineering](#engineering) - [Financial](#financial) - [Information](#information) - [Logical](#logical) - [Lookup and reference](#lookup-and-reference) - [Math and trigonometry](#math-and-trigonometry) - [Matrix functions](#matrix-functions) - [Operator](#operator) - [Statistical](#statistical) - [Text](#text) _Some categories such as compatibility and cube are yet to be supported._ > You can modify the built-in functions or create your own, by adding a [custom function](https://hyperformula.handsontable.com/docs/guide/custom-functions.md). ## List of available functions Total number of functions: **424** ### Array manipulation | Function ID | Description | Syntax | |:---|:---|:---| | ARRAY_CONSTRAIN | Truncates an array to given dimensions. | ARRAY_CONSTRAIN(array, height, width) | | ARRAYFORMULA | Enables the array arithmetic mode for a single formula. | ARRAYFORMULA(formula) | ### Database | Function ID | Description | Syntax | |:---|:---|:---| | DAVERAGE | Returns the average of all values in a database field that match the given criteria. | DAVERAGE(database, field, criteria) | | DCOUNT | Counts the cells containing numbers in a database field that match the given criteria. | DCOUNT(database, field, criteria) | | DCOUNTA | Counts the non-empty cells in a database field that match the given criteria. | DCOUNTA(database, field, criteria) | | DGET | Returns the single value from a database field that matches the given criteria. Returns #VALUE! if no records match, and #NUM! if more than one record matches. | DGET(database, field, criteria) | | DMAX | Returns the maximum value in a database field that matches the given criteria. | DMAX(database, field, criteria) | | DMIN | Returns the minimum value in a database field that matches the given criteria. | DMIN(database, field, criteria) | | DPRODUCT | Returns the product of all values in a database field that match the given criteria. | DPRODUCT(database, field, criteria) | | DSTDEV | Returns the sample standard deviation of all values in a database field that match the given criteria. | DSTDEV(database, field, criteria) | | DSTDEVP | Returns the population standard deviation of all values in a database field that match the given criteria. | DSTDEVP(database, field, criteria) | | DSUM | Returns the sum of all values in a database field that match the given criteria. | DSUM(database, field, criteria) | | DVAR | Returns the sample variance of all values in a database field that match the given criteria. | DVAR(database, field, criteria) | | DVARP | Returns the population variance of all values in a database field that match the given criteria. | DVARP(database, field, criteria) | ### Date and time | Function ID | Description | Syntax | |:---|:---|:---| | DATE | Returns the specified date as the number of full days since [`nullDate`](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.html#nulldate). | DATE(year, month, day) | | DATEDIF | Calculates distance between two dates.
Supported units: "D" (days), "M" (months), "Y" (years), "MD" (days ignoring months and years), "YM" (months ignoring years), or "YD" (days ignoring years). | DATEDIF(start_date, end_date, unit) | | DATEVALUE | Parses date_string and returns it as the number of full days since [`nullDate`](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.html#nulldate).
Accepts formats set by the [`dateFormats`](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.html#dateformats) option. | DATEVALUE(date_string) | | DAY | Returns the day of the given date value. | DAY(number) | | DAYS | Calculates the difference between two date values. | DAYS(end_date, start_date) | | DAYS360 | Calculates the difference between two date values in days, in 360-day basis. | DAYS360(start_date, end_date, [format]) | | EDATE | Shifts start_date by the given number of months and returns it as the number of full days since [`nullDate`](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.html#nulldate).
The return value complies with the OpenDocument standard, but the return type does not; see the [compatibility notes](https://hyperformula.handsontable.com/docs/guide/list-of-differences.html). | EDATE(start_date, months) | | EOMONTH | Returns the date of the last day of the month that falls the given number of months away from start_date. Returns the value in the form of number of full days since [`nullDate`](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.html#nulldate).
The return value complies with the OpenDocument standard, but the return type does not; see the [compatibility notes](https://hyperformula.handsontable.com/docs/guide/list-of-differences.html). | EOMONTH(start_date, months) | | HOUR | Returns hour component of given time. | HOUR(time) | | INTERVAL | Returns interval string from given number of seconds. | INTERVAL(seconds) | | ISOWEEKNUM | Returns an ISO week number that corresponds to the week of year. | ISOWEEKNUM(date) | | MINUTE | Returns minute component of given time. | MINUTE(time) | | MONTH | Returns the month for the given date value. | MONTH(number) | | NETWORKDAYS | Returns the number of working days between two given dates. | NETWORKDAYS(date1, date2, [holidays]) | | NETWORKDAYS.INTL | Returns the number of working days between two given dates, with a configurable set of weekend days. | NETWORKDAYS.INTL(date1, date2, [mode], [holidays]) | | NOW | Returns current date + time as a number of days since [`nullDate`](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.html#nulldate). | NOW() | | SECOND | Returns second component of given time. | SECOND(time) | | TIME | Returns the number that represents a given time as a fraction of full day. | TIME(hour, minute, second) | | TIMEVALUE | Parses time_string and returns a number that represents it as a fraction of a full day.
Accepts formats set by the [`timeFormats`](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.html#timeformats) option. | TIMEVALUE(time_string) | | TODAY | Returns an integer representing the current date as the number of full days since [`nullDate`](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.html#nulldate). | TODAY() | | WEEKDAY | Computes a number between 1-7 representing the day of week. | WEEKDAY(date, [type]) | | WEEKNUM | Returns a week number that corresponds to the week of year. | WEEKNUM(date, [type]) | | WORKDAY | Returns the date a given number of working days after the start date, skipping Saturdays and Sundays. | WORKDAY(date, shift, [holidays]) | | WORKDAY.INTL | Returns the date a given number of working days after the start date, with a configurable set of weekend days. | WORKDAY.INTL(date, shift, [mode], [holidays]) | | YEAR | Returns the year as a number according to the internal calculation rules. | YEAR(number) | | YEARFRAC | Computes the difference between two date values, in fraction of years. | YEARFRAC(start_date, end_date, [format]) | ### Engineering | Function ID | Description | Syntax | |:---|:---|:---| | BESSELI | Returns the value of the modified Bessel function of the first kind, In(x). | BESSELI(x, n) | | BESSELJ | Returns the value of the Bessel function of the first kind, Jn(x). | BESSELJ(x, n) | | BESSELK | Returns the value of the modified Bessel function of the second kind, Kn(x). | BESSELK(x, n) | | BESSELY | Returns the value of the Bessel function of the second kind, Yn(x). | BESSELY(x, n) | | BIN2DEC | The result is the decimal number for the binary number entered. | BIN2DEC(number) | | BIN2HEX | The result is the hexadecimal number for the binary number entered. | BIN2HEX(number, [places]) | | BIN2OCT | The result is the octal number for the binary number entered. | BIN2OCT(number, [places]) | | BITAND | Returns a bitwise logical "and" of the parameters. | BITAND(number1, number2) | | BITLSHIFT | Shifts a number left by n bits. | BITLSHIFT(number, shift) | | BITOR | Returns a bitwise logical "or" of the parameters. | BITOR(number1, number2) | | BITRSHIFT | Shifts a number right by n bits. | BITRSHIFT(number, shift) | | BITXOR | Returns a bitwise logical "exclusive or" of the parameters. | BITXOR(number1, number2) | | COMPLEX | Returns a complex number built from its real and imaginary parts. | COMPLEX(re, im, [symbol]) | | DEC2BIN | Returns the binary number for the decimal number entered between –512 and 511. | DEC2BIN(number, [places]) | | DEC2HEX | Returns the hexadecimal number for the decimal number entered. | DEC2HEX(number, [places]) | | DEC2OCT | Returns the octal number for the decimal number entered. | DEC2OCT(number, [places]) | | DELTA | Returns TRUE (1) if both numbers are equal, otherwise returns FALSE (0). | DELTA(number1, [number2]) | | ERF | Returns values of the Gaussian error integral. | ERF(lower_limit, [upper_limit]) | | ERFC | Returns complementary values of the Gaussian error integral between x and infinity. | ERFC(lower_limit) | | HEX2BIN | The result is the binary number for the hexadecimal number entered. | HEX2BIN(number, [places]) | | HEX2DEC | The result is the decimal number for the hexadecimal number entered. | HEX2DEC(number) | | HEX2OCT | The result is the octal number for the hexadecimal number entered. | HEX2OCT(number, [places]) | | IMABS | Returns modulus of a complex number. | IMABS(complex) | | IMAGINARY | Returns imaginary part of a complex number. | IMAGINARY(complex) | | IMARGUMENT | Returns argument of a complex number. | IMARGUMENT(complex) | | IMCONJUGATE | Returns conjugate of a complex number. | IMCONJUGATE(complex) | | IMCOS | Returns cosine of a complex number. | IMCOS(complex) | | IMCOSH | Returns hyperbolic cosine of a complex number. | IMCOSH(complex) | | IMCOT | Returns cotangent of a complex number. | IMCOT(complex) | | IMCSC | Returns cosecant of a complex number. | IMCSC(complex) | | IMCSCH | Returns hyperbolic cosecant of a complex number. | IMCSCH(complex) | | IMDIV | Divides two complex numbers. | IMDIV(complex1, complex2) | | IMEXP | Returns exponent of a complex number. | IMEXP(complex) | | IMLN | Returns natural logarithm of a complex number. | IMLN(complex) | | IMLOG10 | Returns base-10 logarithm of a complex number. | IMLOG10(complex) | | IMLOG2 | Returns binary logarithm of a complex number. | IMLOG2(complex) | | IMPOWER | Returns a complex number raised to a given power. | IMPOWER(complex, number) | | IMPRODUCT | Multiplies complex numbers. | IMPRODUCT(complex1, ...) | | IMREAL | Returns real part of a complex number. | IMREAL(complex) | | IMSEC | Returns the secant of a complex number. | IMSEC(complex) | | IMSECH | Returns the hyperbolic secant of a complex number. | IMSECH(complex) | | IMSIN | Returns sine of a complex number. | IMSIN(complex) | | IMSINH | Returns hyperbolic sine of a complex number. | IMSINH(complex) | | IMSQRT | Returns a square root of a complex number. | IMSQRT(complex) | | IMSUB | Subtracts two complex numbers. | IMSUB(complex1, complex2) | | IMSUM | Adds complex numbers. | IMSUM(complex1, ...) | | IMTAN | Returns the tangent of a complex number. | IMTAN(complex) | | OCT2BIN | The result is the binary number for the octal number entered. | OCT2BIN(number, [places]) | | OCT2DEC | The result is the decimal number for the octal number entered. | OCT2DEC(number) | | OCT2HEX | The result is the hexadecimal number for the octal number entered. | OCT2HEX(number, [places]) | ### Financial | Function ID | Description | Syntax | |:---|:---|:---| | CUMIPMT | Returns the cumulative interest paid on a loan between a start period and an end period. | CUMIPMT(rate, nper, pv, start, end, type) | | CUMPRINC | Returns the cumulative principal paid on a loan between a start period and an end period. | CUMPRINC(rate, nper, pv, start, end, type) | | DB | Returns the depreciation of an asset for a period using the fixed-declining balance method. | DB(cost, salvage, life, period, [month]) | | DDB | Returns the depreciation of an asset for a period using the double-declining balance method. | DDB(cost, salvage, life, period, [factor]) | | DOLLARDE | Converts a price entered with a special notation to a price displayed as a decimal number. | DOLLARDE(price, fraction) | | DOLLARFR | Converts a price displayed as a decimal number to a price entered with a special notation. | DOLLARFR(price, fraction) | | EFFECT | Calculates the effective annual interest rate from a nominal interest rate and the number of compounding periods per year. | EFFECT(nominal_rate, npery) | | FV | Returns the future value of an investment. | FV(rate, nper, pmt, [pv], [type]) | | FVSCHEDULE | Returns the future value of an investment based on a rate schedule. | FVSCHEDULE(pv, schedule) | | IPMT | Returns the interest portion of a given loan payment in a given payment period. | IPMT(rate, per, nper, pv, [fv], [type]) | | IRR | Returns the internal rate of return for a series of cash flows. | IRR(values, [guess]) | | ISPMT | Returns the interest paid for a given period of an investment with equal principal payments. | ISPMT(rate, per, nper, value) | | MIRR | Returns the modified internal rate of return for a series of cash flows. | MIRR(flows, f_rate, r_rate) | | NOMINAL | Returns the nominal interest rate. | NOMINAL(effect_rate, npery) | | NPER | Returns the number of periods for an investment assuming periodic, constant payments and a constant interest rate. | NPER(rate, pmt, pv, [fv], [type]) | | NPV | Returns net present value. | NPV(rate, value1, ...) | | PDURATION | Returns number of periods to reach specific value. | PDURATION(rate, pv, fv) | | PMT | Returns the periodic payment for a loan. | PMT(rate, nper, pv, [fv], [type]) | | PPMT | Calculates the principal portion of a given loan payment. | PPMT(rate, per, nper, pv, [fv], [type]) | | PV | Returns the present value of an investment. | PV(rate, nper, pmt, [fv], [type]) | | RATE | Returns the interest rate per period of an annuity. | RATE(nper, pmt, pv, [fv], [type], [guess]) | | RRI | Returns an equivalent interest rate for the growth of an investment. | RRI(nper, pv, fv) | | SLN | Returns the depreciation of an asset for one period, based on a straight-line method. | SLN(cost, salvage, life) | | SYD | Returns the "sum-of-years" depreciation for an asset in a period. | SYD(cost, salvage, life, period) | | TBILLEQ | Returns the bond-equivalent yield for a Treasury bill. | TBILLEQ(settlement, maturity, discount) | | TBILLPRICE | Returns the price per $100 face value for a Treasury bill. | TBILLPRICE(settlement, maturity, discount) | | TBILLYIELD | Returns the yield for a Treasury bill. | TBILLYIELD(settlement, maturity, price) | | XIRR | Returns the internal rate of return for a schedule of cash flows that is not necessarily periodic. | XIRR(values, dates, [guess]) | | XNPV | Returns the net present value for a schedule of cash flows that is not necessarily periodic. | XNPV(rate, payments, dates) | ### Information | Function ID | Description | Syntax | |:---|:---|:---| | ISBINARY | Returns TRUE if provided value is a valid binary number. | ISBINARY(value) | | ISBLANK | Returns TRUE if the reference to a cell is blank. | ISBLANK(value) | | ISERR | Returns TRUE if the value is error value except #N/A!. | ISERR(value) | | ISERROR | Returns TRUE if the value is general error value. | ISERROR(value) | | ISEVEN | Returns TRUE if the value is an even integer, or FALSE otherwise. A value with a fractional part is neither even nor odd, so it returns FALSE. | ISEVEN(value) | | ISFORMULA | Checks whether referenced cell is a formula. | ISFORMULA(value) | | ISLOGICAL | Tests for a logical value (TRUE or FALSE). | ISLOGICAL(value) | | ISNA | Returns TRUE if the value is #N/A! error. | ISNA(value) | | ISNONTEXT | Tests if the cell contents are text or numbers, and returns FALSE if the contents are text. | ISNONTEXT(value) | | ISNUMBER | Returns TRUE if the value refers to a number. | ISNUMBER(value) | | ISODD | Returns TRUE if the value is an odd integer, or FALSE otherwise. A value with a fractional part is neither odd nor even, so it returns FALSE. | ISODD(value) | | ISREF | Returns TRUE if provided value is #REF! error. | ISREF(value) | | ISTEXT | Returns TRUE if the cell contents reference text. | ISTEXT(value) | | N | Converts a value to a number. | N(value) | | NA | Returns #N/A! error value. | NA() | | SHEET | Returns sheet number of a given value or a formula sheet number if no argument is provided. | SHEET([value]) | | SHEETS | Returns number of sheet of a given reference or number of all sheets in workbook when no argument is provided. | SHEETS([value]) | | VERSION | Returns the HyperFormula version and the license key status as a single text value, e.g. "HyperFormula v3.0.0, 1" (a status code, or the last five characters of the license key). | VERSION() | ### Logical | Function ID | Description | Syntax | |:---|:---|:---| | AND | Returns TRUE if all arguments are TRUE. | AND(logical_value1, ...) | | FALSE | Returns the logical value FALSE. | FALSE() | | IF | Specifies a logical test to be performed. | IF(test, then_value, [otherwise_value]) | | IFERROR | Returns the value if the cell does not contains an error value, or the alternative value if it does. | IFERROR(value, alternate_value) | | IFNA | Returns the value if the cell does not contains the #N/A (value not available) error value, or the alternative value if it does. | IFNA(value, alternate_value) | | IFS | Evaluates multiple logical tests and returns a value that corresponds to the first true condition. | IFS(condition1, value1, [condition2, value2], ...) | | NOT | Complements (inverts) logical_value. | NOT(logical_value) | | OR | Returns TRUE if at least one argument is TRUE. | OR(logical_value1, ...) | | SWITCH | Compares expression against value1, value2, ... in order and returns the paired result1, result2, ...; a candidate value that is an error is skipped rather than matched. | SWITCH(expression, value1, result1, ...) | | TRUE | Returns the logical value TRUE. | TRUE() | | XOR | Returns true if an odd number of arguments evaluates to TRUE. | XOR(logical_value1, ...) | ### Lookup and reference | Function ID | Description | Syntax | |:---|:---|:---| | ADDRESS | Returns a cell reference as a string. | ADDRESS(row, column, [absolute_relative_mode], [use_a1_notation], [sheet]) | | CHOOSE | Uses an index to return a value from a list of values. | CHOOSE(index, value1, ...) | | COLUMN | Returns column number of a given reference or formula reference if argument not provided. | COLUMN([reference]) | | COLUMNS | Returns the number of columns in the given reference. | COLUMNS(array) | | FILTER | Filters an array, based on multiple conditions (boolean arrays). | FILTER(source_array, bool_array1, ...) | | FORMULATEXT | Returns a formula in a given cell as a string. | FORMULATEXT(reference) | | HLOOKUP | Searches horizontally with reference to adjacent cells to the bottom. | HLOOKUP(search_criterion, array, index, [sort_order]) | | HSTACK | Stacks arrays horizontally into a single array. | HSTACK(array1, ...) | | HYPERLINK | Stores the url in the cell's metadata. It can be read using method [`getCellHyperlink`](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.html#getcellhyperlink) | HYPERLINK(url, [link_label]) | | INDEX | Returns the contents of a cell specified by row and column number. The column number is optional and defaults to 1. | INDEX(range, row, [column]) | | MATCH | Returns the relative position of an item in an array that matches a specified value. | MATCH(search_criterion, lookup_array, [match_type]) | | OFFSET | Returns the value of a cell offset by a certain number of rows and columns from a given reference point. | OFFSET(reference, rows, columns, [height], [width]) | | ROW | Returns row number of a given reference or formula reference if argument not provided. | ROW([reference]) | | ROWS | Returns the number of rows in the given reference. | ROWS(array) | | SORT | Sorts the rows or columns of an array. | SORT(array, [sort_index], [sort_order], [by_col]) | | TAKE | Returns specified rows or columns from the beginning or end of an array. | TAKE(array, [rows], [columns]) | | TRANSPOSE | Transposes the rows and columns of an array. | TRANSPOSE(array) | | UNIQUE | Returns the unique rows or columns of an array. | UNIQUE(array, [by_col], [exactly_once]) | | VLOOKUP | Searches vertically with reference to adjacent cells to the right. | VLOOKUP(search_criterion, array, index, [sort_order]) | | VSTACK | Stacks arrays vertically into a single array. | VSTACK(array1, ...) | | XLOOKUP | Searches for a key in a range and returns the item corresponding to the match it finds. If no match exists, then XLOOKUP can return the closest (approximate) match. | XLOOKUP(lookup_value, lookup_array, return_array, [if_not_found], [match_mode], [search_mode]) | ### Math and trigonometry | Function ID | Description | Syntax | |:---|:---|:---| | ABS | Returns the absolute value of a number. | ABS(number) | | ACOS | Returns the inverse trigonometric cosine of a number. | ACOS(number) | | ACOSH | Returns the inverse hyperbolic cosine of a number. | ACOSH(number) | | ACOT | Returns the inverse trigonometric cotangent of a number. | ACOT(number) | | ACOTH | Returns the inverse hyperbolic cotangent of a number. | ACOTH(number) | | ARABIC | Converts number from roman form. | ARABIC(string) | | ASIN | Returns the inverse trigonometric sine of a number. | ASIN(number) | | ASINH | Returns the inverse hyperbolic sine of a number. | ASINH(number) | | ATAN | Returns the inverse trigonometric tangent of a number. | ATAN(number) | | ATAN2 | Returns the inverse trigonometric tangent of the specified x and y coordinates. | ATAN2(number_x, number_y) | | ATANH | Returns the inverse hyperbolic tangent of a number. | ATANH(number) | | BASE | Converts a non-negative integer to a specified base into a text from the numbering system. | BASE(number, radix, [minimum_length]) | | CEILING | Rounds a number up to the nearest multiple of significance, toward positive infinity when significance is positive and toward negative infinity when it is negative. | CEILING(number, significance) | | CEILING.MATH | Rounds a number up to the nearest multiple of significance, ignoring the sign of significance; for a negative number, mode selects whether it rounds toward or away from zero. | CEILING.MATH(number, [significance], [mode]) | | CEILING.PRECISE | Rounds a number up toward positive infinity to the nearest multiple of significance, whatever the sign of significance. | CEILING.PRECISE(number, [significance]) | | COMBIN | Returns number of combinations (without repetitions). | COMBIN(number1, number2) | | COMBINA | Returns number of combinations (with repetitions). | COMBINA(number1, number2) | | COS | Returns the cosine of the given angle (in radians). | COS(number) | | COSH | Returns the hyperbolic cosine of the given value. | COSH(number) | | COT | Returns the cotangent of the given angle (in radians). | COT(number) | | COTH | Returns the hyperbolic cotangent of the given value. | COTH(number) | | CSC | Returns the cosecant of the given angle (in radians). | CSC(number) | | CSCH | Returns the hyperbolic cosecant of the given value. | CSCH(number) | | DECIMAL | Converts text with characters from a number system to a non-negative integer in the base radix given. | DECIMAL(text, radix) | | DEGREES | Converts radians into degrees. | DEGREES(number) | | EVEN | Rounds a positive number up to the next even integer and a negative number down to the next even integer. | EVEN(number) | | EXP | Returns constant e raised to the power of a number. | EXP(number) | | FACT | Returns a factorial of a number. | FACT(number) | | FACTDOUBLE | Returns a double factorial of a number. | FACTDOUBLE(number) | | FLOOR | Rounds a number down to the nearest multiple of significance, toward negative infinity when significance is positive and toward positive infinity when it is negative. | FLOOR(number, significance) | | FLOOR.MATH | Rounds a number down to the nearest multiple of significance, ignoring the sign of significance; for a negative number, mode selects whether it rounds toward or away from zero. | FLOOR.MATH(number, [significance], [mode]) | | FLOOR.PRECISE | Rounds a number down toward negative infinity to the nearest multiple of significance, whatever the sign of significance. | FLOOR.PRECISE(number, [significance]) | | GCD | Computes greatest common divisor of numbers. | GCD(number1, ...) | | INT | Returns the integer part of a number by discarding its fractional part. | INT(number) | | ISO.CEILING | Rounds a number up toward positive infinity to the nearest multiple of significance, whatever the sign of significance. | ISO.CEILING(number, [significance]) | | LCM | Computes least common multiple of numbers. | LCM(number1, ...) | | LN | Returns the natural logarithm based on the constant e of a number. | LN(number) | | LOG | Returns the logarithm of a number to the specified base. | LOG(number, [base]) | | LOG10 | Returns the base-10 logarithm of a number. | LOG10(number) | | MOD | Returns the remainder when one number is divided by another. | MOD(dividend, divisor) | | MROUND | Rounds a number to the nearest multiple. | MROUND(number, base) | | MULTINOMIAL | Returns number of multiset combinations. | MULTINOMIAL(number1, ...) | | ODD | Rounds a positive number up to the nearest odd integer and a negative number down to the nearest odd integer. | ODD(number) | | PI | Returns 3.14159265358979, the value of the mathematical constant PI to 14 decimal places. | PI() | | POWER | Returns a number raised to another number. | POWER(base, exponent) | | PRODUCT | Returns product of numbers. | PRODUCT(number1, ...) | | QUOTIENT | Returns integer part of a division. | QUOTIENT(dividend, divisor) | | RADIANS | Converts degrees to radians. | RADIANS(number) | | RAND | Returns a random number between 0 and 1. | RAND() | | RANDBETWEEN | Returns a random integer between two numbers. | RANDBETWEEN(lower_bound, upper_bound) | | ROMAN | Converts number to roman form. | ROMAN(number, [mode]) | | ROUND | Rounds a number to a certain number of decimal places. | ROUND(number, [count]) | | ROUNDDOWN | Rounds a number down, toward zero, to a certain precision. | ROUNDDOWN(number, [count]) | | ROUNDUP | Rounds a number up, away from zero, to a certain precision. | ROUNDUP(number, [count]) | | SEC | Returns the secant of the given angle (in radians). | SEC(number) | | SECH | Returns the hyperbolic secant of the given value. | SECH(number) | | SEQUENCE | Returns an array of sequential numbers. | SEQUENCE(rows, [cols], [start], [step]) | | SERIESSUM | Evaluates series at a point. | SERIESSUM(x, n, m, coefficients) | | SIGN | Returns sign of a number. | SIGN(number) | | SIN | Returns the sine of the given angle (in radians). | SIN(number) | | SINH | Returns the hyperbolic sine of the given value. | SINH(number) | | SQRT | Returns the positive square root of a number. | SQRT(number) | | SQRTPI | Returns sqrt of number times pi. | SQRTPI(number) | | SUBTOTAL | Computes aggregation using function specified by number. | SUBTOTAL(function, number1, ...) | | SUM | Sums up the values of the specified cells. | SUM(number1, ...) | | SUMIF | Sums up the values of cells that belong to the specified range and meet the specified condition. | SUMIF(range, criteria, [sum_range]) | | SUMIFS | Sums up the values of cells that belong to the specified range and meet the specified sets of conditions. | SUMIFS(sum_range, criteria_range1, criteria1, [criteria_range2, criteria2], ...) | | SUMPRODUCT | Multiplies corresponding elements in the given arrays, and returns the sum of those products. | SUMPRODUCT(array1, ...) | | SUMSQ | Returns the sum of the squares of the arguments. | SUMSQ(number1, ...) | | SUMX2MY2 | Returns the sum of the differences of the squares of paired values, that is the sum of x squared minus y squared over all pairs. | SUMX2MY2(array_x, array_y) | | SUMX2PY2 | Returns the sum of the sums of the squares of paired values, that is the sum of x squared plus y squared over all pairs. | SUMX2PY2(array_x, array_y) | | SUMXMY2 | Returns the sum of the squares of the differences of paired values, that is the sum of x minus y, squared, over all pairs. | SUMXMY2(array_x, array_y) | | TAN | Returns the tangent of the given angle (in radians). | TAN(number) | | TANH | Returns the hyperbolic tangent of the given value. | TANH(number) | | TRUNC | Rounds a number down, toward zero, to a certain precision. | TRUNC(number, [count]) | ### Matrix functions | Function ID | Description | Syntax | |:---|:---|:---| | MAXPOOL | Calculates a smaller range which is a maximum of a window_size, in a given range, for every stride element. | MAXPOOL(range, window_size, [stride]) | | MEDIANPOOL | Calculates a smaller range which is a median of a window_size, in a given range, for every stride element. | MEDIANPOOL(range, window_size, [stride]) | | MMULT | Calculates the array product of two arrays. | MMULT(array1, array2) | ### Operator | Function ID | Description | Syntax | |:---|:---|:---| | HF.ADD | Adds two values. | HF.ADD(number1, number2) | | HF.CONCAT | Concatenates two strings. | HF.CONCAT(string1, string2) | | HF.DIVIDE | Divides two values. | HF.DIVIDE(number1, number2) | | HF.EQ | Tests two values for equality. | HF.EQ(value1, value2) | | HF.GT | Tests two values for greater-than relation. | HF.GT(value1, value2) | | HF.GTE | Tests two values for greater-equal relation. | HF.GTE(value1, value2) | | HF.LT | Tests two values for less-than relation. | HF.LT(value1, value2) | | HF.LTE | Tests two values for less-equal relation. | HF.LTE(value1, value2) | | HF.MINUS | Subtracts two values. | HF.MINUS(number1, number2) | | HF.MULTIPLY | Multiplies two values. | HF.MULTIPLY(number1, number2) | | HF.NE | Tests two values for inequality. | HF.NE(value1, value2) | | HF.POW | Computes power of two values. | HF.POW(number1, number2) | | HF.UMINUS | Negates the value. | HF.UMINUS(number) | | HF.UNARY_PERCENT | Applies percent operator. | HF.UNARY_PERCENT(number) | | HF.UPLUS | Applies unary plus. | HF.UPLUS(number) | ### Statistical | Function ID | Description | Syntax | |:---|:---|:---| | AVEDEV | Returns the average deviation of the arguments. | AVEDEV(number1, ...) | | AVERAGE | Returns the average of the arguments. | AVERAGE(number1, ...) | | AVERAGEA | Returns the average of the arguments, counting text and logical values found in ranges. | AVERAGEA(value1, ...) | | AVERAGEIF | Returns the arithmetic mean of all cells in a range that satisfy a given condition. | AVERAGEIF(range, criteria, [average_range]) | | BETA.DIST | Returns the density of the beta distribution. | BETA.DIST(x, alpha, beta, cumulative, [lower_bound], [upper_bound]) | | BETA.INV | Returns the inverse of the beta distribution value. | BETA.INV(probability, alpha, beta, [lower_bound], [upper_bound]) | | BETADIST | Returns the density of the beta distribution. | BETADIST(x, alpha, beta, cumulative, [lower_bound], [upper_bound]) | | BETAINV | Returns the inverse of the beta distribution value. | BETAINV(probability, alpha, beta, [lower_bound], [upper_bound]) | | BINOM.DIST | Returns density of binomial distribution. | BINOM.DIST(number_s, trials, probability_s, cumulative) | | BINOM.INV | Returns inverse binomial distribution value. | BINOM.INV(trials, probability_s, alpha) | | BINOMDIST | Returns density of binomial distribution. | BINOMDIST(number_s, trials, probability_s, cumulative) | | CHIDIST | Returns probability of chi-square right-side distribution. | CHIDIST(x, degrees) | | CHIDISTRT | Returns probability of chi-square right-side distribution. | CHIDISTRT(x, degrees) | | CHIINV | Returns inverse of chi-square right-side distribution. | CHIINV(p, degrees) | | CHIINVRT | Returns inverse of chi-square right-side distribution. | CHIINVRT(p, degrees) | | CHISQ.DIST | Returns value of chi-square distribution. | CHISQ.DIST(x, degrees, cumulative) | | CHISQ.DIST.RT | Returns probability of chi-square right-side distribution. | CHISQ.DIST.RT(x, degrees) | | CHISQ.INV | Returns inverse of chi-square distribution. | CHISQ.INV(p, degrees) | | CHISQ.INV.RT | Returns inverse of chi-square right-side distribution. | CHISQ.INV.RT(p, degrees) | | CHISQ.TEST | Returns chisquared-test value for a dataset. | CHISQ.TEST(array1, array2) | | CHITEST | Returns chisquared-test value for a dataset. | CHITEST(array1, array2) | | CONFIDENCE | Returns upper confidence bound for normal distribution. | CONFIDENCE(alpha, stdev, size) | | CONFIDENCE.NORM | Returns upper confidence bound for normal distribution. | CONFIDENCE.NORM(alpha, stdev, size) | | CONFIDENCE.T | Returns upper confidence bound for T distribution. | CONFIDENCE.T(alpha, stdev, size) | | CORREL | Returns the correlation coefficient between two data sets. | CORREL(data1, data2) | | COUNT | Counts how many numbers are in the list of arguments. | COUNT(value1, ...) | | COUNTA | Counts how many values are in the list of arguments. | COUNTA(value1, ...) | | COUNTBLANK | Returns the number of empty cells. | COUNTBLANK(range, ...) | | COUNTIF | Returns the number of cells that meet with certain criteria within a cell range. | COUNTIF(range, criteria) | | COUNTIFS | Returns the count of rows or columns that meet criteria in multiple ranges. | COUNTIFS(criteria_range1, criteria1, [criteria_range2, criteria2], ...) | | COUNTUNIQUE | Counts the number of unique values in a list of specified values and ranges. | COUNTUNIQUE(value1, ...) | | COVAR | Returns the covariance between two data sets, population normalized. | COVAR(data1, data2) | | COVARIANCE.P | Returns the covariance between two data sets, population normalized. | COVARIANCE.P(data1, data2) | | COVARIANCE.S | Returns the covariance between two data sets, sample normalized. | COVARIANCE.S(data1, data2) | | COVARIANCEP | Returns the covariance between two data sets, population normalized. | COVARIANCEP(data1, data2) | | COVARIANCES | Returns the covariance between two data sets, sample normalized. | COVARIANCES(data1, data2) | | CRITBINOM | Returns inverse binomial distribution value. | CRITBINOM(trials, probability_s, alpha) | | DEVSQ | Returns sum of squared deviations. | DEVSQ(number1, ...) | | EXPON.DIST | Returns density of a exponential distribution. | EXPON.DIST(x, lambda, cumulative) | | EXPONDIST | Returns density of a exponential distribution. | EXPONDIST(x, lambda, cumulative) | | F.DIST | Returns value of F distribution. | F.DIST(x, degree1, degree2, cumulative) | | F.DIST.RT | Returns probability of F right-side distribution. | F.DIST.RT(x, degree1, degree2) | | F.INV | Returns inverse of F distribution. | F.INV(p, degree1, degree2) | | F.INV.RT | Returns inverse of F right-side distribution. | F.INV.RT(p, degree1, degree2) | | F.TEST | Returns f-test value for a dataset. | F.TEST(array1, array2) | | FDIST | Returns probability of F right-side distribution. | FDIST(x, degree1, degree2) | | FDISTRT | Returns probability of F right-side distribution. | FDISTRT(x, degree1, degree2) | | FINV | Returns inverse of F right-side distribution. | FINV(p, degree1, degree2) | | FINVRT | Returns inverse of F right-side distribution. | FINVRT(p, degree1, degree2) | | FISHER | Returns Fisher transformation value. | FISHER(number) | | FISHERINV | Returns inverse Fisher transformation value. | FISHERINV(number) | | FTEST | Returns f-test value for a dataset. | FTEST(array1, array2) | | GAMMA | Returns value of Gamma function. | GAMMA(number) | | GAMMA.DIST | Returns density of Gamma distribution. | GAMMA.DIST(x, alpha, beta, cumulative) | | GAMMA.INV | Returns inverse Gamma distribution value. | GAMMA.INV(probability, alpha, beta) | | GAMMADIST | Returns density of Gamma distribution. | GAMMADIST(x, alpha, beta, cumulative) | | GAMMAINV | Returns inverse Gamma distribution value. | GAMMAINV(probability, alpha, beta) | | GAMMALN | Returns natural logarithm of Gamma function. | GAMMALN(number) | | GAMMALN.PRECISE | Returns natural logarithm of Gamma function. | GAMMALN.PRECISE(number) | | GAUSS | Returns the probability that a member of a standard normal population falls between the mean and `number` standard deviations from the mean. | GAUSS(number) | | GEOMEAN | Returns the geometric average. | GEOMEAN(number1, ...) | | HARMEAN | Returns the harmonic average. | HARMEAN(number1, ...) | | HYPGEOM.DIST | Returns density of hypergeometric distribution. | HYPGEOM.DIST(sample_s, number_sample, population_s, number_population, cumulative) | | HYPGEOMDIST | Returns density of hypergeometric distribution. | HYPGEOMDIST(sample_s, number_sample, population_s, number_population, cumulative) | | LARGE | Returns k-th largest value in a range. | LARGE(range, k) | | LOGINV | Returns value of inverse lognormal distribution. | LOGINV(p, mean, stddev) | | LOGNORM.DIST | Returns density of lognormal distribution. | LOGNORM.DIST(x, mean, stddev, cumulative) | | LOGNORM.INV | Returns value of inverse lognormal distribution. | LOGNORM.INV(p, mean, stddev) | | LOGNORMDIST | Returns density of lognormal distribution. | LOGNORMDIST(x, mean, stddev, cumulative) | | LOGNORMINV | Returns value of inverse lognormal distribution. | LOGNORMINV(p, mean, stddev) | | MAX | Returns the maximum value in a list of arguments. | MAX(number1, ...) | | MAXA | Returns the maximum value in a list of arguments, counting text and logical values found in ranges. | MAXA(value1, ...) | | MAXIFS | Returns the maximum value of the cells in a range that meet a set of criteria. | MAXIFS(max_range, criteria_range1, criteria1, [criteria_range2, criteria2], ...) | | MEDIAN | Returns the median of a set of numbers. | MEDIAN(number1, ...) | | MIN | Returns the minimum value in a list of arguments. | MIN(number1, ...) | | MINA | Returns the minimum value in a list of arguments, counting text and logical values found in ranges. | MINA(value1, ...) | | MINIFS | Returns the minimum value of the cells in a range that meet a set of criteria. | MINIFS(min_range, criteria_range1, criteria1, [criteria_range2, criteria2], ...) | | NEGBINOM.DIST | Returns density of negative binomial distribution. | NEGBINOM.DIST(number_f, number_s, probability_s, cumulative) | | NEGBINOMDIST | Returns density of negative binomial distribution. | NEGBINOMDIST(number_f, number_s, probability_s, cumulative) | | NORM.DIST | Returns density of normal distribution. | NORM.DIST(x, mean, stddev, cumulative) | | NORM.INV | Returns value of inverse normal distribution. | NORM.INV(p, mean, stddev) | | NORM.S.DIST | Returns density of the standard normal distribution (mean 0, standard deviation 1). | NORM.S.DIST(x, cumulative) | | NORM.S.INV | Returns value of the inverse standard normal distribution (mean 0, standard deviation 1). | NORM.S.INV(p) | | NORMDIST | Returns density of normal distribution. | NORMDIST(x, mean, stddev, cumulative) | | NORMINV | Returns value of inverse normal distribution. | NORMINV(p, mean, stddev) | | NORMSDIST | Returns density of the standard normal distribution (mean 0, standard deviation 1). | NORMSDIST(x, cumulative) | | NORMSINV | Returns value of the inverse standard normal distribution (mean 0, standard deviation 1). | NORMSINV(p) | | PEARSON | Returns the correlation coefficient between two data sets. | PEARSON(data1, data2) | | PERCENTILE | Returns the k-th percentile of values in a range, inclusive of 0 and 1. | PERCENTILE(data, k) | | PERCENTILE.EXC | Returns the k-th percentile of values in a range, exclusive of 0 and 1. | PERCENTILE.EXC(data, k) | | PERCENTILE.INC | Returns the k-th percentile of values in a range, inclusive of 0 and 1. | PERCENTILE.INC(data, k) | | PHI | Returns probability density of normal distribution. | PHI(x) | | POISSON | Returns density of Poisson distribution. | POISSON(x, mean, cumulative) | | POISSON.DIST | Returns density of Poisson distribution. | POISSON.DIST(x, mean, cumulative) | | POISSONDIST | Returns density of Poisson distribution. | POISSONDIST(x, mean, cumulative) | | QUARTILE | Returns the quartile of a data set, based on inclusive percentile values. | QUARTILE(data, quart) | | QUARTILE.EXC | Returns the quartile of a data set, based on exclusive percentile values. | QUARTILE.EXC(data, quart) | | QUARTILE.INC | Returns the quartile of a data set, based on inclusive percentile values. | QUARTILE.INC(data, quart) | | RSQ | Returns the squared correlation coefficient between two data sets. | RSQ(data1, data2) | | SKEW | Returns skewness of a sample. | SKEW(number1, ...) | | SKEW.P | Returns skewness of a population. | SKEW.P(number1, ...) | | SKEWP | Returns skewness of a population. | SKEWP(number1, ...) | | SLOPE | Returns the slope of a linear regression line. | SLOPE(array1, array2) | | SMALL | Returns k-th smallest value in a range. | SMALL(range, k) | | STANDARDIZE | Returns normalized value wrt expected value and standard deviation. | STANDARDIZE(x, mean, stddev) | | STDEV | Returns standard deviation of a sample. | STDEV(value1, ...) | | STDEV.P | Returns standard deviation of a population. | STDEV.P(value1, ...) | | STDEV.S | Returns standard deviation of a sample. | STDEV.S(value1, ...) | | STDEVA | Returns standard deviation of a sample, counting text and logical values found in ranges. | STDEVA(value1, ...) | | STDEVP | Returns standard deviation of a population. | STDEVP(value1, ...) | | STDEVPA | Returns standard deviation of a population, counting text and logical values found in ranges. | STDEVPA(value1, ...) | | STDEVS | Returns standard deviation of a sample. | STDEVS(value1, ...) | | STEYX | Returns standard error for predicted of the predicted y value for each x value. | STEYX(array1, array2) | | T.DIST | Returns density of Student-t distribution. | T.DIST(x, degrees, cumulative) | | T.DIST.2T | Returns density of Student-t distribution, both-sided. | T.DIST.2T(x, degrees) | | T.DIST.RT | Returns density of Student-t distribution, right-tailed. | T.DIST.RT(x, degrees) | | T.INV | Returns inverse Student-t distribution. | T.INV(p, degrees) | | T.INV.2T | Returns inverse Student-t distribution, both-sided. | T.INV.2T(p, degrees) | | T.TEST | Returns t-test value for a dataset. | T.TEST(array1, array2, tails, type) | | TDIST | Returns density of Student-t distribution, both-sided or right-tailed. | TDIST(x, degrees, tails) | | TDIST2T | Returns density of Student-t distribution, both-sided. | TDIST2T(x, degrees) | | TDISTRT | Returns density of Student-t distribution, right-tailed. | TDISTRT(x, degrees) | | TINV | Returns inverse Student-t distribution, both-sided. | TINV(p, degrees) | | TINV2T | Returns inverse Student-t distribution, both-sided. | TINV2T(p, degrees) | | TTEST | Returns t-test value for a dataset. | TTEST(array1, array2, tails, type) | | VAR | Returns variance of a sample. | VAR(value1, ...) | | VAR.P | Returns variance of a population. | VAR.P(value1, ...) | | VAR.S | Returns variance of a sample. | VAR.S(value1, ...) | | VARA | Returns variance of a sample, counting text and logical values found in ranges. | VARA(value1, ...) | | VARP | Returns variance of a population. | VARP(value1, ...) | | VARPA | Returns variance of a population, counting text and logical values found in ranges. | VARPA(value1, ...) | | VARS | Returns variance of a sample. | VARS(value1, ...) | | WEIBULL | Returns density of Weibull distribution. | WEIBULL(x, alpha, beta, cumulative) | | WEIBULL.DIST | Returns density of Weibull distribution. | WEIBULL.DIST(x, alpha, beta, cumulative) | | WEIBULLDIST | Returns density of Weibull distribution. | WEIBULLDIST(x, alpha, beta, cumulative) | | Z.TEST | Returns z-test value for a dataset. | Z.TEST(array, x, [sigma]) | | ZTEST | Returns z-test value for a dataset. | ZTEST(array, x, [sigma]) | ### Text | Function ID | Description | Syntax | |:---|:---|:---| | CHAR | Converts a number into a character according to the current code table. | CHAR(number) | | CLEAN | Returns text that has been "cleaned" of line breaks and other non-printable characters. | CLEAN(text) | | CODE | Returns a numeric code for the first character in a text string. | CODE(text) | | CONCATENATE | Combines several text strings into one string. | CONCATENATE(text1, ...) | | EXACT | Returns TRUE if both text strings are exactly the same. | EXACT(text1, text2) | | FIND | Returns the location of one text string inside another. | FIND(search_string, text, [start_position]) | | LEFT | Extracts a given number of characters from the left side of a text string. | LEFT(text, [number]) | | LEN | Returns length of a given text. | LEN(text) | | LOWER | Returns text converted to lowercase. | LOWER(text) | | MID | Returns a substring of a given length starting from start_position. | MID(text, start_position, length) | | PROPER | Capitalizes words given text string. | PROPER(text) | | REPLACE | Replaces substring of a text of a given length that starts at given position. | REPLACE(text, start_position, length, new_text) | | REPT | Repeats text a given number of times. | REPT(text, number) | | RIGHT | Extracts a given number of characters from the right side of a text string. | RIGHT(text, [number]) | | SEARCH | Returns the location of search_string inside text. Case-insensitive. Allows the use of wildcards. | SEARCH(search_string, text, [start_position]) | | SPLIT | Divides the provided text using the space character as a separator and returns the substring at the zero-based position specified by the second argument. For example, SPLIT("Lorem ipsum", 0) returns "Lorem" and SPLIT("Lorem ipsum", 1) returns "ipsum". | SPLIT(text, index) | | SUBSTITUTE | Returns a string where occurrences of old_text are replaced by new_text. Replaces only specific occurrence if last parameter is provided. | SUBSTITUTE(text, old_text, new_text, [occurrence]) | | T | Returns text if given value is text, empty string otherwise. | T(value) | | TEXT | Converts a number into text according to a given format. By default it accepts the same formats as the [`dateFormats`](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.html#dateformats) option, and can be further customized with the [`stringifyDateTime`](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.html#stringifydatetime) and [`stringifyCurrency`](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.html#stringifycurrency) options. | TEXT(number, format) | | TEXTJOIN | Joins text from multiple strings and/or ranges with a delimiter. Supports array/range delimiters that cycle through gaps. When ignore_empty is TRUE, empty strings are skipped. Returns #VALUE! if result exceeds 32,767 characters. | TEXTJOIN(delimiter, ignore_empty, text1, ...) | | TRIM | Strips extra spaces from text. | TRIM(text) | | UNICHAR | Returns the character created by using provided code point. | UNICHAR(number) | | UNICODE | Returns the Unicode code point of a first character of a text. | UNICODE(text) | | UPPER | Returns text converted to uppercase. | UPPER(text) | | VALUE | Parses a number, date, time, datetime, currency, or percentage from a text string. | VALUE(text) | --- ## Compatibility with Google Sheets URL: https://hyperformula.handsontable.com/docs/guide/compatibility-with-google-sheets # Compatibility with Google Sheets Achieve nearly full compatibility wih Google Sheets, using the right HyperFormula configuration. **Contents:** ## Overview While HyperFormula conforms to the [OpenDocument](https://docs.oasis-open.org/office/OpenDocument/v1.3/os/part4-formula/OpenDocument-v1.3-os-part4-formula.html) standard, it also follows industry practices set by other spreadsheets such as Microsoft Excel or Google Sheets. That said, there are cases when HyperFormula can't be compatible with all three at the same time, because of inconsistencies (between the OpenDocument standard, Microsoft Excel and Google Sheets), limitations of HyperFormula at its current development stage (version `3.4.0`), or limitations of Microsoft Excel or Google Sheets themselves. For the full list of such differences, see [this](https://hyperformula.handsontable.com/docs/guide/list-of-differences.md) page. Still, with the right configuration, you can achieve nearly full compatibility. ## Configure compatibility with Google Sheets ### `TRUE` and `FALSE` constants Google Sheets has built-in constants (keywords) for the boolean values (`TRUE` and `FALSE`). To set up HyperFormula in the same way, define `TRUE` and `FALSE` as [named expressions](https://hyperformula.handsontable.com/docs/guide/named-expressions.md), by using HyperFormula's [`TRUE()`](https://hyperformula.handsontable.com/docs/guide/built-in-functions.md#logical) and [`FALSE()`](https://hyperformula.handsontable.com/docs/guide/built-in-functions.md#logical) functions. ```js hfInstance.addNamedExpression('TRUE', '=TRUE()'); hfInstance.addNamedExpression('FALSE', '=FALSE()'); ``` ### Array arithmetic mode In Google Sheets, the [array arithmetic mode](https://hyperformula.handsontable.com/docs/guide/arrays.md#array-arithmetic-mode) is disabled by default. To set up HyperFormula in the same way, set the [`useArrayArithmetic`](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#usearrayarithmetic) option to `false`. ```js useArrayArithmetic: false, // set by default ``` ### Leap year bug In Google Sheets, the year 1900 is [correctly](https://developers.google.com/sheets/api/guides/formats#about_date_and_time_values) treated as a common year, not a leap year. To set up HyperFormula in the same way, use the default configuration: ```js leapYear1900: false, // set by default ``` ### Numerical precision Both HyperFormula and Google Sheets automatically round floating-point numbers. To configure this feature, use these options: - [`smartRounding`](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#smartrounding) - [`precisionEpsilon`](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#precisionepsilon) ### Separators In Google Sheets, separators depend on your configured locale, whereas in HyperFormula, you set up separators through options (e.g., [`decimalSeparator`](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#decimalseparator)). In Google Sheets' `en-US` locale, the thousands separator and the function argument separator use the same character: `,` (a comma). But in HyperFormula, [`functionArgSeparator`](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#functionargseparator) can't be the same as [`thousandSeparator`](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#thousandseparator). For this reason, you can't achieve full compatibility with Google Sheets' `en-US` locale. To match Google Sheets' `en-US` locale as closely as possible, use the default configuration: ```js functionArgSeparator: ',', // set by default decimalSeparator: '.', // set by default thousandSeparator: '', // set by default arrayColumnSeparator: ',', // set by default arrayRowSeparator: ';', // set by default ``` Related options: - [`functionArgSeparator`](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#functionargseparator) - [`decimalSeparator`](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#decimalseparator) - [`thousandSeparator`](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#thousandseparator) - [`arrayRowSeparator`](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#arrayrowseparator) - [`arrayColumnSeparator`](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#arraycolumnseparator) ### Date and time formats In Google Sheets, date and time formats depend on the spreadsheet's locale and are [shared across all users](https://support.google.com/docs/answer/58515), whereas in HyperFormula you can [set them up freely](https://hyperformula.handsontable.com/docs/guide/date-and-time-handling.md). Options related to date and time formats: - [`dateFormats`](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#dateformats) - [`timeFormats`](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#timeformats) - [`nullYear`](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#nullyear) - [`parseDateTime()`](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#parsedatetime) - [`stringifyDateTime()`](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#stringifydatetime) - [`stringifyDuration()`](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#stringifyduration) ### `TEXT` function formats Google Sheets' `TEXT` function supports a wide range of date, time, and currency formats. To cover the full range in HyperFormula, supply both [`stringifyDateTime()`](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#stringifydatetime) (for dates and durations) and [`stringifyCurrency()`](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#stringifycurrency) (for currency formats — locale-aware grouping, non-`$` symbols, accounting two-section patterns). See [Currency handling](https://hyperformula.handsontable.com/docs/guide/currency-handling.md) for an `Intl.NumberFormat`-based example. ## Full configuration This configuration aligns HyperFormula with the default behavior of Google Sheets (set to locale `en-US`), as closely as possible at this development stage (version `3.4.0`). ```js // define options const options = { dateFormats: ['MM/DD/YYYY', 'MM/DD/YY', 'YYYY/MM/DD'], timeFormats: ['hh:mm', 'hh:mm:ss.sss'], // set by default currencySymbol: ['$', 'USD'], localeLang: 'en-US', functionArgSeparator: ',', // set by default decimalSeparator: '.', // set by default thousandSeparator: '', // set by default arrayColumnSeparator: ',', // set by default arrayRowSeparator: ';', // set by default nullYear: 30, // set by default useArrayArithmetic: false, // set by default leapYear1900: false, // set by default smartRounding: true, // set by default }; // call the static method to build a new instance const hfInstance = HyperFormula.buildEmpty(options); // define TRUE and FALSE constants hfInstance.addNamedExpression('TRUE', '=TRUE()'); hfInstance.addNamedExpression('FALSE', '=FALSE()'); ``` --- ## Compatibility with Microsoft Excel URL: https://hyperformula.handsontable.com/docs/guide/compatibility-with-microsoft-excel # Compatibility with Microsoft Excel Achieve nearly full compatibility with Microsoft Excel, using the right HyperFormula configuration. **Contents:** ## Overview While HyperFormula conforms to the [OpenDocument](https://docs.oasis-open.org/office/OpenDocument/v1.3/os/part4-formula/OpenDocument-v1.3-os-part4-formula.html) standard, it also follows industry practices set by other spreadsheets such as Microsoft Excel or Google Sheets. That said, there are cases when HyperFormula can't be compatible with all three at the same time, because of inconsistencies (between the OpenDocument standard, Microsoft Excel and Google Sheets), limitations of HyperFormula at its current development stage (version `3.4.0`), or limitations of Microsoft Excel or Google Sheets themselves. For the full list of such differences, see [this](https://hyperformula.handsontable.com/docs/guide/list-of-differences.md) page. Still, with the right configuration, you can achieve nearly full compatibility. ### Excel function coverage HyperFormula implements **350 out of 515 Excel functions** (68% coverage), as of version 3.1.0 and Excel 2024. This means that **165 Excel functions** (32%) are not yet available in HyperFormula. Additionally, HyperFormula includes some functions that are not part of Excel's standard function set, bringing the total number of available functions to **424**. For a complete list of supported functions, see the [built-in functions](https://hyperformula.handsontable.com/docs/guide/built-in-functions.md) page. If you need any of the missing Excel functions, you can [contact us](https://hyperformula.handsontable.com/docs/guide/contact.md) or implement them as [custom functions](https://hyperformula.handsontable.com/docs/guide/custom-functions.md), extending HyperFormula's capabilities to meet your specific requirements. ## Configure compatibility with Microsoft Excel ### String comparison rules In the US version of Microsoft Excel, by default, [string comparison](https://hyperformula.handsontable.com/docs/guide/types-of-operators.md#comparing-strings) is accent-sensitive and case-insensitive. To set up HyperFormula in the same way, use this configuration: ```js caseSensitive: false, // set by default accentSensitive: true, ignorePunctuation: false, // set by default localeLang: 'en-US', ``` Related options: - [`caseSensitive`](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#casesensitive) - [`accentSensitive`](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#accentsensitive) - [`caseFirst`](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#casefirst) - [`ignorePunctuation`](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#ignorepunctuation) - [`localeLang`](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#localelang) ### Function criteria In Microsoft Excel, functions that use criteria (`SUMIF`, `SUMIFS`, `COUNTIF` etc.) accept wildcards, don't accept regular expressions, and require whole cells to match the specified pattern. To set up HyperFormula in the same way, use the default configuration: ```js useWildcards: true, // set by default useRegularExpressions: false, // set by default matchWholeCell: true, // set by default ``` Related options: - [`matchWholeCell`](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#matchwholecell) - [`useRegularExpressions`](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#useregularexpressions) - [`useWildcards`](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#usewildcards) ### `TRUE` and `FALSE` constants Microsoft Excel has built-in constants (keywords) for the boolean values (`TRUE` and `FALSE`). To set up HyperFormula in the same way, define `TRUE` and `FALSE` as [named expressions](https://hyperformula.handsontable.com/docs/guide/named-expressions.md), by using HyperFormula's [`TRUE()`](https://hyperformula.handsontable.com/docs/guide/built-in-functions.md#logical) and [`FALSE()`](https://hyperformula.handsontable.com/docs/guide/built-in-functions.md#logical) functions. ```js hfInstance.addNamedExpression('TRUE', '=TRUE()'); hfInstance.addNamedExpression('FALSE', '=FALSE()'); ``` ### Array arithmetic mode In Microsoft Excel, the [array arithmetic mode](https://hyperformula.handsontable.com/docs/guide/arrays.md#array-arithmetic-mode) is enabled by default. To set up HyperFormula in the same way, set the [`useArrayArithmetic`](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#usearrayarithmetic) option to `true`. ```js useArrayArithmetic: true, ``` ### Whitespace in formulas In Microsoft Excel, all whitespace characters inside formulas are ignored. To set up HyperFormula in the same way, set the [`ignoreWhiteSpace`](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#ignorewhitespace) option to `'any'`. ```js ignoreWhiteSpace: 'any', ``` ### Formulas that evaluate to `null` In Microsoft Excel, formulas that evaluate to empty values are forced to evaluate to zero instead. To set up HyperFormula in the same way, set the [`evaluateNullToZero`](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#evaluatenulltozero) option to `true`. ```js evaluateNullToZero: true, ``` ### Leap year bug In Microsoft Excel, the year 1900 is [incorrectly](https://docs.microsoft.com/en-us/office/troubleshoot/excel/wrongly-assumes-1900-is-leap-year) treated as a leap year. To set up HyperFormula in the same way, use this configuration: ```js leapYear1900: true, nullDate: { year: 1899, month: 12, day: 31 }, ``` ### Numerical precision Both HyperFormula and Microsoft Excel automatically round floating-point numbers. To configure this feature, use these options: - [`smartRounding`](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#smartrounding) - [`precisionEpsilon`](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#precisionepsilon) ### Separators In Microsoft Excel, separators depend on your configured locale, whereas in HyperFormula, you set up separators through options (e.g., [`decimalSeparator`](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#decimalseparator)). In Excel's `en-US` locale, the thousands separator and the function argument separator use the same character: `,` (a comma). But in HyperFormula, [`functionArgSeparator`](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#functionargseparator) can't be the same as [`thousandSeparator`](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#thousandseparator). For this reason, you can't achieve full compatibility with Excel's `en-US` locale. To match Excel's `en-US` locale as closely as possible, use the default configuration: ```js functionArgSeparator: ',', // set by default decimalSeparator: '.', // set by default thousandSeparator: '', // set by default arrayColumnSeparator: ',', // set by default arrayRowSeparator: ';', // set by default ``` Related options: - [`functionArgSeparator`](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#functionargseparator) - [`decimalSeparator`](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#decimalseparator) - [`thousandSeparator`](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#thousandseparator) - [`arrayRowSeparator`](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#arrayrowseparator) - [`arrayColumnSeparator`](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#arraycolumnseparator) ### Date and time formats In Microsoft Excel, date and time formats depend on your configured locale, whereas in HyperFormula you can [set them up freely](https://hyperformula.handsontable.com/docs/guide/date-and-time-handling.md). Options related to date and time formats: - [`dateFormats`](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#dateformats) - [`timeFormats`](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#timeformats) - [`nullYear`](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#nullyear) - [`parseDateTime()`](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#parsedatetime) - [`stringifyDateTime()`](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#stringifydatetime) - [`stringifyDuration()`](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#stringifyduration) ### `TEXT` function formats Excel's `TEXT` function supports a wide range of date, time, and currency formats. To cover the full range in HyperFormula, supply both [`stringifyDateTime()`](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#stringifydatetime) (for dates and durations) and [`stringifyCurrency()`](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#stringifycurrency) (for currency formats — locale-aware grouping, non-`$` symbols, accounting two-section patterns). See [Currency handling](https://hyperformula.handsontable.com/docs/guide/currency-handling.md) for an `Intl.NumberFormat`-based example. ## Full configuration This configuration aligns HyperFormula with the default behavior of Microsoft Excel (set to locale `en-US`), as closely as possible at this development stage (version `3.4.0`). ```js // define options const options = { dateFormats: ['MM/DD/YYYY', 'MM/DD/YY', 'YYYY/MM/DD'], timeFormats: ['hh:mm', 'hh:mm:ss.sss'], // set by default currencySymbol: ['$', 'USD'], localeLang: 'en-US', functionArgSeparator: ',', // set by default decimalSeparator: '.', // set by default thousandSeparator: '', // set by default arrayColumnSeparator: ',', // set by default arrayRowSeparator: ';', // set by default nullYear: 30, // set by default caseSensitive: false, // set by default accentSensitive: true, ignorePunctuation: false, // set by default useWildcards: true, // set by default useRegularExpressions: false, // set by default matchWholeCell: true, // set by default useArrayArithmetic: true, ignoreWhiteSpace: 'any', evaluateNullToZero: true, leapYear1900: true, nullDate: { year: 1899, month: 12, day: 31 }, smartRounding: true, // set by default }; // call the static method to build a new instance const hfInstance = HyperFormula.buildEmpty(options); // define TRUE and FALSE constants hfInstance.addNamedExpression('TRUE', '=TRUE()'); hfInstance.addNamedExpression('FALSE', '=FALSE()'); ``` --- ## Contact URL: https://hyperformula.handsontable.com/docs/guide/contact # Contact HyperFormula is a product of Handsoncode, the company that stands behind [Handsontable](https://handsontable.com/). We are here to answer all your questions regarding pricing, licensing, support, and security. We typically reply within a few hours during our working hours: 8:00 AM - 5:00 PM [CET](https://time.is/pl/CET). ## Contact sales Write to us at [sales@handsontable.com](mailto:sales@handsontable.com) or submit your inquiry through the [contact form](https://handsontable.com/get-a-quote). ## Billing address * Handsoncode sp. z o.o. * Aleja Zwycięstwa 96/98 * 81-451 Gdynia, Poland * VAT EU: PL5862294002 ## Looking for technical support? [Learn more about support options →](https://hyperformula.handsontable.com/#pricing) --- ## Configuration options URL: https://hyperformula.handsontable.com/docs/guide/configuration-options # Configuration options HyperFormula can be customized through easy-to-setup `options`. The only mandatory key is `licenseKey`. It has a [dedicated section](https://hyperformula.handsontable.com/docs/guide/license-key.md) in which you can find all allowed types of key values. Below you can see the example of a configuration object and the static method called to initiate a new instance of HyperFormula. [See the full list of available options →](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.html) ## Example ```javascript // define options const options = { licenseKey: 'gpl-v3', precisionRounding: 9, nullDate: { year: 1900, month: 1, day: 1 }, functionArgSeparator: '.' }; // call the static method to build a new instance const hfInstance = HyperFormula.buildEmpty(options); ``` --- ## Currency handling URL: https://hyperformula.handsontable.com/docs/guide/currency-handling # Currency handling HyperFormula treats currency through **two independent mechanisms**: - **Currency input** — recognizing currency literals (e.g. `"100 zł"`) when they appear in cell values, so they become numeric values tagged as currency rather than strings. Controlled by [`currencySymbol`](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#currencysymbol). - **Currency output** — rendering numbers as currency strings via the `TEXT` function. Simple `$`-prefixed formats work out of the box; richer locale-aware patterns plug in through [`stringifyCurrency`](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#stringifycurrency). The two mechanisms are orthogonal — configure both for full coverage. HyperFormula ships with no currency data and no currency-library dependency, so you stay in control of which symbols are recognized and how they render. ## Currency input By default, HyperFormula recognizes `$` as a currency symbol in cell input. To add more (for example Polish złoty), pass an array of recognized symbols to [`currencySymbol`](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#currencysymbol): ```javascript const hf = HyperFormula.buildFromArray( [['100 zł', '=A1 * 1.23']], { currencySymbol: ['$', 'zł'] } ); console.log(hf.getCellValue({ sheet: 0, col: 0, row: 0 })); // 100 console.log(hf.getCellValueDetailedType({ sheet: 0, col: 0, row: 0 })); // 'NUMBER_CURRENCY' console.log(hf.getCellValue({ sheet: 0, col: 1, row: 0 })); // 123 ``` Notes: - The symbol can appear as a **prefix** (`"$100"`) or as a **suffix** (`"100 zł"`). Both forms are recognized. - Each entry in `currencySymbol` is a literal string — no regular expressions. To support multiple locales, list every symbol you want recognized. - Detected literals are exposed as numeric values; the currency tag is available via [`getCellValueDetailedType()`](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#getcellvaluedetailedtype) as `NUMBER_CURRENCY`. `currencySymbol` controls **only** how HyperFormula parses input. It does not influence what the `TEXT` function returns — that is governed by the format string and the [`stringifyCurrency`](#currency-output) callback described below. ## Currency output The `TEXT` function renders a number with a format string. HyperFormula's built-in number formatter handles the simplest currency-shaped patterns out of the box; richer patterns need a [`stringifyCurrency`](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#stringifycurrency) callback. ### Default behavior With no `stringifyCurrency` configured, the built-in formatter handles simple `$`-prefixed formats — `"$0.00"`, `"$0"`, and `"$#.00"`: ```javascript const hf = HyperFormula.buildFromArray([ [1234.5, '=TEXT(A1, "$0.00")'], [1234.5, '=TEXT(A2, "$#.00")'], ]); console.log(hf.getCellValue({ sheet: 0, col: 1, row: 0 })); // "$1234.50" console.log(hf.getCellValue({ sheet: 0, col: 1, row: 1 })); // "$1234.50" ``` A non-`$` symbol used purely as a suffix (no thousands grouping, no decimal-comma) also passes through unchanged: ```javascript const hf = HyperFormula.buildFromArray([[1234.5, '=TEXT(A1, "0.00 zł")']]); console.log(hf.getCellValue({ sheet: 0, col: 1, row: 0 })); // "1234.50 zł" ``` Configure `stringifyCurrency` when your formula corpus needs more advanced currency formats. E.g.: - thousands grouping (`"$#,##0.00"`), - non-`$` symbols with grouping (`"[$€-2] #,##0.00"`, `"[$zł-415] #,##0.00"`), - locale-specific decimal separators (e.g. the Polish `"1234,50 zł"` pattern — the built-in formatter always emits `.` as the decimal), - accounting two-section formats (`"$#,##0.00;($#,##0.00)"`). ### Custom currency formatting The callback contract: ```ts stringifyCurrency: (value: number, currencyFormat: string) => string | undefined ``` The function receives the raw number and the format string passed to `TEXT`. Return a formatted string to override the built-in formatter, or `undefined` to fall through to it. #### Minimal example ```javascript // Recognize "$..."-prefixed formats and ignore the rest: const stringifyCurrency = (value, fmt) => fmt.startsWith('$') ? `$${value.toFixed(2)}` : undefined; const hf = HyperFormula.buildFromArray([ [1234.5, '=TEXT(A1, "$#,##0.00")'], ], { stringifyCurrency }); console.log(hf.getCellValue({ sheet: 0, col: 1, row: 0 })); // "$1234.50" ``` This callback handles `$`-prefixed formats and falls through (returns `undefined`) for everything else. For any format the callback opts out of, HyperFormula proceeds to the next handler in the dispatch chain: the default date / duration formatters, then the built-in number formatter, and finally the raw format string if nothing matched. #### Reference table Side-by-side comparison of the default formatter and the docs adapter from the section below: | Format | Without callback | With adapter callback (section below) | |---|---|---| | `"$0.00"` | `"$1234.50"` | `"$1234.50"` | | `"$#.00"` | `"$1234.50"` | `"$1234.50"` | | `"$#,##0.00"` | `"$1235,##0.00"` (no grouping) | `"$1,234.50"` | | `"[$€-2] #,##0.00"` | `"[$€-2] 1235,##0.00"` (no grouping) | `"1.234,50 €"` | | `"$#,##0.00;($#,##0.00)"` (value `-1234.5`) | `"$-1235,##0.00;($#,##0.00)"` (no grouping) | `"($1,234.50)"` | #### Error behavior If your callback throws, HyperFormula propagates the exception. Wrap your formatter in `try/catch` if it can fail, and return `undefined` as the opt-out signal for unsupported formats — throwing is reserved for unexpected errors. #### Example: `Intl.NumberFormat` adapter (zero dependencies) This adapter handles a representative subset of popular currency format strings using native [`Intl.NumberFormat`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat). Extend the `LCID_TO_LOCALE` map to cover more locales — see the [MS-LCID](https://learn.microsoft.com/openspecs/windows_protocols/ms-lcid) specification for canonical identifiers. ```javascript // Extend the LCID_TO_LOCALE map and CURRENCY_RULES list to cover more formats. const LCID_TO_LOCALE = { '-409': { locale: 'en-US', currency: 'USD' }, // USD '-2': { locale: 'de-DE', currency: 'EUR' }, // EUR (generic) '-411': { locale: 'ja-JP', currency: 'JPY' }, // JPY '-415': { locale: 'pl-PL', currency: 'PLN' }, // PLN '-809': { locale: 'en-GB', currency: 'GBP' }, // GBP } const CURRENCY_RULES = [ // [$SYMBOL-LCID] #,##0[.00] — locale-tagged currency format. // SYMBOL portion requires at least one character (`+`, not `*`) so that // locale-only modifiers like `[$-409]` (used on date/time formats) are // NOT misclassified as currency by this adapter. { pattern: /^\[\$([^\-\]]+)-([0-9A-Fa-f]+)\]\s*#,##0(\.0+)?$/, build: (match) => { const lcid = '-' + match[2] const fractionDigits = (match[3] || '.').length - 1 const entry = LCID_TO_LOCALE[lcid] || { locale: 'en-US', currency: 'USD' } return new Intl.NumberFormat(entry.locale, { style: 'currency', currency: entry.currency, minimumFractionDigits: fractionDigits, maximumFractionDigits: fractionDigits, }) }, }, // $#,##0.00 — USD shorthand { pattern: /^\$#,##0(\.0+)?$/, build: (match) => new Intl.NumberFormat('en-US', { style: 'currency', currency: 'USD', minimumFractionDigits: (match[1] || '.').length - 1, maximumFractionDigits: (match[1] || '.').length - 1, }), }, ] // Accounting: $#,##0.00;($#,##0.00) — positive;negative with parentheses. // Note: when both sections are plain (e.g. `$#,##0.00;$#,##0.00`), the adapter // honors the negative section AS-IS without auto-prepending `-` — the // format author explicitly opted out of automatic sign. function tryAccountingFormat(value, format) { const sections = format.split(';') if (sections.length !== 2) return undefined const isNegative = value < 0 const section = sections[isNegative ? 1 : 0] const parenMatch = /^\(\$#,##0(\.0+)?\)$/.exec(section) const plainMatch = /^\$#,##0(\.0+)?$/.exec(section) if (!parenMatch && !plainMatch) return undefined const fractionDigits = ((parenMatch || plainMatch)[1] || '.').length - 1 const nf = new Intl.NumberFormat('en-US', { style: 'currency', currency: 'USD', minimumFractionDigits: fractionDigits, maximumFractionDigits: fractionDigits, }) const formatted = nf.format(Math.abs(value)) return isNegative && parenMatch ? `(${formatted})` : formatted } export const customStringifyCurrency = (value, currencyFormat) => { if (typeof currencyFormat !== 'string') return undefined const accounting = tryAccountingFormat(value, currencyFormat) if (accounting !== undefined) return accounting for (const rule of CURRENCY_RULES) { const match = rule.pattern.exec(currencyFormat) if (match) return rule.build(match).format(value) } // Not a recognized currency format — let HyperFormula fall through // to the built-in number formatter. return undefined } ``` #### Limitations of the reference adapter - **It uses each currency's CLDR locale conventions, not your HyperFormula config.** Output is produced by `Intl.NumberFormat`, so the thousands grouping and decimal separator come from the currency's locale (e.g. `pl-PL` → `1 234,50 zł`, `de-DE` → `1.234,50 €`). The adapter does **not** read HyperFormula's [`decimalSeparator`](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#decimalseparator) / [`thousandSeparator`](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#thousandseparator) config. - **It recognizes only a representative subset of format shapes.** It handles LCID-tagged formats (`[$SYM-LCID] #,##0.00`), `$`-shorthand (`$#,##0.00`), and simple two-section accounting (`$#,##0.00;($#,##0.00)`). For any other shape it returns `undefined`, so HyperFormula falls through to its built-in number formatter — which cannot expand `#,##0` thousands grouping nor interpret multi-section `;` formats, producing incorrect output for those patterns. If you need more complex currency formatting such as: - Arbitrary Excel-style format strings, - Precision-safe arithmetic on currency values (e.g. cents as integers), - ISO 4217 currency metadata for dozens of currencies, consider wrapping a specialized currency formatter library such as [`Dinero.js` v2](https://v2.dinerojs.com/) inside the callback. The contract is the same: `(value: number, currencyFormat: string) => string | undefined`. Return `undefined` for any format string you don't want to handle and HyperFormula will fall back to its built-in number formatter. #### What is an LCID tag? [Microsoft Locale Identifier](https://learn.microsoft.com/openspecs/windows_protocols/ms-lcid) (LCID) adds locale context to a currency format. The syntax is `[$SYMBOL-LCID]` followed by the number template — for example `[$zł-415] #,##0.00` means *"Polish złoty, hex LCID `415` = `pl-PL`"*, and `[$€-2] #,##0.00` means *"euro, generic"*. The adapter above parses the LCID to pick the matching `Intl.NumberFormat` locale and ISO 4217 currency code. ## Related configuration - [`stringifyDateTime`](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#stringifydatetime) / [`stringifyDuration`](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#stringifyduration) — sister callbacks for date and duration formatting. Combine with `stringifyCurrency` when your formulas mix date/time and currency formats. --- ## Date and time handling URL: https://hyperformula.handsontable.com/docs/guide/date-and-time-handling # Date and time handling The formats for the default date and time parsing functions can be set using configuration options: - [`dateFormats`](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#dateformats), - [`timeFormats`](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#timeformats), - [`nullYear`](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#nullyear). The API reference of [`dateFormats`](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#dateformats) and [`timeFormats`](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#timeformats) describes the supported date and time formats in detail. ## Example By default, HyperFormula uses the European date and time formats. ```javascript dateFormats: ['DD/MM/YYYY', 'DD/MM/YY'], // set by default timeFormats: ['hh:mm', 'hh:mm:ss.sss'], // set by default ``` To use the US date and time formats, set: ```javascript dateFormats: ['MM/DD/YYYY', 'MM/DD/YY', 'YYYY/MM/DD'], // US date formats timeFormats: ['hh:mm', 'hh:mm:ss.sss'], // set by default ``` ## Custom date and time handling If date and time formats supported by the [`dateFormats`](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#dateformats) and [`timeFormats`](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#timeformats) parameters are not enough, you can extend them by providing the following options: - [`parseDateTime`](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#parsedatetime), which allows to provide a function that accepts a string representing date/time and parses it into an actual date/time format - [`stringifyDateTime`](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#stringifydatetime), which allows to provide a function that takes the date/time and prints it as a string - [`stringifyDuration`](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#stringifyduration), which allows to provide a function that takes time duration and prints it as a string To extend the number of possible date formats, you will need to configure [`parseDateTime`](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#parsedatetime) . This functionality is based on callbacks, and you can customize the formats by integrating a third-party library like [Moment.js](https://momentjs.com/), or by writing your own custom function that returns a [`DateTime`](https://hyperformula.handsontable.com/docs/api/globals.md#datetime) object. The configuration of date formats and stringify options may impact some built-in functions. For instance, the `VALUE` function transforms strings into numbers, which means it uses [`parseDateTime`](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#parsedatetime). The `TEXT` function works the other way round - it accepts a number and returns a string, so it uses `stringifyDateTime`. Any change here might give you different results. Criteria-based functions (`SUMIF`, `AVERAGEIF`, etc.) perform comparisons, so they also need to work on strings, dates, etc. ## Moment.js integration In this example, you will add the possibility to parse dates in the `"Do MMM YY"` custom format. To do so, you first need to write a function using [Moment.js API](https://momentjs.com/docs/): ```javascript import moment from "moment"; // write a custom function for parsing dates export const customParseDate = (dateString, dateFormat) => { const momentDate = moment(dateString, dateFormat, true); // check validity of a date with moment.js method if (momentDate.isValid()) { return { year: momentDate.year(), month: momentDate.month() + 1, day: momentDate.date() }; } // if the string was not recognized as // a valid date return nothing return undefined; }; ``` Then, use it inside the [configuration options](https://hyperformula.handsontable.com/docs/guide/configuration-options.md) like so: ```javascript const options = { parseDateTime: customParseDate, // you can add more formats dateFormats: ["Do MMM YY"] }; ``` After that, you should be able to add a dataset with dates in your custom format: ```javascript const data = [["31st Jan 00", "2nd Jun 01", "=B1-A1"]]; ``` And now, HyperFormula recognizes these values as valid dates and can operate on them. For currency formatting in the `TEXT` function (locale-aware grouping, non-`$` symbols, accounting patterns), see the [Currency handling](https://hyperformula.handsontable.com/docs/guide/currency-handling.md) guide. --- ## Demo URL: https://hyperformula.handsontable.com/docs/guide/demo # Demo In this demo, you can see how HyperFormula handles basic operations by using API methods, such as: * `buildEmpty` static method to initialize the instance * `addSheet` method to add a new sheet * `setCellContents` method to add content * `getSheetId` method to retrieve the sheet's ID * `getCellValue` method to get the value of a cell * `calculateFormula` method to calculate a formula * `getCellFormula` method to retrieve a formula from a cell --- ## Dependencies URL: https://hyperformula.handsontable.com/docs/guide/dependencies # Dependencies HyperFormula depends on a few external libraries, as listed below. These dependencies are used to support some of the library's core features. | Name | License | Author | |:------------------------------------------------------------|:----------------|:-----------------------------------| | [bessel](https://github.com/SheetJS/bessel) | Apache v2.0 | SheetJS | | [Chevrotain](https://github.com/SAP/chevrotain) | Apache v2.0 | SAP SE or an SAP affiliate company | | [core-js](https://github.com/zloirock/core-js) | The MIT License | Denis Pushkarev | | [jStat](https://github.com/jstat/jstat) | The MIT License | jStat | | [tiny-emitter](https://github.com/scottcorgan/tiny-emitter) | The MIT License | Scott Corgan | The _bessel_ and _jStat_ projects are distributed with the code repository at the path `src/interpreter/plugin/3rdparty` and bundled with the code package. We want to express gratitude and appreciation for all the hard work put into these awesome libraries by their authors and maintainers. --- ## Custom functions URL: https://hyperformula.handsontable.com/docs/guide/custom-functions # Custom functions Expand the function library of your application by adding custom functions. **Contents:** ## Add a simple custom function As an example, let's create a custom function `GREET` that accepts a person's first name as a string argument and returns a personalized greeting. ### 1. Create a function plugin Import `FunctionPlugin`, and extend it with a new class. For example: ```js import { FunctionPlugin } from 'hyperformula'; // let's call the function plugin `MyCustomPlugin` export class MyCustomPlugin extends FunctionPlugin {} ``` ### 2. Define your function's ID, method, and metadata In your function plugin, in the static `implementedFunctions` property, define an object that declares the functions provided by this plugin. The name of that object becomes the ID by which [translations](#function-name-translations), [aliases](#function-aliases), and other elements reference your function. Make the ID unique among all HyperFormula functions ([built-in](https://hyperformula.handsontable.com/docs/guide/built-in-functions.md#list-of-available-functions) and custom). In your function's object, you can specify: - A `method` property (required), which maps your function to the implementation method (we'll define it later on), - A `parameters` array that describes the arguments accepted by your function and [validation options](#argument-validation-options) for each argument, - Other [custom function options](#function-options). ```js import { FunctionPlugin, FunctionArgumentType } from 'hyperformula'; MyCustomPlugin.implementedFunctions = { // let's define the function's ID as `GREET` GREET: { method: 'greet', parameters: [{ argumentType: FunctionArgumentType.STRING }], }, }; ``` > To define multiple functions in a single function plugin, add them all > to the `implementedFunctions` object. > > ```js > MyCustomPlugin.implementedFunctions = { > FUNCTION_A: { > //... > }, > FUNCTION_B: { > //... > }, > }; > ``` ### 3. Add your function's names In a separate object, define your function's names in every [language](#function-name-translations) that you want to support. > Even if you support just a single language, you still need to define a translation for it. ```js export const MyCustomPluginTranslations = { enGB: { GREET: 'GREET', }, enUS: { GREET: 'GREET', }, // repeat for all languages used in your system }; ``` ### 4. Implement your function's logic In your function plugin, add a method that implements your function's calculations. Your method needs to: - Take two optional arguments: `ast` and `state`. - Return the results of your calculations. Wrap your implementation in the built-in `runFunction()` method, which: - Evaluates the arguments of your custom function. - Validates the number of arguments against the [`parameters` array](#function-options). - Coerces the argument values to types set in the [`parameters` array](#argument-validation-options). - Handles optional arguments and default values according to options set in the [`parameters` array](#argument-validation-options). - Validates the arguments of your custom function against the [argument validation options](#argument-validation-options). - Duplicates the arguments according to the [`repeatLastArgs` option](#function-options). - Handles the [array arithmetic mode](https://hyperformula.handsontable.com/docs/guide/arrays.md#array-arithmetic-mode). - Performs [function vectorization](https://hyperformula.handsontable.com/docs/guide/arrays.md#passing-arrays-to-scalar-functions-vectorization). - Performs [argument broadcasting](https://hyperformula.handsontable.com/docs/guide/arrays.md#broadcasting). ```js export class MyCustomPlugin extends FunctionPlugin { greet(ast, state) { return this.runFunction( ast.args, state, this.metadata('GREET'), (firstName) => { return `👋 Hello, ${firstName}!`; } ); } } ``` ### 5. Register your function plugin Register your function plugin and its translations so that HyperFormula can recognize it. You need to do this **before** you create your HyperFormula instance. Use the [`registerFunctionPlugin()`](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#registerfunctionplugin) method: ```js HyperFormula.registerFunctionPlugin(MyCustomPlugin, MyCustomPluginTranslations); ``` ### 6. Use your custom function in a formula Now, you're ready to use your GREET function in a formula. ```js // build a HyperFormula instance where you can use your function directly const hfInstance = HyperFormula.buildFromArray([['Anthony', '=GREET(A1)']]); // read the value of cell B1 const result = hfInstance.getCellValue({ sheet: 0, col: 1, row: 0 }); // cell B1 should evaluate to 'Anthony' console.log(result); ``` ### Full example The complete implementation of this custom function is also included in the [demo](#working-demo). ```js import { FunctionPlugin, FunctionArgumentType } from 'hyperformula'; export class MyCustomPlugin extends FunctionPlugin { greet(ast, state) { return this.runFunction( ast.args, state, this.metadata('GREET'), (firstName) => { return `👋 Hello, ${firstName}!`; } ); } } MyCustomPlugin.implementedFunctions = { GREET: { method: 'greet', parameters: [{ argumentType: FunctionArgumentType.STRING }], }, }; export const MyCustomPluginTranslations = { enGB: { GREET: 'GREET', }, enUS: { GREET: 'GREET', }, }; HyperFormula.registerFunctionPlugin(MyCustomPlugin, MyCustomPluginTranslations); ``` ## Advanced custom function example In a more advanced example, we'll create a custom function `DOUBLE_RANGE` that takes a range of numbers and returns the range of the same size with all the numbers doubled. ### Accept a range argument To accept a range argument, declare it in the `parameters` array: ```js MyCustomPlugin.implementedFunctions = { DOUBLE_RANGE: { method: 'doubleRange', parameters: [{ argumentType: FunctionArgumentType.RANGE }], }, }; ``` The range arguments are passed to the implementation method as instances of the [`SimpleRangeValue` class](https://hyperformula.handsontable.com/docs/api/classes/simplerangevalue.md): ```js export class MyCustomPlugin extends FunctionPlugin { doubleRange(ast, state) { return this.runFunction( ast.args, state, this.metadata('DOUBLE_RANGE'), (range) => { const rangeData = range.data; // ... } ); } } ``` ### Return an array of data A function can return multiple values in the form of an [array](https://hyperformula.handsontable.com/docs/guide/arrays.md). To do that, use [`SimpleRangeValue` class](https://hyperformula.handsontable.com/docs/api/classes/simplerangevalue.md): ```js export class MyCustomPlugin extends FunctionPlugin { doubleRange(ast, state) { return this.runFunction( ast.args, state, this.metadata('DOUBLE_RANGE'), (range) => { const resultArray = //... return SimpleRangeValue.onlyValues(resultArray); }, ); } } ``` A function that returns an array will cause the `VALUE!` error unless you also declare a companion method for the array size. To do that, provide the `sizeOfResultArrayMethod` that calculates the size of the result array based on the function arguments and returns an instance of the [`ArraySize` class](https://hyperformula.handsontable.com/docs/api/classes/arraysize.md). > When you use your custom function in a formula, `sizeOfResultArrayMethod` is triggered every time the formula changes, but not when the dependencies of the formula change. > This can cause unexpected behavior if the size of the result array depends on the values in the referenced cells. ```js export class MyCustomPlugin extends FunctionPlugin { doubleRangeResultArraySize(ast, state) { const arg = ast?.args?.[0]; if (arg?.start == null || arg?.end == null) { return ArraySize.scalar(); } const width = arg.end.col - arg.start.col + 1; const height = arg.end.row - arg.start.row + 1; return new ArraySize(width, height); } } MyCustomPlugin.implementedFunctions = { DOUBLE_RANGE: { method: 'doubleRange', sizeOfResultArrayMethod: 'doubleRangeResultArraySize', parameters: [{ argumentType: FunctionArgumentType.RANGE }], }, }; ``` ### Validate the arguments and return an error To handle invalid inputs, the custom function should return an instance of the [`CellError` class](https://hyperformula.handsontable.com/docs/api/classes/cellerror.md) with the relevant [error type](https://hyperformula.handsontable.com/docs/guide/types-of-errors.md). Errors are localized according to your [language settings](https://hyperformula.handsontable.com/docs/guide/localizing-functions.md). ```js if (rangeData.some((row) => row.some((val) => typeof rawValue !== 'number'))) { return new CellError( 'VALUE', 'Function DOUBLE_RANGE operates only on numbers.' ); } ``` > All HyperFormula [error types](https://hyperformula.handsontable.com/docs/guide/types-of-errors.md) support optional > custom error messages. Put them to good use: let your users know what caused the > error and how to avoid it in the future. ### Test your function To make sure your function works correctly, add unit tests. Use a JavaScript testing library of your choice. ```js it('works for a range of numbers', () => { HyperFormula.registerFunctionPlugin( MyCustomPlugin, MyCustomPluginTranslations ); const engine = HyperFormula.buildFromArray( [[1, '=DOUBLE_RANGE(A1:A3)'], [2], [3]], { licenseKey: 'gpl-v3' } ); expect(engine.getCellValue({ sheet: 0, row: 0, col: 1 })).toEqual(2); expect(engine.getCellValue({ sheet: 0, row: 1, col: 1 })).toEqual(4); expect(engine.getCellValue({ sheet: 0, row: 2, col: 1 })).toEqual(6); }); it('returns a VALUE error if the range argument contains a string', () => { HyperFormula.registerFunctionPlugin( MyCustomPlugin, MyCustomPluginTranslations ); const engine = HyperFormula.buildFromArray( [[1, '=DOUBLE_RANGE(A1:A3)'], ['I should not be here'], [3]], { licenseKey: 'gpl-v3' } ); expect(engine.getCellValueType({ sheet: 0, row: 0, col: 1 })).toEqual( 'ERROR' ); expect(engine.getCellValue({ sheet: 0, row: 0, col: 1 }).value).toEqual( '#VALUE!' ); }); ``` ## Working demo Explore the full working example on [Stackblitz](https://stackblitz.com/github/handsontable/hyperformula-demos/tree/3.4.x/custom-functions?v=). This demo contains the implementation of both the [`GREET`](#add-a-simple-custom-function) and [`DOUBLE_RANGE`](#advanced-custom-function-example) custom functions. ## Function options You can set the following options for your function: | Option | Type | Description | |-------------------------------------|---------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | `method` (required) | String | Name of the method that implements the custom function logic. | | `parameters` | Array | Specification of the arguments accepted by the function and their [validation options](#argument-validation-options). | | `sizeOfResultArrayMethod` | String | Name of the method that calculates the size of the result array. Not required for functions that never return an array. | | `returnNumberType` | String | If the function returns a numeric value, this option indicates how to interpret the returned number.
Possible values: `NUMBER_RAW, NUMBER_DATE, NUMBER_TIME, NUMBER_DATETIME, NUMBER_CURRENCY, NUMBER_PERCENT`.
Default: `NUMBER_RAW` | | `repeatLastArgs` | Number | For functions with a variable number of arguments: sets how many last arguments can be repeated indefinitely. Must be a positive integer no larger than the number of `parameters`. A value that is not a positive integer (`0`, a negative number, a fraction, `NaN`, or `Infinity`) is ignored, and the function keeps a fixed number of arguments. A value larger than the number of `parameters` is not supported and must not be used: the function then accepts an erratic set of argument counts instead of a repeating one (with one parameter and `repeatLastArgs: 5`, calls with 1, 2, 4, or 5 arguments are accepted, while 3 and 8 return `#N/A!`).
Default: `0` | | `expandRanges` | Boolean | `true`: ranges in the function's arguments are inlined to (possibly multiple) scalar arguments.
Default: `false` | | `isVolatile` | Boolean | `true`: the function is [volatile](https://hyperformula.handsontable.com/docs/guide/volatile-functions.md).
Default: `false` | | `isDependentOnSheetStructureChange` | Boolean | `true`: the function gets recalculated with each sheet shape change (e.g., when adding/removing rows or columns).
Default: `false` | | `doesNotNeedArgumentsToBeComputed` | Boolean | `true`: the function treats reference or range arguments as arguments that don't create dependency (other arguments are properly evaluated).
Default: `false` | | `enableArrayArithmeticForArguments` | Boolean | `true`: the function enables the [array arithmetic mode](https://hyperformula.handsontable.com/docs/guide/arrays.md) in its arguments and nested expressions.
Default: `false` | | `vectorizationForbidden` | Boolean | `true`: the function will never get [vectorized](https://hyperformula.handsontable.com/docs/guide/arrays.md#passing-arrays-to-scalar-functions-vectorization).
Default: `false` | | `arraySizeMethod` | String | Deprecated; Use `sizeOfResultArrayMethod` instead. | | `arrayFunction` | Boolean | Deprecated; Use `enableArrayArithmeticForArguments` instead. | You can set the options in the static `implementedFunctions` property of your function plugin: ```javascript MyCustomPlugin.implementedFunctions = { MY_FUNCTION: { method: 'myFunctionMethod', parameters: [ { // your argument validation options }, ], sizeOfResultArrayMethod: 'myArraySizeMethod', returnNumberType: 'NUMBER_RAW', repeatLastArgs: 0, expandRanges: false, isVolatile: false, isDependentOnSheetStructureChange: false, doesNotNeedArgumentsToBeComputed: false, enableArrayArithmeticForArguments: false, vectorizationForbidden: false, }, }; ``` ### Argument validation options You can set the following argument validation options: | Option | Type | Description | |---------------------------|-------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | `argumentType` (required) | `FunctionArgumentType` | Expected type of the function argument. See [possible values](#types-of-the-function-argument). | | `defaultValue` | `InternalScalarValue` or `RawScalarValue` | If set: if an argument is missing, its value defaults to `defaultValue`. | | `passSubtype` | Boolean | `true`: arguments are passed with full type information (e.g., for numbers: `Date` or `DateTime` or `Time` or `Currency` or `Percentage`).
Default: `false` | | `optionalArg` | Boolean | `true`: if an argument is missing, and no `defaultValue` is set, the argument defaults to `undefined` (instead of throwing an error).
Default: `false`
Setting this option to `true` is the same as setting `defaultValue` to `undefined`. | | `minValue` | Number | If set: numerical arguments need to be greater than or equal to `minValue`. | | `maxValue` | Number | If set: numerical arguments need to be less than or equal to `maxValue`. | | `lessThan` | Number | If set: numerical argument needs to be less than `lessThan`. | | `greaterThan` | Number | If set: numerical argument needs to be greater than `greaterThan`. | | `emptyAsDefault` | Boolean | `true`: an empty argument (e.g., `=FUNC(1,,3)`) is treated as missing and falls back to `defaultValue`. By default (`false`), empty arguments are coerced to the zero-value for their type (`0`, `FALSE`, or `""`). Requires `defaultValue` to be set. | In your function plugin, in the static `implementedFunctions` property, add an array called `parameters`: ```js MyCustomPlugin.implementedFunctions = { MY_FUNCTION: { method: 'myFunctionMethod', parameters: [ { argumentType: FunctionArgumentType.STRING, defaultValue: 10, passSubtype: false, optionalArg: false, minValue: 5, maxValue: 15, lessThan: 15, greaterThan: 5, }, ], }, }; ``` ### Types of the function argument | Type | Description | Example | |-----------|----------------------------------------------------------------------------------------------------------|----------------------------------------------| | `NUMBER` | A general numeric value such as floating-point number, date/time value, currency value or percent value. | `3`, `3.14`, `$100`, `1939/09/01`, `4:45 AM` | | `INTEGER` | An integer. | `42` | | `COMPLEX` | A text representing a complex value. | `"-3+4i"` | | `STRING` | A text value. | `"aaa"` | | `BOOLEAN` | A logical value. | `=TRUE()` | | `NOERROR` | Any non-range and non-error value. | All of the above | | `SCALAR` | Any non-range value. | All of the above | | `RANGE` | Multiple values as a range of cells or an inline array. | `A1:B100`, `{1, 2}` | | `ANY` | Any value. | All of the above | ### Handling missing arguments Both the `defaultValue` and `optionalArg` options let you decide what happens when a user doesn't pass enough valid arguments to your custom function. Setting a `defaultValue` for an argument always makes that argument optional. But, the `defaultValue` option automatically replaces any missing arguments with `defaultValue`, so your custom function is unaware of the actual number of valid arguments passed. If you don't want to set any `defaultValue` (because, for example, your function's behavior depends on the number of valid arguments passed), use the `optionalArg` setting instead. ## Function name translations You can add translations of your function's name in multiple languages. Your end users use the translated names to call your function inside formulas. In a separate object, define the translations of your custom functions' names in every language you want to support. Function names are case-insensitive, as they are all normalized to uppercase. > Even if you support just a single language, you still need to define a translation for it. ```js export const MyCustomPluginTranslations = { enGB: { // formula in English: `=MY_FUNCTION()` MY_FUNCTION: 'MY_FUNCTION', }, deDE: { // formula in German: `=MEINE_FUNKTION()` MY_FUNCTION: 'MEINE_FUNKTION', }, // repeat for all languages used in your system }; // register your function plugin and translations HyperFormula.registerFunctionPlugin(MyCustomPlugin, MyCustomPluginTranslations); ``` > Before using a translated function name, remember to > [register and set the language](https://hyperformula.handsontable.com/docs/guide/localizing-functions.md). ## Function aliases You can also assign multiple aliases to a single custom function. In your function plugin, in the static `aliases` property, add aliases for your function: ```js MyCustomPlugin.aliases = { // `=MY_ALIAS()` will work the same as `=MY_FUNCTION()` MY_ALIAS: 'MY_FUNCTION', }; ``` > For each alias of your function, define a translation, even if you want > to support only one language. > > ```js > MyCustomPlugin.translations = { > enGB: { > MY_FUNCTION: 'MY_FUNCTION', > MY_ALIAS: 'MY_ALIAS', > }, > }; > ``` --- ## Dependency graph URL: https://hyperformula.handsontable.com/docs/guide/dependency-graph # Dependency graph For accuracy and performance, HyperFormula needs to process cells in a correct and optimal order. For example: in formula `C1=A1+B1`, cells `A1` and `B1` need to be evaluated before `C1`. To find the right order of processing cells, HyperFormula builds a [dependency graph](https://en.wikipedia.org/wiki/Dependency_graph) which captures relationships between cells. ## Cells in the dependency graph In the dependency graph, each spreadsheet cell is represented by a separate node. Nodes `X` and `Y` are connected by a directed edge if and only if the formula in cell `X` includes the address of cell `Y`. ## Ranges in the dependency graph If formulas in the spreadsheet include ranges, each range is represented by a separate node. The dependency graph may also contain ranges that are not used by any formula, for better optimization. Range nodes can be connected to cell nodes and to other range nodes. ![](https://hyperformula.handsontable.com/docs/ranges.png) ### Optimizations for large ranges In many applications, you may want to use formulas that depend on a large range of cells. For example, the formula `SUM(A1:A100)+B5` depends on 101 cells, and it needs to be represented in the dependency graph accordingly. An interesting optimization challenge arises when there are multiple cells that depend on large ranges. For example, consider the following use-case: * `B1=SUM(A1:A1)` * `B2=SUM(A1:A2)` * `B3=SUM(A1:A3)` * ... * `B100=SUM(A1:A100)` The problem is that there are `1+2+3+...+100 = 5050` dependencies for such a simple situation. In general, for `n` such rows, the engine would need to add `n*(n+1)/2 ≈ n²` arcs in the graph. This value grows much faster than the size of data, meaning the engine would not be able to handle large data sets efficiently. A solution to this problem comes from the observation that there is a way to rewrite the above formulas to equivalent ones, which will be more compact to represent. Specifically, the following formulas would compute the same values as the ones provided previously: * `B1=A1` * `B2=B1+A2` * `B3=B2+A3` * ... * `B100=B99+A100` Whereas this example is too specialized to provide a useful rule for optimization, it shows the main idea behind efficient handling of multiple ranges: **to represent a range as a composition of smaller ranges.** In the adopted implementation, every time the engine encounters a range, say `B5:D20`, it checks if it has already considered the range which is one row shorter. In this example, it would be `B5:D19`. If so, then it represents `B5:D20` as the composition of a range `B5:D19` and three cells in the last row: `B20`,`C20` and `D20`. ![](https://hyperformula.handsontable.com/docs/ranges.png) More generally, the result of any associative operation is obtained as the result of operations for these small rows. There are many examples of such associative functions: `SUM`, `MAX`, `COUNT`, etc. As one range can be used in different formulas, we can reuse its node and avoid duplicating the work during computation. ## Getting the immediate precedents of a cell or a range To get the immediate precedents of a cell or a range (the in-neighbors of the cell node or the range node), use the [`getCellPrecedents()`](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.html#getcellprecedents) method: ```js const hfInstance = HyperFormula.buildFromArray([[ '1', '2', '=A1', '=B1+C1' ]]); hfInstance.getCellPrecedents({ sheet: 0, col: 3, row: 0 }); // returns [{ sheet: 0, col: 1, row: 0 }, { sheet: 0, col: 2, row: 0 }] ``` ## Getting the immediate dependents of a cell or a range To get the immediate dependents of a cell or a range (the out-neighbors of the cell node or the range node), use the [`getCellDependents()`](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.html#getcelldependents) method: ```js const hfInstance = HyperFormula.buildFromArray([[ '1', '=A1', '=A1+B1', '=B1+C1' ]]) hfInstance.getCellDependents({ sheet: 0, col: 0, row: 0 }) // returns [{ sheet: 0, col: 1, row: 0 }, { sheet: 0, col: 2, row: 0 }] ``` ## Getting all precedents of a cell or a range To get all precedents of a cell or a range (all precedent nodes reachable from the cell node or the range node), use the [`getCellPrecedents()`](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.html#getcellprecedents) method to implement a [Breadth-first search (BFS)](https://en.wikipedia.org/wiki/Breadth-first_search) algorithm:
    
      AllCellPrecedents={start}
      let Q be an empty queue
      Q.enqueue(start)
      while Q is not empty do
        cell := Q.dequeue()
        S := getCellPrecedents(cell)
        for all cells c in S do:
          if c is not in AllCellPrecedents then:
            insert w to AllCellPrecedents
            Q.enqueue(c)
    
  
## Getting all dependents of a cell or a range To get all dependents of a cell or a range (all dependent nodes reachable from the cell node or the range node), use the [`getCellDependents()`](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.html#getcelldependents) method to implement a [Breadth-first search (BFS)](https://en.wikipedia.org/wiki/Breadth-first_search) algorithm:
    
      AllCellDependents={start}
      let Q be an empty queue
      Q.enqueue(start)
      while Q is not empty do
        cell := Q.dequeue()
        S := getCellDependents(cell)
        for all cells c in S do:
          if c is not in AllCellDependents then:
            insert w to AllCellDependents
            Q.enqueue(c)
    
  
--- ## File import URL: https://hyperformula.handsontable.com/docs/guide/file-import # File import Import XLSX and CSV files into HyperFormula. ## Overview HyperFormula has no built-in file import functionality. But its [factory methods](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#factories) use standard JavaScript data types, for easy integration with any way of importing data. ## Import CSV files To import CSV files, use a third-party [CSV parser](https://www.npmjs.com/search?q=csv) (e.g., [PapaParse](https://www.npmjs.com/package/papaparse) or [csv-parse](https://www.npmjs.com/package/csv-parse)). Then pass the result to HyperFormula as a JavaScript array. ## Import XLSX files To import XLSX files, use a third-party [XLSX parser](https://www.npmjs.com/search?q=xlsx) (e.g., [ExcelJS](https://www.npmjs.com/package/exceljs) or [xlsx](https://www.npmjs.com/package/xlsx)). Then pass the result to HyperFormula as a JavaScript array. ### Example: Import XLSX files in Node This example uses [ExcelJS](https://www.npmjs.com/package/exceljs) to import XLSX files into HyperFormula. See full example on [GitHub](https://github.com/handsontable/hyperformula-demos/tree/3.4.x/read-excel-file). ```js const ExcelJS = require('exceljs'); const { HyperFormula } = require('hyperformula'); async function run(filename) { const xlsxWorkbook = await readXlsxWorkbookFromFile(filename); const sheetsAsJavascriptArrays = convertXlsxWorkbookToJavascriptArrays(xlsxWorkbook) const hf = HyperFormula.buildFromSheets(sheetsAsJavascriptArrays, { licenseKey: 'gpl-v3' }); console.log('Formulas:', hf.getSheetSerialized(0)); console.log('Values: ', hf.getSheetValues(0)); } async function readXlsxWorkbookFromFile(filename) { const workbook = new ExcelJS.Workbook(); await workbook.xlsx.readFile(filename); return workbook; } function convertXlsxWorkbookToJavascriptArrays(workbook) { const workbookData = {}; workbook.eachSheet((worksheet) => { const sheetDimensions = worksheet.dimensions const sheetData = []; for (let rowNum = sheetDimensions.top; rowNum <= sheetDimensions.bottom; rowNum++) { const rowData = []; for (let colNum = sheetDimensions.left; colNum <= sheetDimensions.right; colNum++) { const cell = worksheet.getCell(rowNum, colNum) const cellData = cell.formula ? `=${cell.formula}` : cell.value; rowData.push(cellData); } sheetData.push(rowData); } workbookData[worksheet.name] = sheetData; }) return workbookData; } run('sample_file.xlsx'); ``` --- ## Internationalization features URL: https://hyperformula.handsontable.com/docs/guide/i18n-features # Internationalization features Configure HyperFormula to match the languages and regions of your users. **Contents:** ## Function names and errors Each of HyperFormula's [built-in functions](https://hyperformula.handsontable.com/docs/guide/built-in-functions.md) and [errors](https://hyperformula.handsontable.com/docs/guide/types-of-errors.md) is available in [18 languages](https://hyperformula.handsontable.com/docs/guide/localizing-functions.md#list-of-supported-languages). You can easily [switch between languages](https://hyperformula.handsontable.com/docs/guide/localizing-functions.md) ([`language`](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#language)). When adding a [custom function](https://hyperformula.handsontable.com/docs/guide/custom-functions.md), you can define the function's [name](https://hyperformula.handsontable.com/docs/guide/custom-functions.md#_3-add-your-function-s-names) in every language that you support. To support more languages, add a [custom language pack](https://hyperformula.handsontable.com/docs/guide/localizing-functions.md). ## Date and time formats To match a region's calendar conventions, you can set multiple date formats ([`dateFormats`](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#dateformats)) and time formats ([`timeFormats`](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#timeformats)). By default, HyperFormula uses the European date and time formats. [You can easily change them](https://hyperformula.handsontable.com/docs/guide/date-and-time-handling.md#example). You can also add custom ways of [handling dates and times](https://hyperformula.handsontable.com/docs/guide/date-and-time-handling.md#custom-date-and-time-handling). ## Number format To match a region's number format, configure HyperFormula's decimal separator ([`decimalSeparator`](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#decimalseparator)) and thousands separator ([`thousandSeparator`](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#thousandseparator)). By default, HyperFormula uses the European number format (`1000000.00`): ```js decimalSeparator: '.', // set by default thousandSeparator: '', // set by default ``` To use the US number format (`1,000,000.00`), set: ```js decimalSeparator: '.', // set by default thousandSeparator: ',', ``` > In HyperFormula, both [`decimalSeparator`](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#decimalseparator) and [`thousandSeparator`](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#thousandseparator) must be different from [`functionArgSeparator`](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#functionargseparator). > In some cases it might cause compatibility issues with other spreadsheets, e.g., [Microsoft Excel](https://hyperformula.handsontable.com/docs/guide/compatibility-with-microsoft-excel.md#separators) or [Google Sheets](https://hyperformula.handsontable.com/docs/guide/compatibility-with-google-sheets.md#separators). ## Currency symbol To match your users' currency, configure recognized currency symbols and (optionally) custom `TEXT` output formatting. Both sides are covered in the dedicated [Currency handling](https://hyperformula.handsontable.com/docs/guide/currency-handling.md) guide. ## String comparison rules To make sure that language-sensitive strings are compared in line with your users' language (e.g., `Préservation` vs. `Preservation`), set HyperFormula's [string comparison rules](https://hyperformula.handsontable.com/docs/guide/types-of-operators.md#comparing-strings) ([`localeLang`](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#localelang)). The value of [`localeLang`](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#localelang) is processed by [`Intl.Collator`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/Collator), a JavaScript standard object. The default setting is: ```js localeLang: 'en', // set by default ``` To set the `en-US` string comparison rules, set: ```js localeLang: 'en-US', ``` To further customize string comparison rules, use these options: - [`caseSensitive`](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#casesensitive) - [`accentSensitive`](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#accentsensitive) - [`caseFirst`](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#casefirst) - [`ignorePunctuation`](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#ignorepunctuation) ## Compatibility with other spreadsheet software For information on compatibility with locale-dependent syntax in other spreadsheet software, see: - [Compatibility with Microsoft Excel](https://hyperformula.handsontable.com/docs/guide/compatibility-with-microsoft-excel.md) - [Compatibility with Google Sheets](https://hyperformula.handsontable.com/docs/guide/compatibility-with-google-sheets.md) ## `en-US` configuration This configuration aligns HyperFormula with the `en-US` locale. Due to the configuration of [separators](#number-format), it might not be fully compatible with formulas coming from other spreadsheet software. ```js language: 'enUS', dateFormats: ['MM/DD/YYYY', 'MM/DD/YY', 'YYYY/MM/DD'], timeFormats: ['hh:mm', 'hh:mm:ss.sss'], // set by default decimalSeparator: '.', // set by default thousandSeparator: ',', functionArgSeparator: ';', // might cause incompatibility with other spreadsheets currencySymbol: ['$', 'USD'], localeLang: 'en-US', ``` ## `en-US` demo This demo shows HyperFormula configured for the `en-US` locale. --- ## Integration with LangChain/LangGraph URL: https://hyperformula.handsontable.com/docs/guide/integration-with-langchain # Integration with LangChain/LangGraph A [LangChain.js](https://js.langchain.com/) / [LangGraph](https://langchain-ai.github.io/langgraphjs/) tool that gives your agents deterministic spreadsheet and formula computation — backed by HyperFormula's Excel-compatible engine. > **Not available yet — coming soon** > > This integration is on our roadmap and **cannot be installed or used today**. The API shown below is a preview and may still change before the first release. > > If you'd like to try it, [join the early access list](https://2fmjvg.share-eu1.hsforms.com/2e6drCkuLTn-1RuiYB91eJA) — we'll ping you the moment the first beta is ready, and your sign-up directly tells us how strongly to prioritize this integration. ## What it does - **Evaluate formulas deterministically** — your agent runs any Excel-compatible formula through HyperFormula instead of asking the LLM to do math. Results are exact, reproducible, and auditable. - **Read and write cells and ranges** — the agent inspects, populates, or modifies sheet data through typed tool calls. - **Trace dependencies** — precedents and dependents are surfaced so the agent can explain how every value was derived. - **400+ built-in functions out of the box** — the agent has access to the full Excel-compatible function set (`SUM`, `VLOOKUP`, `IRR`, `INDEX/MATCH`, and the rest), no implementation work required. ## Example Wiring HyperFormula into a LangGraph ReAct agent: ```js import { ChatOpenAI } from '@langchain/openai'; import { createReactAgent } from '@langchain/langgraph/prebuilt'; import HyperFormula from 'hyperformula'; import { createSpreadsheetTools } from 'hyperformula/langchain'; const hf = HyperFormula.buildFromArray([ ['Revenue', 100], ['Cost', 60], ['Profit', '=B1-B2'], ]); const agent = createReactAgent({ llm: new ChatOpenAI({ model: 'gpt-4o' }), tools: createSpreadsheetTools(hf), }); await agent.invoke({ messages: [ { role: 'user', content: 'What drives the profit number, and what happens if revenue doubles?' }, ], }); ``` A single import, one entry in `tools`, and the agent can evaluate formulas, read ranges, and edit cells through LangChain — without inventing numbers. ## Use cases - **Explain the spreadsheet** — ask the agent what a workbook does, which cells are inputs, and how each output is derived; get answers grounded in real formula evaluation. - **What-if scenarios and forecasting** — the agent tweaks assumptions and reports how downstream results change, deterministically. - **Validate and clean data** — the agent scans ranges for errors, missing values, or inconsistencies and fixes them in place. - **Generate formulas from natural language** — the agent translates a plain-English calculation into a verified, working Excel formula. - **Financial modeling and reporting** — NPV, IRR, amortization, KPI rollups, and other quantitative workflows where the answer must be exact and auditable. ## Get early access > **Be the first to try it** > > We're actively building this integration. Drop your email and we'll notify you the moment the first beta lands — so you can try it before the public release. > > [Join the early access list →](https://2fmjvg.share-eu1.hsforms.com/2e6drCkuLTn-1RuiYB91eJA) ## Links - [LangChain.js documentation](https://js.langchain.com/) - [LangGraph documentation](https://langchain-ai.github.io/langgraphjs/) - [HyperFormula on GitHub](https://github.com/handsontable/hyperformula) - [HyperFormula on npm](https://www.npmjs.com/package/hyperformula) - [Built-in functions](https://hyperformula.handsontable.com/docs/guide/built-in-functions.md) - [Custom functions](https://hyperformula.handsontable.com/docs/guide/custom-functions.md) --- ## Integration with React URL: https://hyperformula.handsontable.com/docs/guide/integration-with-react # Integration with React The HyperFormula API is identical in a React app and in plain JavaScript. This guide demonstrates how HyperFormula is integrated with the React component tree and how its lifecycle maps to React hooks. Install with `npm install hyperformula`. For other options, see the [client-side installation](https://hyperformula.handsontable.com/docs/guide/client-side-installation.md) section. > **TypeScript** > > All examples use TypeScript. Remove the type annotations to use plain JavaScript. ## Basic usage Hold the HyperFormula instance in a `useRef` so it survives re-renders. Initialize it inside `useEffect` and release it in the cleanup function. Use `useState` to toggle between raw formulas and computed values. ```tsx import { useEffect, useRef, useState } from 'react'; import { HyperFormula } from 'hyperformula'; import type { CellValue } from 'hyperformula'; export default function SpreadsheetComponent() { const hfRef = useRef(null); const [values, setValues] = useState([]); useEffect(() => { const hf = HyperFormula.buildFromArray( [ [1, 2, '=A1+B1'], // your data rows go here ], { licenseKey: 'gpl-v3', // more configuration options go here } ); hfRef.current = hf; return () => { hf.destroy(); hfRef.current = null; }; }, []); function runCalculations() { if (!hfRef.current) return; setValues(hfRef.current.getSheetValues(0)); } function reset() { setValues([]); } return ( <> {values.length > 0 && ( {values.map((row, r) => ( {row.map((cell, c) => ( ))} ))}
{String(cell ?? '')}
)} ); } ``` ## `React.StrictMode` double invocation In development, React runs effects twice (mount → unmount → mount) to surface cleanup bugs. The pattern above is correct for StrictMode because `destroy()` runs before the re-mount creates a new instance, so no work leaks between the two lifecycles. Do not switch to a module-scoped singleton as a workaround — it will break StrictMode semantics. ## Server-side rendering (Next.js App Router) The component above is already SSR-safe — the engine is constructed in `useEffect`, which never runs on the server. If you still want to keep HyperFormula out of the initial JS bundle sent to the browser (it is a few hundred kB), wrap it in a client-only dynamic import. In the App Router, `dynamic(..., { ssr: false })` is only allowed inside a client component. Put the dynamic call in a `'use client'` wrapper and import the wrapper from your server page: ```tsx // app/spreadsheet/SpreadsheetLazy.tsx 'use client'; import dynamic from 'next/dynamic'; const SpreadsheetComponent = dynamic( () => import('./SpreadsheetComponent'), { ssr: false } ); export default function SpreadsheetLazy() { return ; } ``` ```tsx // app/spreadsheet/page.tsx ← server component, no 'use client' import SpreadsheetLazy from './SpreadsheetLazy'; export default function Page() { return ; } ``` In the Pages Router, the same `dynamic(..., { ssr: false })` call works directly in the page file without a wrapper. ## Next steps - [Configuration options](https://hyperformula.handsontable.com/docs/guide/configuration-options.md) — full list of `buildFromArray` / `buildEmpty` options - [Basic operations](https://hyperformula.handsontable.com/docs/guide/basic-operations.md) — CRUD on cells, rows, columns, sheets - [Advanced usage](https://hyperformula.handsontable.com/docs/guide/advanced-usage.md) — multi-sheet workbooks, named expressions - [Custom functions](https://hyperformula.handsontable.com/docs/guide/custom-functions.md) — register your own formulas ## Demo For a more advanced example, check out the [React demo on Stackblitz](https://stackblitz.com/github/handsontable/hyperformula-demos/tree/3.4.x/react-demo?v=). --- ## Integration with Angular URL: https://hyperformula.handsontable.com/docs/guide/integration-with-angular # Integration with Angular The HyperFormula API is identical in an Angular app and in plain JavaScript. This guide demonstrates how HyperFormula is integrated with an Angular app (typically as an injectable service), how it is cleaned up, and how you bridge its values into the change-detection cycle. Install with `npm install hyperformula`. For other options, see the [client-side installation](https://hyperformula.handsontable.com/docs/guide/client-side-installation.md) section. ## Basic usage (modern Angular) For modern Angular (v20+) we recommend a service that exposes a **signal**, **standalone** components, the new control flow (`@if` / `@for`) and **zoneless** change detection. Wrap the engine in an `@Injectable` service and expose its values as a read-only signal; the template reads the signal directly and Angular refreshes the view whenever it changes. ```typescript // spreadsheet.service.ts import { Injectable, signal } from '@angular/core'; import { HyperFormula, type CellValue } from 'hyperformula'; @Injectable({ providedIn: 'root' }) export class SpreadsheetService { private readonly hf: HyperFormula; private readonly _values = signal([]); readonly values = this._values.asReadonly(); constructor() { this.hf = HyperFormula.buildFromArray( [ [1, 4, '=A1+B1'], // your data rows go here ], { licenseKey: 'gpl-v3', // more configuration options go here } ); this._values.set(this.hf.getSheetValues(0)); } calculate() { this._values.set(this.hf.getSheetValues(0)); } reset() { this._values.set([]); } } ``` Inject the service with `inject()`, expose its signal, and use `OnPush` change detection: ```typescript // spreadsheet.component.ts import { ChangeDetectionStrategy, Component, inject } from '@angular/core'; import { SpreadsheetService } from './spreadsheet.service'; @Component({ selector: 'app-spreadsheet', templateUrl: './spreadsheet.component.html', changeDetection: ChangeDetectionStrategy.OnPush, }) export class SpreadsheetComponent { private readonly spreadsheetService = inject(SpreadsheetService); readonly values = this.spreadsheetService.values; runCalculations() { this.spreadsheetService.calculate(); } reset() { this.spreadsheetService.reset(); } } ``` Read the signal in the template with the new control flow: ```html @if (values().length) { @for (row of values(); track $index) { @for (cell of row; track $index) { } }
{{ cell }}
} ``` Bootstrap the app with zoneless change detection: ```typescript // main.ts import { provideZonelessChangeDetection } from '@angular/core'; import { bootstrapApplication } from '@angular/platform-browser'; import { AppComponent } from './app/app.component'; bootstrapApplication(AppComponent, { providers: [provideZonelessChangeDetection()], }).catch((err) => console.error(err)); ``` > Signals require Angular 16+, the new control flow Angular 17+, and `provideZonelessChangeDetection` Angular 20+. For earlier versions, use the `BehaviorSubject` approach below. ## Basic usage (older Angular versions) For broader compatibility — including Angular versions without signals or zoneless change detection — wrap the engine in an `@Injectable` service backed by a `BehaviorSubject`. Components subscribe to the observable with the `async` pipe, which handles subscription cleanup automatically. ```typescript // spreadsheet.service.ts import { Injectable } from '@angular/core'; import { BehaviorSubject } from 'rxjs'; import { HyperFormula, type CellValue } from 'hyperformula'; @Injectable({ providedIn: 'root' }) export class SpreadsheetService { private readonly hf: HyperFormula; private readonly _values = new BehaviorSubject([]); readonly values$ = this._values.asObservable(); constructor() { this.hf = HyperFormula.buildFromArray( [ [1, 4, '=A1+B1'], // your data rows go here ], { licenseKey: 'gpl-v3', // more configuration options go here } ); this._values.next(this.hf.getSheetValues(0)); } calculate() { this._values.next(this.hf.getSheetValues(0)); } reset() { this._values.next([]); } } ``` Consume the service from a component and bind `values$ | async` in the template. The component below is **standalone** (the default since Angular 17) and imports `CommonModule` directly, so it works without an `NgModule`. The structural directives `*ngIf` / `*ngFor` and the `async` pipe all come from `CommonModule`: ```typescript // spreadsheet.component.ts import { Component } from '@angular/core'; import { CommonModule } from '@angular/common'; import { Observable } from 'rxjs'; import { SpreadsheetService } from './spreadsheet.service'; import { type CellValue } from 'hyperformula'; @Component({ selector: 'app-spreadsheet', standalone: true, imports: [CommonModule], templateUrl: './spreadsheet.component.html', }) export class SpreadsheetComponent { values$: Observable; constructor(private spreadsheetService: SpreadsheetService) { this.values$ = this.spreadsheetService.values$; } runCalculations() { this.spreadsheetService.calculate(); } reset() { this.spreadsheetService.reset(); } } ``` ```html
{{ cell }}
``` ### `NgModule`-based apps (Angular 13 and older) Standalone components require Angular 14 or newer. If your project still uses `NgModule`s (or targets Angular 13 or older), drop the `standalone: true` and `imports` fields from the component above, then declare it in your module and import `CommonModule` there instead: ```typescript // app.module.ts @NgModule({ declarations: [SpreadsheetComponent], imports: [BrowserModule, CommonModule], }) export class AppModule {} ``` The service and template above are unchanged — only the way the component is wired up differs. ## Notes ### Provider scope The notes below apply to both the modern and older approaches — provider scope and cleanup depend on how the service is registered, not on whether it exposes a signal or a `BehaviorSubject`. `providedIn: 'root'` makes the service an application-wide singleton — suitable when a single HyperFormula instance is shared across the app. For per-feature or per-component instances (for example, several independent reports on one screen), provide the service at the component level via `providers: [SpreadsheetService]`; the service is then created and destroyed alongside the component. ### Cleanup Root-scoped services live for the application's full lifetime — `ngOnDestroy` fires only at app shutdown. If you scope the service to a component (`providers: [SpreadsheetService]`), implement `OnDestroy` to release the engine: ```typescript import { Injectable, OnDestroy } from '@angular/core'; @Injectable() export class SpreadsheetService implements OnDestroy { // ... ngOnDestroy() { this.hf.destroy(); } } ``` ## Server-side rendering (Angular Universal) The service above is already SSR-safe — HyperFormula has no browser-only API dependency. To skip the (otherwise wasted) server-side instantiation in Angular Universal, gate the engine init with [`isPlatformBrowser`](https://angular.dev/api/common/isPlatformBrowser) from `@angular/common`. ## Next steps - [Configuration options](https://hyperformula.handsontable.com/docs/guide/configuration-options.md) — full list of `buildFromArray` / `buildEmpty` options - [Basic operations](https://hyperformula.handsontable.com/docs/guide/basic-operations.md) — CRUD on cells, rows, columns, sheets - [Advanced usage](https://hyperformula.handsontable.com/docs/guide/advanced-usage.md) — multi-sheet workbooks, named expressions - [Custom functions](https://hyperformula.handsontable.com/docs/guide/custom-functions.md) — register your own formulas ## Demo For a more advanced example, check out the [Angular demo on Stackblitz](https://stackblitz.com/github/handsontable/hyperformula-demos/tree/3.4.x/angular-demo?v=). --- ## Integration with Svelte URL: https://hyperformula.handsontable.com/docs/guide/integration-with-svelte # Integration with Svelte The HyperFormula API is identical in a Svelte app and in plain JavaScript. This guide demonstrates how HyperFormula integrates with the Svelte component's lifecycle and how you bridge its values into Svelte's reactivity. Install with `npm install hyperformula`. For other options, see the [client-side installation](https://hyperformula.handsontable.com/docs/guide/client-side-installation.md) section. > **SvelteKit SSR** > > The primary snippet below assumes a browser environment. If you use SvelteKit with default SSR, skip to [Server-side rendering](#server-side-rendering-sveltekit) — `HyperFormula.buildFromArray` at ` {#if result !== null}

Result: {result}

{/if} {#each data as row, r} {#each row as cell, c} {/each} {/each}
{#if hf.doesCellHaveFormula({ sheet: sheetId, row: r, col: c })} {hf.getCellFormula({ sheet: sheetId, row: r, col: c })} {:else} {hf.getCellValue({ sheet: sheetId, row: r, col: c })} {/if}
``` ## Server-side rendering (SvelteKit) In SvelteKit, top-level statements in ` {#if result !== null}

Result: {result}

{/if} ``` ## Next steps - [Configuration options](https://hyperformula.handsontable.com/docs/guide/configuration-options.md) — full list of `buildFromArray` / `buildEmpty` options - [Basic operations](https://hyperformula.handsontable.com/docs/guide/basic-operations.md) — CRUD on cells, rows, columns, sheets - [Advanced usage](https://hyperformula.handsontable.com/docs/guide/advanced-usage.md) — multi-sheet workbooks, named expressions - [Custom functions](https://hyperformula.handsontable.com/docs/guide/custom-functions.md) — register your own formulas ## Demo For a more advanced example, check out the [Svelte demo on Stackblitz](https://stackblitz.com/github/handsontable/hyperformula-demos/tree/3.4.x/svelte-demo?v=). --- ## Integration with Vue URL: https://hyperformula.handsontable.com/docs/guide/integration-with-vue # Integration with Vue The HyperFormula API is identical in a Vue 3 app and in plain JavaScript. This guide demonstrates how HyperFormula integrates with the Vue reactivity system and how to surface its values in the template. Install with `npm install hyperformula`. For other options, see the [client-side installation](https://hyperformula.handsontable.com/docs/guide/client-side-installation.md) section. > **TypeScript** > > All examples use TypeScript. Remove the type annotations to use plain JavaScript. ## Basic usage Pass the HyperFormula instance through Vue's [`markRaw`](https://vuejs.org/api/reactivity-advanced.html#markraw) to opt it out of the reactivity system (see [Troubleshooting](#vue-reactivity-issues) below for why this matters). Hold derived data in `ref` so the template updates when you reassign the ref's `.value`. ```vue ``` `hf` is marked raw so Vue never proxies it — `values` is the only reactive piece. To mutate data, call any HyperFormula method (e.g. `setCellContents`) then reassign `values.value` to trigger a re-render. See [Basic operations](https://hyperformula.handsontable.com/docs/guide/basic-operations.md) for the full mutation API. ## Server-side rendering (Nuxt) HyperFormula has no browser-only API dependency. To skip server-side computation, wrap the component with ``. ## Troubleshooting ### Vue reactivity issues If you encounter an error like ``` Uncaught TypeError: Cannot read properties of undefined (reading 'licenseKeyValidityState') ``` it means that Vue's reactivity system tried to deeply observe the HyperFormula instance. Vue wraps reactive objects in a `Proxy` that intercepts every property access; when that proxy reaches a non-trivial instance with its own internal state, identity checks and lazy-initialized maps break. The fix is to opt the instance out of reactivity with [`markRaw`](https://vuejs.org/api/reactivity-advanced.html#markraw): ```typescript import { markRaw } from "vue"; import { HyperFormula } from "hyperformula"; const hf = markRaw( HyperFormula.buildEmpty({ licenseKey: "gpl-v3", }), ); ``` `shallowRef` is not a substitute: it skips proxying only at the top level, so writing the instance into a nested reactive structure (Pinia state, `reactive({...})`) will still wrap it. Always pass the instance itself through `markRaw` before putting it anywhere Vue can reach. ## Next steps - [Configuration options](https://hyperformula.handsontable.com/docs/guide/configuration-options.md) — full list of `buildFromArray` / `buildEmpty` options - [Basic operations](https://hyperformula.handsontable.com/docs/guide/basic-operations.md) — CRUD on cells, rows, columns, sheets - [Advanced usage](https://hyperformula.handsontable.com/docs/guide/advanced-usage.md) — multi-sheet workbooks, named expressions - [Custom functions](https://hyperformula.handsontable.com/docs/guide/custom-functions.md) — register your own formulas ## Demo For a more advanced example, check out the [Vue 3 demo on Stackblitz](https://stackblitz.com/github/handsontable/hyperformula-demos/tree/3.4.x/vue-3-demo?v=). > This demo uses the [Vue 3](https://v3.vuejs.org/) framework. If you are looking for an example using Vue 2, check out the [code on GitHub](https://github.com/handsontable/hyperformula-demos/tree/2.5.x/vue-demo). --- ## Key concepts URL: https://hyperformula.handsontable.com/docs/guide/key-concepts # Key concepts ## High-level design diagram ![](https://hyperformula.handsontable.com/docs/hf-high-lvl-diagram.svg) Data processing consists of three phases. ## Phase 1. Parsing and construction of ASTs Formulas need to be parsed and represented as a so-called [Abstract Syntax Tree](https://en.wikipedia.org/wiki/Abstract_syntax_tree) (AST). For example, the AST for `7*3-SIN(A5)` will look similar to this graph: ![](https://hyperformula.handsontable.com/docs/ast.png) ## Phase 2. Construction of the dependency graph HyperFormula needs to understand the relationship between cells and find the right order of processing them. For example, for a sample formula `C1=A1+B1`, it needs to process first `A1` and `B1` and then `C1`. Such an order of processing cells - also known as [topological order](https://en.wikipedia.org/wiki/Topological_sorting) exists if and only if there is no cycle in the dependency graph. There can be many such orders, like so: ![](https://hyperformula.handsontable.com/docs/topsort.png) Read more about the [dependency graph](https://hyperformula.handsontable.com/docs/guide/dependency-graph.md). ## Phase 3. Evaluation It is crucial to evaluate cells efficiently. For simple expressions, there is not much room for maneuver, but spreadsheet-like data sets definitely need more attention. ![](https://hyperformula.handsontable.com/docs/sample-sheet.png) ## Grammar For parsing purposes, the library uses the [Chevrotain](http://sap.github.io/chevrotain/docs/) parser, which turns out to be more efficient than popular [Jison](https://zaa.ch/jison/). The language of acceptable formulas is described with an LL(k) grammar using Chevrotain Domain Specific Language. See details of the grammar in the [FormulaParser](https://github.com/handsontable/hyperformula/blob/master/src/parser/FormulaParser.ts) file. ## Repetitive ASTs A first natural optimization could concern cells in a spreadsheet which store exactly the same formulas. For such cells, there is no point in constructing and storing two ASTs which would be the same in the end. Instead, HyperFormula can look up the particular formula that has already been parsed and reuse the constructed AST. A scenario with repeating formulas is somewhat idealized; in practice, most formulas will be distinct. Fortunately, formulas in spreadsheets usually have a defined structure and share some patterns. Neighboring cells often contain similar formulas, especially after filling cells using a fill handle (that little square in the bottom right corner of a visual cell representation). For example: * `B2=A2-C2+B1` * `B3=A3-C3+B2` * `B4=A4-C4+B3` * `B5=A5-C5+B4` * and so on... Although the exact ASTs for these formulas are different, they share a common pattern. A very useful approach here is to rewrite a formula using relative addressing of cells. ## Relative addressing HyperFormula stores the offset to the referenced formula. For example `B2=B5 + C1` can be rewritten as `B2=[B+0][2+3] + [B+1][2-1]` or in short `B2=[0][+3] + [+1][-1]`. Then, the above example with `B2,B3`, and `B4` can be rewritten as `B2=B3=B4=[-1][0] - [1][0] + [0][-1]`. Now the three cells have exactly the same formulas. By using relative addressing HyperFormula unifies formulas from many cells. Thanks to that, there is no need to parse them all over again. Also, with this approach, the engine doesn't lose any information because by knowing the absolute address of a cell and its formula with relative addresses, it can easily retrieve the absolute addresses and compute the result. ## Laziness of CRUD operations After each CRUD operation, like adding a row or column or moving cells, references inside formulas may need to be changed. For example, after adding a row, we need to shift all references in the formulas below like so: ![](https://hyperformula.handsontable.com/docs/crud-operations.png) In more complex sheets this can lead to similar transformations in many formulas at once. On the other hand, such operations do not require an immediate transformation of all the affected formulas. Instead of transforming all of them at once, HyperFormula remembers the history of the operations and postpones the transformations until the formula needs to be displayed or recalculated. --- ## Known limitations URL: https://hyperformula.handsontable.com/docs/guide/known-limitations # Known limitations This page lists the known limitations of HyperFormula at its current development stage: * Node.js versions older than 13 don't properly compare culture-insensitive strings. HyperFormula requires the full International Components for Unicode (ICU) to be supported. [Learn more](https://nodejs.org/api/intl.html#intl_embed_the_entire_icu_full_icu) * Multiple workbooks are not supported. One instance of HyperFormula can handle only one workbook with multiple worksheets at a time. * For cycle detection, all possible dependencies between cells are taken into account, even if some of them could be omitted after the full evaluation of expressions and condition statements. The most prominent example of this behavior is the "IF" function which returns a cycle error regardless of whether TRUE or FALSE causes a circular reference. * Named ranges behave differently depending on where they are used in a formula. For details, see [Using named ranges in formulas](https://hyperformula.handsontable.com/docs/guide/named-expressions.md#using-named-ranges-in-formulas). * [Custom functions](https://hyperformula.handsontable.com/docs/guide/custom-functions.md) don't automatically recalculate the size of their [result arrays](https://hyperformula.handsontable.com/docs/guide/custom-functions.md#return-an-array-of-data) when the formula dependencies change. * There is no relative referencing in named ranges. * The library doesn't offer (at least not yet) the following features: * 3D references * Constant arrays * Dynamic arrays * Asynchronous functions * Structured references ("Tables") * Relative named expressions * Functions cannot use UI metadata (e.g., hidden rows for SUBTOTAL). ## Nuances of the implemented functions * HyperFormula immediately instantiates references to single cells to their values, instead of treating them as 1-length ranges, which slightly changes the behavior of some functions (e.g., NPV). * SUBTOTAL function does not ignore nested subtotals. * CHISQ.INV, CHISQ.INV.RT, CHISQ.DIST.RT, CHIDIST, CHIINV and CHISQ.DIST (CHISQ.DIST in CDF mode): Running time grows linearly with the value of the second parameter, degrees_of_freedom (slow for values>1e7). * GAMMA.DIST, GAMMA.INV, GAMMADIST, GAMMAINV (GAMMA.DIST and GAMMADIST in CDF mode): Running time grows linearly with the value of the second parameter, alpha (slow for values>1e7). * For certain inputs, the RATE function might have no solutions, or have multiple solutions. Our implementation uses an iterative algorithm (Newton's method) to find an approximation for one of the solutions to within 1e-7. If the approximation is not found after 50 iterations, the RATE function returns the `#NUM!` error. * The INDEX function doesn't support returning whole rows or columns of the source range – it always returns the contents of a single cell. * The FILTER function accepts either single rows of equal width or single columns of equal height. In other words, all arrays passed to the FILTER function must have equal dimensions, and at least one of those dimensions must be 1. * Array-producing functions (e.g., SEQUENCE, FILTER) require their output dimensions to be determinable at parse time. Passing cell references or formulas as dimension arguments (e.g., `=SEQUENCE(A1)`) results in a `#VALUE!` error, because the output size cannot be resolved before evaluation. * The TEXT function does not accept embedded double-quote literals in the format string. In Excel, `""` inside a format string is an escape sequence for a literal `"` character — e.g. `=TEXT(1234.5, "#,##0.00 ""zł""")` returns `"1,234.50 zł"`. If your application requires this escape sequence, supply a custom [`stringifyCurrency`](https://hyperformula.handsontable.com/docs/guide/currency-handling.md) callback. ### UNIQUE function * Comparison of values follows HyperFormula's own equality rules, which honor the `caseSensitive` and `accentSensitive` configuration options. By default comparison is case-insensitive. * When `ExactlyOnce` is TRUE and no row or column occurs exactly once, `UNIQUE` returns a `#N/A` error (the result would otherwise be empty). ### SORT function * The `SortIndex` argument accepts a single key only. Multi-key sorting through an array constant (for example `=SORT(A1:B9, {1,2})`) is not supported; sort by one column or row at a time. * The `SortOrder` argument must be exactly `1` (ascending) or `-1` (descending). Any other value returns a `#VALUE!` error. * Ordering (including mixed types, empty cells, and text collation) follows HyperFormula's own comparison rules, which honor the `caseSensitive` and `accentSensitive` configuration options. Numbers sort before text, and text before logical values. ### OFFSET function HyperFormula resolves the OFFSET function at parse time rather than during evaluation. The parser inspects the arguments and rewrites the expression into a plain cell reference or range. This keeps the dependency graph accurate but imposes several restrictions. * The first argument must be a reference to a single cell. Passing a range causes the cell to store a parser error (the API call itself does not throw — read the error via `getCellValue`). ```js // Cell A1 stores a parser error — the first argument must be a single cell, not a range hf.setCellContents({ sheet: 0, row: 0, col: 0 }, '=OFFSET(A1:B1, 0, 0)'); ``` * The row-shift, column-shift, height, and width arguments must be static integer literals known at parse time. Cell references and formulas passed as shift or size arguments cause the cell to store a parser error. ```js // Cell A1 stores a parser error — the row-shift argument must be a static integer literal hf.setCellContents({ sheet: 0, row: 0, col: 0 }, '=OFFSET(A1, C3, 0)'); ``` * The height and width arguments must be bare positive integer literals (the parser accepts only `NUMBER` AST nodes). Unary `+` prefixes, parenthesised expressions, values less than 1, and non-integer values are rejected at parse time. * When the computed target falls outside the sheet, the parser stores a `#REF!` error in the cell at parse time (rather than during evaluation) with the message *Resulting reference is out of the sheet*. ```js // Cell A1 stores #REF! hf.setCellContents({ sheet: 0, row: 0, col: 0 }, '=OFFSET(A1, -1, 0)'); ``` * OFFSET is resolved at parse time, so `getCellFormula` returns the computed reference, not the original `OFFSET` call. ```js const hf = HyperFormula.buildFromArray([[1, 45, '=OFFSET(A1, 0, 1)']]); hf.getCellFormula({ sheet: 0, row: 0, col: 2 }); // '=B1' ``` --- ## Contributing URL: https://hyperformula.handsontable.com/docs/guide/contributing # Contributing You are welcome to contribute to HyperFormula's development. Your help is much appreciated in any of the following topics: * Making pull requests * Adding new functions * Adding new features * Improving the quality of the existing code * Improving performance * Improving documentation and public API * Reporting bugs * Suggesting improvements * Suggesting new features ## Good first issue Adding a new function would be a huge help for the growth of the library and should not be too problematic for a first issue. Extending the library of translations is also a good task to start with. [Here](https://docs.google.com/spreadsheets/d/1UUskn4ZDDjLGSpO6kg73DOvabNoeqLbkJYyVfLyYlYw) you can find a list of function translations. Visit the [building](https://hyperformula.handsontable.com/docs/guide/building.md) section to get more info about the development process and check the list of commands you can run in this project. Check the `/i18n` folder in the project - all translations are kept there. For the functions see the `interpreter/plugin` folder. Both of them are a good starting point. ## How to get started 1. First, sign this [Contributor License Agreement](https://goo.gl/forms/yuutGuN0RjsikVpM2) to allow us to use and publish your changes. 2. Always make your changes on a separate branch. This will speed up the merging process. 3. Always make the target of your pull request the `develop` branch, not `master`. 4. For any change you make, add test specs to the `test` folder. 5. Please lint the code. See the section about using linter. 6. Add a comprehensive description of all the changes. ## Code of conduct By participating in this project, you are expected to uphold our [Code of Conduct](https://hyperformula.handsontable.com/docs/guide/code-of-conduct.md). --- ## Licensing URL: https://hyperformula.handsontable.com/docs/guide/licensing # Licensing To make HyperFormula a better fit for different types of projects, the source code is available under different licenses. ## Available licenses HyperFormula is available under the following licenses: | Name | Type | |:--------------------------------------------------------------------------------------|:------------| | [GPLv3 license](https://github.com/handsontable/hyperformula/blob/master/LICENSE.txt) | Open source | | Proprietary license | Proprietary | ## GPLv3 license In a non-commercial or open-source project, you can use [GNU General Public License v3.0](https://github.com/handsontable/hyperformula/blob/master/LICENSE.txt) (GPLv3). To learn how to use the GPLv3 license, see the [License key](https://hyperformula.handsontable.com/docs/guide/license-key.md#gplv3-license) page. ## Proprietary license If your project requires a more permissive license than GPLv3, please contact us to purchase a proprietary license with flexible terms and conditions. Contact our Sales Team: * Through the [contact form](https://handsontable.com/get-a-quote) on the Handsontable website * By email at [sales@handsontable.com](mailto:sales@handsontable.com) ## Entering a license key To use HyperFormula, you need to specify which license type you use, by entering a license key. To find out how to enter a license key, see the [License key](https://hyperformula.handsontable.com/docs/guide/license-key.md) page. --- ## List of differences with other spreadsheets URL: https://hyperformula.handsontable.com/docs/guide/list-of-differences # List of differences with other spreadsheets
See a full list of differences between HyperFormula, Microsoft Excel, and Google Sheets. **Contents:** ## General functionalities | Functionality | Examples | HyperFormula | Google Sheets | Microsoft Excel | |----------------------------------------------------|---------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------| | Dependency collection | A1:=IF(FALSE(), A1, 0)

ISREF(A1) | Dependencies are collected during the parsing phase, which finds cycles that wouldn't appear in the evaluation.

`CYCLE` error for both examples. | Dependencies are collected during evaluation.

`0` for both examples. | Same as Google Sheets. | | Named expressions and named ranges | SALARY:=$A$10 COST:=10*$B$5+100
PROFIT:=SALARY-COST
A1:=SALARY-COST | Only absolute addresses are allowed
(e.g., SALARY:= $A$10).

Named expressions can be global or scoped to one sheet only.

They can contain other named expressions. | Named expressions are not available.

Named ranges can be used to create aliases for addresses and ranges. | Named ranges and scoped named expressions are available. | | Named expression names | ProductPrice1:=42 | A name must be distinctive from a cell reference (case-insensitive), so `ProductPrice1` is invalid. See [complete naming rules](https://hyperformula.handsontable.com/docs/guide/named-expressions.md#name-rules). | A name that is a valid cell reference is allowed if the column address is at least 4-letter long, so `ProductPrice1` is valid. | A name that is a valid cell reference is allowed if the column address is at least 4-letter long, so `ProductPrice1` is valid. | | Applying a scalar value to a function taking range | COLUMNS(A1) | `CellRangeExpected` error. | Treats the element as length-1 range. Returns 1 for the example. | Same as Google Sheets. | | Coercion of explicit arguments | VARP(2, 3, 4, TRUE(), FALSE(), "1",) | 1.9592, based on the behavior of Microsoft Excel. | GoogleSheets implementation is not consistent with the standard (see also `VAR.S`, `STDEV.P`, and `STDEV.S` function.) | 1.9592 | | Ranges created with `:` | A1:A2

A$1:$A$2

A:C

1:2

Sheet1!A1:A2 | Allowed ranges consist of two addresses (A1:B5), columns (A:C) or rows (3:5).
They cannot be mixed or contain named expressions. | Everything allowed. | Same as Google Sheets. | | Formatting inside the TEXT function | TEXT(A1,"dd-mm-yy")

TEXT(A1,"###.###”) | To support all date, time and currency formats, set [`stringifyDateTime`](https://hyperformula.handsontable.com/docs/guide/compatibility-with-microsoft-excel.md#date-and-time-formats) and [`stringifyCurrency`](https://hyperformula.handsontable.com/docs/guide/currency-handling.md) configuration options. | A wide variety of options for string formatting is supported. | Same as Google Sheets. | | Cell references inside inline arrays | ={A1, A2} | The array's value is calculated but not updated when the cells' values change. | The array's value is calculated and updated when the cells' values change. | ERROR: invalid array | | SPLIT function | =SPLIT("Lorem ipsum dolor", 0) | This function works differently from Google Sheets version but should be sufficient to achieve the same functionality in most scenarios. Read SPLIT function description on [the Built-in Functions page](https://hyperformula.handsontable.com/docs/guide/built-in-functions.md#text). | Different syntax and return value. | No such function. | | DATEVALUE function | =DATEVALUE("25/02/1991") | Type of the returned value: `CellValueDetailedType.NUMBER_DATE` (compliant with the [OpenDocument](https://docs.oasis-open.org/office/OpenDocument/v1.3/os/part4-formula/OpenDocument-v1.3-os-part4-formula.html) standard) | Cell auto-formatted as **regular number** | Cell auto-formatted as **regular number** | | TIMEVALUE function | =TIMEVALUE("14:31") | Type of the returned value: `CellValueDetailedType.NUMBER_TIME` (compliant with the [OpenDocument](https://docs.oasis-open.org/office/OpenDocument/v1.3/os/part4-formula/OpenDocument-v1.3-os-part4-formula.html) standard) | Cell auto-formatted as **regular number** | Cell auto-formatted as **regular number** | | EDATE function | =EDATE(DATE(2019, 7, 31), 1) | Type of the returned value: `CellValueDetailedType.NUMBER_DATE`. This is non-compliant with the [OpenDocument](https://docs.oasis-open.org/office/OpenDocument/v1.3/os/part4-formula/OpenDocument-v1.3-os-part4-formula.html) standard, which defines the return type as a Number, while describing it as a Date serial number through the function summary. | Cell auto-formatted as **date** | Cell auto-formatted as **regular number** | | EOMONTH function | =EOMONTH(DATE(2019, 7, 31), 1) | Type of the returned value: `CellValueDetailedType.NUMBER_DATE`. This is non-compliant with the [OpenDocument](https://docs.oasis-open.org/office/OpenDocument/v1.3/os/part4-formula/OpenDocument-v1.3-os-part4-formula.html) standard, which defines the return type as a Number, while describing it as a Date serial number through the function summary. | Cell auto-formatted as **date** | Cell auto-formatted as **regular number** | | Empty cells in lookup search | =XLOOKUP(3, A1:A4, A1:A4, "NF", 0, 2)
where A1:A4 = 1, 2, (empty), 3 | Empty cells are skipped during the search. A value that is present is found even when it sits past an interspersed empty cell (exact match is gap-independent), and approximate `MATCH`/`VLOOKUP`/`HLOOKUP`/`XLOOKUP` skip empty cells — but not empty strings — when finding the lower/upper bound. Returns `3`. On an all-empty range in a binary search mode, HyperFormula returns the `if_not_found` result (never row 1). | Skips empty cells in approximate search (parity with HyperFormula). | With binary search modes (`search_mode` ±2), a range with interspersed empty cells is not strictly sorted; per Excel's documentation the result may be invalid, so a value past an empty cell is not reliably found. On an all-empty range in a binary mode, Excel returns the first row's value. | ## Built-in functions Some built-in functions are implemented differently than in Google Sheets or Microsoft Excel. To remove the differences, create [custom implementations](https://hyperformula.handsontable.com/docs/guide/custom-functions.md) of those functions. | Function | Example | HyperFormula | Google Sheets | Microsoft Excel | |---------------|----------------------------------------------------------------|-------------:|--------------:|----------------:| | TBILLEQ | =TBILLEQ(0, 180, 1.9) | 38.5278 | NUM | NUM | | TBILLEQ | =TBILLEQ(0, 180, 2) | 0.0000 | NUM | 0.0000 | | TBILLEQ | =TBILLEQ("1/2/2000", "31/1/2001", 0.1) | 0.1128 | VALUE | VALUE | | TBILLEQ | =TBILLEQ(0, 360, 0.1) | 0.1127 | 0.1097 | 0.1097 | | TBILLEQ | =TBILLEQ(0, 365, 0.1) | 0.1128 | 0.1098 | 0.1098 | | GCD | =GCD(1000000000000000000.0) | NUM | 1E+18 | NUM | | COMBIN | =COMBIN(1030, 0) | NUM | NUM | 1.0000 | | RRI | =RRI(1, -1, -1) | 0.0000 | NUM | 0.0000 | | DAYS | =DAYS(-1, 0) | NUM | -1.0000 | NUM | | DAYS | =DAYS(0, -1) | NUM | 1.0000 | NUM | | DATEDIF | =DATEDIF(-1, 0, "Y") | NUM | 0.0000 | NUM | | RATE | =RATE(12, -100, 400, 0, 1) | -1.0000 | NUM | NUM | | PV | =PV(-1, 0, 100, 400) | NUM | -400 | NUM | | LCMP | =LCM(1000000, 1000001, 1000002, 1000003) | NUM | 5.00003E+23 | NUM | | TBILLPRICE | =TBILLPRICE(0, 180, 1.9) | 5.0000 | NUM | 5.0000 | | TBILLPRICE | =TBILLPRICE(0, 180, 2) | 0.0000 | NUM | 0.0000 | | NPV | =NPV(1, TRUE(), 1) | 0.7500 | 0.5000 | 0.7500 | | NPV | =NPV(1,B1) where B1 = true | 0.5000 | 0.0000 | 0.0000 | | POISSON.DIST | =POISSON.DIST(-0.01, 0, FALSE()) | NUM | 1.0000 | NUM | | POISSON.DIST | =POISSON.DIST(0, -0.01, FALSE()) | NUM | NUM | 1.0101 | | DB | =DB(1000000, 100000, 6, 7, 7) | 15845.1000 | NUM | 15845.0985 | | BETA.DIST | =BETA.DIST(1, 2, 3) | N/A | 1.0000 | NUM | | BETA.DIST | =BETA.DIST(0, 1, 1, FALSE()) | NUM | 0.0000 | NUM | | BETA.DIST | =BETA.DIST(0.6, 1, 1, FALSE(), 0.6, 0.7) | NUM | 0.0000 | 0.0000 | | BETA.DIST | =BETA.DIST(0.7, 1, 1, FALSE(), 0.6, 0.7) | NUM | 0.0000 | 0.0000 | | GAMMA | =GAMMA(-2.5) | -0.9453 | NUM | -0.9453 | | BINOM.DIST | =BINOM.DIST(0.5, 0.4, 1, FALSE()) | N/A | NUM | 1.0000 | | NEGBINOM.DIST | =NEGBINOM.DIST(0, 1, 0, FALSE()) | 0.0000 | N/A | NUM | | NEGBINOM.DIST | =NEGBINOM.DIST(0, 1, 1, FALSE()) | 1.0000 | N/A | NUM | | T.INV | =T.INV(0, 1) | NUM | NUM | DIV/0 | | BETA.INV | =BETA.INV(1, 1, 1) | 1.0000 | 1.0000 | NUM | | WEIBULL.DIST | =WEIBULL.DIST(0, 1, 1, FALSE()) | 1.0000 | 1.0000 | 0.0000 | | HYPGEOM.DIST | =HYPGEOM.DIST(12.1, 12, 20, 40, TRUE()) | NUM | N/A | 1.0000 | | HYPGEOM.DIST | =HYPGEOM.DIST(12.1, 20, 12, 40, TRUE()) | NUM | N/A | 1.0000 | | HYPGEOM.DIST | =HYPGEOM.DIST(1, 2, 3, 4) | N/A | 0.5000 | NUM | | HYPGEOM.DIST | =HYPGEOM.DIST(4, 12, 20, 40, TRUE()) | 0.1504 | N/A | 0.1504 | | TDIST | =TDIST(0, 1, 1.5) | NUM | 0.5000 | 0.5000 | | T.INV.2T | =T.INV.2T(0, 1) | NUM | NUM | DIV/0 | | T.DIST | =T.DIST(1, 0.9, FALSE()) | NUM | NUM | DIV/0 | | AVEDEV | =AVEDEV(TRUE(), FALSE()) | 0.4444 | 0.0000 | 0.4444 | | LARGE | =LARGE(TRUE(), 1) | NUM | NUM | 1.0000 | | COUNTA | =COUNTA(1,) | 2.0000 | 1.0000 | 2.0000 | | XNPV | =XNPV(-0.9, A2:D2, A3:D3)
where 2nd and 3rd row: 1, 2, 3, 4 | 10.1272 | 10.12716959 | NUM | | SKEW | =SKEW(TRUE(), FALSE()) | 1.7321 | DIV/0 | 1.7321 | | HARMEAN | =HARMEAN(TRUE(), "4") | 1.6000 | 4.0000 | 1.6000 | | GEOMEAN | =GEOMEAN(TRUE(), "4") | 2.0000 | 4.0000 | 2.0000 | | CHISQ.TEST | =CHISQ.TEST(A1:C2, A1:F1) | N/A | N/A | DIV/0 | | BINOM.INV | =BINOM.INV(1, 0.8, 0.2) | 0.0000 | 1.0000 | 1.0000 | | BINOM.INV | =BINOM.INV(-0.001, 0.5, 0.5) | NUM | 0.0000 | NUM | | BINOM.INV | =BINOM.INV(10, 0, 0.5) | 0.0000 | NUM | NUM | | BINOM.INV | =BINOM.INV(10, 1, 0.5) | 10.0000 | NUM | NUM | | DEVSQ | =DEVSQ(A2, A3) | 0.0000 | 0.0000 | NUM | | NORMSDIST | =NORMSDIST(0, TRUE()) | 0.5 | Wrong number | Wrong number | | ADDRESS | =ADDRESS(1,1,4, TRUE(), "") | !A1 | ''!A1 | !A1 | | SEQUENCE | =SEQUENCE(0) | VALUE | N/A | CALC | | TAKE | =TAKE(A1:A3, 0) | N/A | No such function. | CALC | | TAKE | =TAKE(Data!A:A, , 1) | VALUE because HyperFormula cannot allocate an unbounded direct whole-column result. | No such function. | Spills the whole column from row 1; returns SPILL below row 1. | | INT | =INT(-8.9) | -8 | -9 | -9 | | MOD | =MOD(-10, 3) | -1 | 2 | 2 | | ISEVEN | =ISEVEN(2.5) | FALSE | TRUE | TRUE | | ISODD | =ISODD(3.5) | FALSE | TRUE | TRUE | | CEILING.MATH | =CEILING.MATH(-4.3, 2, 2) | -4 | -6 | -6 | | FLOOR.MATH | =FLOOR.MATH(-4.7, 2, 2) | -6 | -4 | -4 | A few of the rows above share a root cause worth stating once: - **Rounding toward zero, not down.** `INT` discards the fractional part rather than rounding toward negative infinity, so it differs from Excel and Google Sheets for negative input only. `ROUNDDOWN`/`ROUNDUP` are unaffected — they are defined in terms of zero in all three. - **`MOD` takes the sign of the dividend.** Excel and Google Sheets return a result with the sign of the *divisor*. - **`ISEVEN`/`ISODD` do not truncate.** They test the remainder of the value as given, so a value with a fractional part returns `FALSE` from *both*. Excel and Google Sheets truncate to an integer first, so exactly one of the two is always `TRUE`. - **`CEILING.MATH`/`FLOOR.MATH` honour only `mode` = 1.** Excel and Google Sheets switch the negative-number rounding direction for any non-zero `mode`. --- ## Basic usage URL: https://hyperformula.handsontable.com/docs/guide/basic-usage # Basic usage > The instance can be created with three static methods: > [`buildFromArray`](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.html#buildfromarray), > `buildFromSheets` or `buildEmpty`. You can check all of their > descriptions in our [API reference](https://hyperformula.handsontable.com/docs/api). If you've already installed the library, it's time to start writing the first simple application. First, if you used NPM or Yarn to install the package, make sure you have properly imported HyperFormula as shown below: ```javascript import { HyperFormula } from 'hyperformula'; ``` If you embed HyperFormula in the `