DataProxy

The core data management class for spreadsheet operations. Access via useSheetStore.

Access

import { useSheetStore } from '@tego/sheet';

const { getActiveSheet } = useSheetStore();
const dataProxy = getActiveSheet();

Cell Operations

getCell(ri, ci)

Get cell data by row and column index.

const cell = dataProxy.getCell(0, 0);
// { text: 'Hello', style: 0, merge: [1, 1] }

getCellTextOrDefault(ri, ci)

Get cell text or default value.

const text = dataProxy.getCellTextOrDefault(0, 0);

getCellStyle(ri, ci)

Get cell style.

const style = dataProxy.getCellStyle(0, 0);

getCellStyleOrDefault(ri, ci)

Get cell style or default.

const style = dataProxy.getCellStyleOrDefault(0, 0);

setCellText(ri, ci, text, state)

Set cell text.

  • ri: Row index
  • ci: Column index
  • text: Text content
  • state: 'input' or 'finished'
dataProxy.setCellText(0, 0, 'Hello', 'finished');

getSelectedCell()

Get currently selected cell.

const cell = dataProxy.getSelectedCell();

getSelectedCellStyle()

Get style of selected cell.

const style = dataProxy.getSelectedCellStyle();

setSelectedCellAttr(property, value)

Set attribute for selected cells.

dataProxy.setSelectedCellAttr('bold', true);
dataProxy.setSelectedCellAttr('bgcolor', '#ffff00');

setSelectedCellText(text, state)

Set text for selected cell.

dataProxy.setSelectedCellText('Hello', 'finished');

Selection

calSelectedRangeByStart(ri, ci)

Calculate selection range from start position.

dataProxy.calSelectedRangeByStart(0, 0);

calSelectedRangeByEnd(ri, ci)

Calculate selection range by end position.

dataProxy.calSelectedRangeByEnd(5, 5);

isSignleSelected()

Check if single cell is selected.

const isSingle = dataProxy.isSignleSelected();

getSelectedRect()

Get selected rectangle area.

const rect = dataProxy.getSelectedRect();

xyInSelectedRect(x, y)

Check if coordinates are within selected area.

const isInside = dataProxy.xyInSelectedRect(100, 200);

getCellRectByXY(x, y)

Get cell rectangle by coordinates.

const rect = dataProxy.getCellRectByXY(100, 200);

Clipboard

copy()

Copy selected cells.

dataProxy.copy();

copyToSystemClipboard()

Copy to system clipboard.

dataProxy.copyToSystemClipboard();

cut()

Cut selected cells.

dataProxy.cut();

paste(what, error)

Paste from clipboard.

  • what: 'all', 'text', or 'format'
  • error: Error callback function
dataProxy.paste('all', (msg) => console.error(msg));

pasteFromText(txt)

Paste text.

dataProxy.pasteFromText('Hello\tWorld');

clearClipboard()

Clear clipboard.

dataProxy.clearClipboard();

getClipboardRect()

Get clipboard selection rectangle.

const rect = dataProxy.getClipboardRect();

Merge

merge()

Merge selected cells.

dataProxy.merge();

unmerge()

Unmerge selected cells.

dataProxy.unmerge();

canUnmerge()

Check if can unmerge.

const canUnmerge = dataProxy.canUnmerge();

History

undo()

Undo last operation.

dataProxy.undo();

redo()

Redo last undone operation.

dataProxy.redo();

canUndo()

Check if can undo.

const canUndo = dataProxy.canUndo();

canRedo()

Check if can redo.

const canRedo = dataProxy.canRedo();

Row & Column

setRowHeight(ri, height)

Set row height.

dataProxy.setRowHeight(0, 50);

setColWidth(ci, width)

Set column width.

dataProxy.setColWidth(0, 150);

insert(type, n)

Insert rows or columns.

  • type: 'row' or 'column'
  • n: Number to insert
dataProxy.insert('row', 1);
dataProxy.insert('column', 2);

delete(type)

Delete selected rows or columns.

dataProxy.delete('row');
dataProxy.delete('column');

hideRowsOrCols()

Hide selected rows or columns.

dataProxy.hideRowsOrCols();

unhideRowsOrCols(type, index)

Unhide rows or columns.

dataProxy.unhideRowsOrCols('row', 5);

Freeze

setFreeze(ri, ci)

Set freeze panes.

dataProxy.setFreeze(1, 1); // Freeze first row and column

freezeIsActive()

Check if freeze is active.

const isActive = dataProxy.freezeIsActive();

freezeTotalWidth()

Get frozen area width.

const width = dataProxy.freezeTotalWidth();

freezeTotalHeight()

Get frozen area height.

const height = dataProxy.freezeTotalHeight();

Filter

autofilter()

Toggle auto-filter.

dataProxy.autofilter();

canAutofilter()

Check if can apply auto-filter.

const can = dataProxy.canAutofilter();

setAutoFilter(ci, order, operator, value)

Set auto-filter options.

dataProxy.setAutoFilter(0, 'asc', 'eq', 'value');

resetAutoFilter()

Reset auto-filter.

dataProxy.resetAutoFilter();

Validation

addValidation(mode, ref, validator)

Add validation rule.

dataProxy.addValidation('stop', 'A1:B10', validator);

removeValidation()

Remove validation from selected range.

dataProxy.removeValidation();

getSelectedValidator()

Get validator for selected range.

const validator = dataProxy.getSelectedValidator();

getSelectedValidation()

Get validation info for selected range.

const validation = dataProxy.getSelectedValidation();

View

viewWidth()

Get view width.

const width = dataProxy.viewWidth();

viewHeight()

Get view height.

const height = dataProxy.viewHeight();

viewRange()

Get visible range.

const range = dataProxy.viewRange();

freezeViewRange()

Get frozen view range.

const range = dataProxy.freezeViewRange();

contentRange()

Get content range.

const range = dataProxy.contentRange();

Scroll

scrollx(x, cb)

Scroll horizontally.

dataProxy.scrollx(100, () => console.log('scrolled'));

scrolly(y, cb)

Scroll vertically.

dataProxy.scrolly(100, () => console.log('scrolled'));

Data

setData(d)

Set sheet data.

dataProxy.setData({
  name: 'Sheet1',
  rows: { /* ... */ },
});

getData()

Get sheet data.

const data = dataProxy.getData();

changeData(cb)

Set change callback.

dataProxy.changeData((data) => {
  console.log('Data changed:', data);
});

Style

defaultStyle()

Get default style.

const style = dataProxy.defaultStyle();

addStyle(nstyle)

Add style to style array.

const styleIndex = dataProxy.addStyle({
  bold: true,
  bgcolor: '#ffff00',
});

Utility

cellRect(ri, ci)

Get cell rectangle info.

const rect = dataProxy.cellRect(0, 0);
// { left, top, width, height }

getRect(cellRange)

Get rectangle for cell range.

const rect = dataProxy.getRect(cellRange);

rowEach(min, max, cb)

Iterate over rows.

dataProxy.rowEach(0, 10, (ri, row) => {
  console.log(ri, row);
});

colEach(min, max, cb)

Iterate over columns.

dataProxy.colEach(0, 10, (ci, col) => {
  console.log(ci, col);
});

eachMergesInView(viewRange, cb)

Iterate merged cells in view.

dataProxy.eachMergesInView(viewRange, (merge) => {
  console.log(merge);
});