# data_proxy 数据驱动核心类

数据核心类,里边代理了很多功能

  // instance 你创建的实例,公有方法可以直接调用,私有方法不可以
  instance.data.publicFn(args)
  // 或者
  instance.sheet.data.publicFn(args)
1
2
3
4

# 私有方法

# Method: canPaste

粘贴前调用,用以判断是否可以粘贴

@param {Object} src 由 cellRange 包装的对象,源单元格

@param {Object} dst 由 cellRange 包装的对象,目标单元格

@param {Function} error 错误回调 当目标单元格包含 merge 时调用

@returns {boolean} 是否可以粘贴

function canPaste(src, dst, error = () => {}) {
  // 正常返回 Boolean 类型
  // 若目标单元格包含 merge 时则调用 error() 并返回 false
})
1
2
3
4

# Method: copyPaste

粘贴复制的单元格时使用,用以将源单元格复制到目标单元格

@param {Object} srcCellRange 由 cellRange 包装的对象,源单元格

@param {Object} dstCellRange 由 cellRange 包装的对象,目标单元格

@param {String} what 复制条件 all 全部 | format 仅格式

@param {Boolean} autofill 是否自动填充,默认 false

function copyPaste(srcCellRange, dstCellRange, what, autofill = false) {
  // 根据 what 条件
  // 调用 rows.copyPaste 进行复制单元格
})
1
2
3
4

# Method: cutPaste

粘贴剪切的单元格时使用,用以将源单元格复制到目标单元格

@param {Object} srcCellRange 由 cellRange 包装的对象,源单元格

@param {Object} dstCellRange 由 cellRange 包装的对象,目标单元格

@param {String} what 复制条件 all 全部 | format 仅格式

@param {Boolean} autofill 是否自动填充,默认 false

function cutPaste(srcCellRange, dstCellRange) {
  // 调用 rows.cutPaste 进行粘贴剪切的单元格
})
1
2
3

# Method:setStyleBorder

设置指定的单元格边框

@param {Number} ri 行下标

@param {Number} ci 列下标

@param {Object} bss 边框样式

function setStyleBorder(ri, ci, bss) {
  // 将 bss 样式通过 this.addStyle 方法添加到样式数据中,并将返回的样式下标设置到 cell.style 单元格数据中
})
1
2
3

# Method:setStyleBorders

根据当前选区(this.selector)批量设置多个单元格的边框

@param {String} mode all 全部 | inside 内边框 | outside 外边框 | horizontal 水平边框 | vertical 竖边框 | none 无边框

@param {String} style 边框样式

@param {String} color 边框样式

function setStyleBorders({ mode, style, color }) {
  // 根据 mode 设置边框
})
1
2
3

# Method:getCellRowByY

根据 Y 坐标获取所在行的下标

@param {Number} y Y坐标

@param {Number} scrollOffsety 滚动条 Offset Y

@returns {Object} 带有 ri 行下标的对象

function getCellRowByY(y, scrollOffsety) {
  // 根据 Y 坐标返回 { ri, top, height }
})
1
2
3

# Method: getCellRowByX

获得单元格的通过 X 的坐标

根据 X 坐标获取所在行的下标

@param {Number} x X坐标

@param {Number} scrollOffsety 滚动条 Offset X

返回格式

interface ICellRetun {
  ci: number
  left: number
  width: number
}
1
2
3
4
5

# DataProxy 类

# Method: addValidation(mode, ref, validator)

添加验证

@param mode 编辑模式

@param ref 参考范围

@param validator 验证器

# Method: removeValidation()

移除验证范围

# Method: getSelectedValidator()

获得选中范围类的过滤或验证器

# Method: getSelectedValidation()

获得选中范围类的过滤或验证器具体信息

# Method: canUndo()

是否可以不做,撤销操作

# Method: canRedo()

是否可以重做

# Method: undo()

撤销一步

# Method: redo()

重做一步

# Method: copy()

复制当前的选区

# Method: copyToSystemClipboard()

复制到系统剪切板

# Method: cut()

集成剪切事件

# Method: paste(what, error)

粘贴事件

@param what: all(所有) | text(文字) | format(格式)

@param error: Function

# Method: pasteFromText(txt)

粘贴文字

@param txt: string

# Method: autofill(cellRange, what, error)

自动填充

@param cellRange: CellRange

@param what: all(所有) | text(文字) | format(格式)

@param error: Function

# Method: clearClipboard()

清除剪切板数据

# Method: calSelectedRangeByEnd(ri, ci)

计算选区范围,通过结束坐标

@param ri 行索引

@param ci 列索引

# Method: calSelectedRangeByStart(ri, ci)

计算选区范围,通过开始坐标

@param ri 行索引

