# sheet
**Repository Path**: rekyone/sheet
## Basic Information
- **Project Name**: sheet
- **Description**: 📊OpenHarmony Sheet
- **Primary Language**: JavaScript
- **License**: MulanPSL-2.0
- **Default Branch**: main
- **Homepage**: https://gitee.com/rekyone/sheet
- **GVP Project**: No
## Statistics
- **Stars**: 9
- **Forks**: 2
- **Created**: 2021-09-12
- **Last Updated**: 2024-11-26
## Categories & Tags
**Categories**: Uncategorized
**Tags**: 鸿蒙, OpenHarmony组件, HarmonyOS组件, Sheet, cavans
## README
# OpenHarmonySheet
基于 `Canvas` 实现的高性能 `Excel` 表格引擎组件 [OpenHarmonySheet](https://gitee.com/rekyone/sheet)。
由于大部分前端项目渲染层是使用框架根据排版模型树结构逐层渲染的,整棵渲染树也是与排版模型树一一对应。因此,整个渲染的节点也非常多。项目较大时,性能会受到较大的影响。
为了提升渲染性能,提供更优质的编辑体验从 `DOM` 更换成 `Canvas` 渲染,方便开发者构建重前端大型在线文档项目,**在国内外实现类似引擎的公司仅仅只有几家**,如:腾讯文档,金山文档和谷歌文档等。
在项目中引入 `` 组件即可,使用方法如下:
```html
```
# 生命周期和事件
- sheet 表格数据
- @sheet-show 表格显示
- @sheet-hide 表格隐藏
- @click-cell-start 单元格点击前
- @click-cell-end 单元格点击后
- @click-cell-longpress 长按表格
- @change 修改单元格数据
比如,我们在示例中可以监听 `长按` 事件,当用户 `长按` 的时候弹出 `对话框`,示例代码如下:
```ts
clickCellLongpress(evt) {
prompt.showDialog({
buttons: [{
text: '测试',
color: '#666666',
}],
});
}
```
以上所有的接口都会返回一个详细的 `sheet` 对象,里面含有以下信息:
- el 表格的节点
- textarea 单元格输入框节点
- viewport 单元格高亮选框
- table 单元格操作对象
```ts
sheetShow(sheet) {
this.el = sheet.detail.el;
this.textarea = sheet.detail.textarea;
this.viewport = sheet.detail.viewport;
this.table = sheet.detail.table;
}
```
# API 接口
渲染引擎封装好了常用的表格数据操作等接口。
- `this.table.xxx`
用于帮助你操作单元格的所有数据和格式,也极大方便你自定义一个功能完整的工具栏:
- `this.viewport.xxx`
用于帮助你操作单元格上层的高亮选框。
- `this.textarea.xxx`
`this.textarea` 是对鸿蒙的原生 `