@param ci 列索引

# Method: setSelectedCellAttr(property, value)

设置选中单元格属性

@param property: string 属性

@param value: string | number | unknow

# Method: setSelectedCellText(text, state = 'input)

设置选中单元格文字

@param text: string 文字

@param state: string 当前输入状态

# Method: getSelectedCell()

获得当前选中单元格

# Method: xyInSelectedRect()

判断当前鼠标点击坐标是否在选中范围内

# Method: getSelectedRect()

获得选中的矩形区域

# Method: getClipboardRect()

获得当前剪切板选中区域

# Method: getRect(cellRange)

获得设定选中范围区域

@param cellRange: CellRange

# Method: getCellRectByXY(x, y)

获得当前选中区域,通过鼠标的 x 和 y 坐标

@param x: number

@param y: number

# Method: isSignleSelected()

判断是否是单个选中

# Method: canUnmerge()

能否不合并

# Method: merge()

合并

# Method: unmerge()

不做合并,撤销合并

# Method: canAutofilter()

能自动过滤

# Method: autofilter()

过滤

# Method: setAutoFilter(ci, order, operator, value)

设置过滤器

@param ci 列索引

@param order 排序方式

@param operator 操作

@param value 值

# Method: resetAutoFilter()

重置自动过滤

# Method: deleteCell(what = 'all')

删除单元格

@param what: string all(所有) | fomat(格式)

# Method: insert(type, n = 1)

插入行或者列

@param type: string 可能的值 row | column

@param n: number > 0

# Method: delete(type)

删除选中行或者列

@param type: string 可能的值 row | column

# Method: scrollx(x, cb)

滚动 x 距离触发 cb

@param x: number 距离

@param cb: Function 触发的回调函数

# Method: scrolly(y, cb)

滚动 y 距离触发 cb

@param y: number 距离

@param cb: Function 触发的回调函数

# Method: cellRect(ri, ci)

返回当前单元格的具体坐标信息

@param ri: number 行索引

@param ci: number 列索引

# Method: getCell(ri, ci)

获得当前单元格,通过索引

@param ri: number 行索引

@param ci: number 列索引

# Method: getCellTextOrDefault(ri, ci)

获得当前单元格文字或者默认值

@param ri: number 行索引

@param ci: number 列索引

# Method: getCellStyle(ri, ci)

获得当前单元格样式

@param ri: number 行索引

@param ci: number 列索引

# Method: getCellStyleOrDefault(ri, ci)

获得当前单元格样式或者默认值

@param ri: number 行索引

@param ci: number 列索引

# Method: getSelectedCellStyle()

获得当前选中单元格样式

# Method: setCellText(ri, ci, text, state)

设定指定单元格值,并更新输入状态

@param ri: number 行索引

@param ci: number 列索引

@param text: string 文字

@param state: string input | finished

# Method: freezeIsActive()

冻结是否可以激活

# Method: setFreeze(ri, ci)

设置冻结栏

@param ri: number 行索引

@param ci: number 列索引

# Method: freezeTotalWidth()

获得冻结栏的总计宽度

# Method: freezeTotalHeight()

获得冻结栏总计高度

# Method: setRowHeight(ri, height)

设置某一行高度

@param ri: number 行索引

@param height: number 行高度

# Method: setColWidth(ci, width)

设置某一列宽度

@param ci: number 列索引

@param width: number 列宽度

# Method: viewHeight()

获得可视区域高度

# Method: viewWidth()

获得可视区域宽度

# Method: freezeViewRange()

获得冻结范围

# Method: contentRange()

获得文本区域显示范围

# Method: exceptRowTotalHeight(sri, eri)

获得忽略行后的总计高度

# Method: viewRange()

获得可视区显示范围

# Method: eachMergesInView(viewRange, cb)

每个合并发生的时候触发的回调

@param viewRange: ViewRange

@param cb: Function

# Method: hideRowsOrCols()

隐藏选中列或者行

# Method: unhideRowsOrCols(type, index)

取消隐藏行或者列

@param type: row | col

@param index: row-index | col-index

# Method: rowEach(min, max, cb)

行遍历,可以指定范围

@param min: number 最小行

@param max: number 最大行

@param cb: Function

# Method: colEach(min, max, cb)

列遍历,可以指定范围

@param min: number 最小列

@param max: number 最大列

@param cb: Function

# Method: defaultStyle()

获得默认样式

# Method: addStyle(nstyle)

设置多个样式

@param nstyle object

# Method: changeData(cb)

设置数据变化时的回调函数

@param cb: Function

# Method: setData(d)

设置表格数据,d 如果不知道可以通过 getData() 方法先获取一份默认的看看

@param d: object

# Method: getData()

获得当前表格的数据