diff --git a/README.md b/README.md index 4407cf7..fd0120a 100644 --- a/README.md +++ b/README.md @@ -4,9 +4,10 @@ Luckysheet ,一款纯前端类似excel的在线表格,功能强大、配置简单、完全开源。 ## Features - 特性 -1. luckeeysht支持表格设置包括冻结行列、合并单元格、筛选、排序、查询、条件格式、批注 +1. Luckysheet支持表格设置包括冻结行列、合并单元格、筛选、排序、查询、条件格式、批注 2. 支持数据分析功能包括透视表、图表、分列、矩阵操作、内置385个计算函数 -3. 支持一键截图、复制为json数据、共享编辑、excel与luckysheet之间数据的复制粘贴 +3. 支持一键截图、复制为json数据、共享编辑、excel与Luckysheet之间数据的复制粘贴 +4. 支持移动端查看 ![演示](https://minio.cnbabylon.com/babylon1/public/LuckysheetDemo.gif) ## Documentation - 文档 diff --git a/docs/.vuepress/config.js b/docs/.vuepress/config.js index c229799..f6aad33 100644 --- a/docs/.vuepress/config.js +++ b/docs/.vuepress/config.js @@ -18,7 +18,9 @@ module.exports = { '/guide/': [ '', 'config', - 'feature' + 'feature', + 'data', + 'operate' ], }, // 仓库地址 diff --git a/docs/guide/README.md b/docs/guide/README.md index 6ef47df..5b77b5f 100644 --- a/docs/guide/README.md +++ b/docs/guide/README.md @@ -4,11 +4,12 @@ Luckysheet ,一款纯前端类似excel的在线表格,功能强大、配置简单、完全开源。 ### 特性 -1. luckeeysht支持表格设置包括冻结行列、合并单元格、筛选、排序、查询、条件格式、批注 -2. 支持数据分析功能包括透视表、图表、分列、矩阵操作、内置385个计算函数 -3. 支持一键截图、复制为json数据、共享编辑、excel与luckysheet之间数据的复制粘贴 +1. Luckysheet支持表格设置包括冻结行列、合并单元格、筛选、排序、查询、条件格式、批注 +2. 支持数据分析功能包括透视表、分列、矩阵操作、内置385个计算函数 +3. 支持一键截图、复制为json数据、共享编辑、excel与Luckysheet之间数据的复制粘贴 +4. 支持移动端查看 -![演示](https://minio.cnbabylon.com/babylon1/public/Luckysheet_demo.gif) +![演示](https://minio.cnbabylon.com/babylon1/public/LuckysheetDemo.gif) ### Demo @@ -68,4 +69,54 @@ npm run build后dist文件夹下的所有文件复制到项目目录 ``` +## 整体结构 +### 格式 + +一个完整的Luckysheet表格文件的数据格式为:jfgridfile,一个表格表格文件包含若干个sheet文件,对应excel的sheet0、sheet1等。 + +一个Luckysheet文件的示例如下,该表格包含3个sheet:` +jfgridfile = [ {sheet1设置}, {sheet2设置}, {sheet3设置} ]` +相当于excel的3个sheet +![excel sheet](img/excel.png) + +文件中的一个sheet的示例如下: +``` +jfgridfile[0] = +{ + "name": "超市销售额", + "color": "", + "chart": [], + "status": 0, + "order": 0, + "celldata": [], + "row":90, + "column":100, + "index": 0, + "visibledatarow": [], + "visibledatacolumn": [], + "rowsplit": [], + "ch_width": 4629, + "rh_height": 1681, + "jfgird_select_save": {}, + "jfgrid_selection_range": {}, + "scrollLeft": 0, + "scrollTop": 0, + "load": "1", + "config": { + "columlen": {}, + "rowhidden": {} + } + , + "pivotTable": {}, + "isPivotTable": true, + "calcChain": [], + "filter":{key1:value1, key2:value2}, + "filter_select": {} +} +``` +### 查看方式 +在chrome的console中查看 +`jfgrid.getjfgridfile()` +可以看到完整设置 +[{shee1}, {sheet2}, {sheet3}] \ No newline at end of file diff --git a/docs/guide/data.md b/docs/guide/data.md new file mode 100644 index 0000000..e57da69 --- /dev/null +++ b/docs/guide/data.md @@ -0,0 +1,92 @@ +# 表格数据 + +## 获取表格数据 + +- **配置**: + + 配置 `updateUrl` 的地址,Luckysheet会通过ajax请求表格数据,默认载入status为1的sheet数据中的所有data,其余的sheet载入除data字段外的所有字段。 + +- **格式**: + + jfgridfile示例如下: + ```json + [ + { + "name": "Sheet1", + "color": "", + "status": "1", + "order": "0", + "celldata": [], + "config": {}, + "index": 0 + }, + { + "name": "Sheet2", + "color": "", + "status": "0", + "order": "1", + "data": [], + "config": {}, + "index": 1 + }, + { + "name": "Sheet3", + "color": "", + "status": "0", + "order": "2", + "data": [], + "config": {}, + "index": 2 + } + ] + ``` + +## 获取sheet数据 + +- **配置**: + + 配置 `loadSheetUrl` 的地址,参数为gridKey(表格主键) 和 index(sheet主键合集,格式为[1,2,3]),返回的数据为sheet的data字段数据集合 + +- **格式**: + + ```json + { + "1": [{r:0, c:1, v:"值1"},{r:10, c:11, v:"值2"}], + "2": [data], + "3": [data], + } + ``` +- **说明**: + + r代表行,c代表列,v代表该单元格的值,值可以是字符、数字或者json串。 + 数据只会载入一次,一般来说都只有一个主键,但是考虑到一些公式、图表及数据透视表会引用其他sheet的数据,所以前台会加一个判断,如果该当前sheet引用了其他sheet的数据则把引用到的sheet的数据一并补全。 + +## 获取range范围数据 + +- **配置**: + + 配置 `loadCellUrl` 的地址,参数为gridKey(表格主键) 、 index(sheet主键)、开始行、结束行、开始列、结束列。后台根据范围获取指定的celldata数据并返回。 + +## 更新数据 + +- **配置**: + + 配置 `updateUrl` 的地址,发送到后台的参数为json的字符串。 + +- **格式**: + + ```json + { + compress: false, + gridKey:10004, + data: [更新数据] + } + ``` + +- **说明**: + + | 参数 | 说明 | 举例 | + | ------------ | ------------ | ------------ | + | compress | Luckysheet采用客户端pako进行zlib参数压缩,如果浏览器支持压缩则为true,否则为false。后台可以根据此参数决定是否解压data中的内容 | 服务端获取参数过程:1. 序列化json字符串 2判断compress字段如果为TRUE则解压data字段 3. 解码data字符串URLDecoder.decode(utf-8) | + | gridKey | Luckysheet文件的标识符 | 无 | + | data | 一个包含更新数据的数组,数组中的参数格式请看下面的介绍。实例中:t表示更新类型、i为sheet的索引、c为行号、r为列号,v为值 | data: [{ t : 'cell', i:0, c : 0, r : 0 , v: 2 }] | diff --git a/docs/guide/feature.md b/docs/guide/feature.md index d25b02c..ff1337b 100644 --- a/docs/guide/feature.md +++ b/docs/guide/feature.md @@ -1,16 +1,5 @@ # 高级功能 -## TODO... -### api -### 创建表格 -### 删除表格 -### 释放表格 -### 复制单元格 -### 插入单元格 -### 删除单元格 -### 编辑器单元格 - ------------- ## jfgrid.getcellvalue(r, c, data, type) - **参数**: - r:单元格所在行数;可选值;从0开始的整数,0表示第一行。 @@ -126,4 +115,10 @@ - index:表格下标;从0开始的整数,0表示第一个表格;默认为当前表格下标。 - **用法**: - 显示某个表格。 \ No newline at end of file + 显示某个表格。 + +------------ +## jfgrid.method.destroy() +- **用法**: + + 释放表格 diff --git a/docs/guide/format.md b/docs/guide/format.md new file mode 100644 index 0000000..c9590e8 --- /dev/null +++ b/docs/guide/format.md @@ -0,0 +1,304 @@ +# 格式属性 + +## 单元格属性表 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
属性值全称说明值示例Aspose方法或者属性
ctcelltye单元格值格式:文本、时间等单元格格式
bgbackground背景颜色#fff000setBackgroundColor
fffontfamily字体0 微软雅黑、1 宋体(Song)、2 黑体(ST Heiti)、3 楷体(ST Kaiti)、 4仿宋(ST FangSong)、 5 新宋体(ST Song)、 6 华文新魏、 7华文行楷、 8 华文隶书、 9 Arial、 10 Times New Roman 、11 Tahoma 、12 VerdanaStyle.Font object's Name property.
fcfontcolor字体颜色#fff000Style.Font object's Color property
blbold粗体0 常规 、 1加粗Style.Font object's IsBold property to true.
ititalic斜体0 常规 、 1 斜体
fsfontsize字体大小14Style.Font object's Size property.
clcancelline删除线0 常规 、 1 删除线Style.Font object's Underline property
ulunderline下划线0 常规 、 1 下划线
bsborderstyle边框样式0 noneLineStyle
1 Thin
2 Hair
3 Dotted
4 Dashed
5 DashDot
6 DashDotDot
7 Double
8 Medium
9 MediumDashed
10 MediumDashDot
11 MediumDashDotDot
12 SlantedDashDot
13 Thick
bcbordercolor边框颜色#fff000setBorderColor
bs_tborderstyleTop上边框样式同上
bc_tbordercolorTop上边框颜色
bs_bborderstyleBottom下边框样式
bc_bbordercolorBottom下边框颜色
bs_lborderstyleLeft左边框样式
bc_lbordercolorLeft左边框颜色
bs_rborderstyleRight右边框样式
bc_rbordercolorRight右边框颜色
vtverticaltype垂直对齐0 中间、1 上、2下setVerticalAlignment
hthorizontaltype水平对齐0 居中、1 左、2右setHorizontalAlignment
mcmergecell合并单元格{ rs: 10, cs:5 } 表示从此cell开始到10行5列的cell进行合并。Merge
trtextrotate文字旋转0: 0、1: 45 、2:-45、3 竖排文字、4: 90 、5:-90setRotationAngle
flfloatlenght小数位数3
tbtextbeak文本换行0 截断、1溢出、2 自动换行2:setTextWrapped
0和1:IsTextWrapped = true
ovoriginvalue原始值
vvalue显示值
ffunction公式setFormula
setArrayFormula
workbook.calculateFormula();
+ + +以下为3个单元格存储: +``` +[ + {r:0, c:1, v: { v:"显示", f:"=SUM(A2)", bg:"#fff000", bs:"1",bc:"#000"}}, + {r:10, c:11, v:"值2"}, + {r:10, c:11, v:{f:"=sum", v:"100"}} +] +``` + +##
单元格格式
+ +参考https://docs.aspose.com/display/cellsnet/List+of+Supported+Number+Formats#ListofSupportedNumberFormats-Aspose.Cells + +格式设置为:`{ v: "" , f: "" ,ct :{ v:1, f: "#,##0.00", t:" Decimal" } }` + +|参数|说明|使用| +| ------------ | ------------ | ------------ | +|v|value,Aspose中的快捷设置值|var currencyStyle = book.CreateStyle();
currencyStyle.Number = 8;| +|f|Format:格式的定义串 `$#,##0;$-#,##0`|var currencyStyle = book.CreateStyle();
currencyStyle.Custom  = "#,##0 SEK";| +|t|Type类型:
0:General
1:Decimal
2:Currency
3:Percentage
4:Scientific
5:Fraction
6:Date
7:Time
8:Accounting
9:Text
10:DateTime|类型是前端区分的格式,excel导入时根据导入format字符的关键字来区分是哪种类型:
1.含YYYY、MM、DD的是6| + +Aspose设置如下: +| Value | Type | Format String | +|-------|------------|---------------------------------------------| +| 0 | General | General | +| 1 | Decimal | 0 | +| 2 | Decimal | 0\.00 | +| 3 | Decimal | \#,\#\#0 | +| 4 | Decimal | \#,\#\#0\.00 | +| 5 | Currency | $\#,\#\#0;$\-\#,\#\#0 | +| 6 | Currency | $\#,\#\#0;$\-\#,\#\#0 | +| 7 | Currency | $\#,\#\#0\.00;$\-\#,\#\#0\.00 | +| 8 | Currency | $\#,\#\#0\.00;$\-\#,\#\#0\.00 | +| 9 | Percentage | 0% | +| 10 | Percentage | 0\.00% | +| 11 | Scientific | 0\.00E\+00 | +| 12 | Fraction | \# ?/? | +| 13 | Fraction | \# / | +| 14 | Date | m/d/yy | +| 15 | Date | d\-mmm\-yy | +| 16 | Date | d\-mmm | +| 17 | Date | mmm\-yy | +| 18 | Time | h:mm AM/PM | +| 19 | Time | h:mm:ss AM/PM | +| 20 | Time | h:mm | +| 21 | Time | h:mm:ss | +| 22 | Time | m/d/yy h:mm | +| 37 | Currency | \#,\#\#0;\-\#,\#\#0 | +| 38 | Currency | \#,\#\#0;\-\#,\#\#0 | +| 39 | Currency | \#,\#\#0\.00;\-\#,\#\#0\.00 | +| 40 | Currency | \#,\#\#0\.00;\-\#,\#\#0\.00 | +| 41 | Accounting | \_ \* \#,\#\#0\_ ;\_ \* "\_ ;\_ @\_ | +| 42 | Accounting | \_ $\* \#,\#\#0\_ ;\_ $\* "\_ ;\_ @\_ | +| 43 | Accounting | \_ \* \#,\#\#0\.00\_ ;\_ \* "??\_ ;\_ @\_ | +| 44 | Accounting | \_ $\* \#,\#\#0\.00\_ ;\_ $\* "??\_ ;\_ @\_ | +| 45 | Time | mm:ss | +| 46 | Time | h :mm:ss | +| 47 | Time | mm:ss\.0 | +| 48 | Scientific | \#\#0\.0E\+00 | +| 49 | Text | @ | + +导入/导出只用考虑用户看到的数据样式,例如excel中处理日期格式的方式为把日期统一转换为数字:42736 代表 2017-1-1, \ No newline at end of file diff --git a/docs/guide/img/excel.png b/docs/guide/img/excel.png new file mode 100644 index 0000000..0f174eb Binary files /dev/null and b/docs/guide/img/excel.png differ diff --git a/docs/guide/operate.md b/docs/guide/operate.md new file mode 100644 index 0000000..6401f71 --- /dev/null +++ b/docs/guide/operate.md @@ -0,0 +1,619 @@ +# 表格操作 + +## 单元格刷新 + +- **格式**: + + ```json + { + "t": "v", + "i": 3, + "v": "asdf", + "r": 5, + "c": 7 + } + ``` + +- **说明**: + + |参数|说明| + | ------------ | ------------ | + |t|操作类型表示符号| + |i|当前sheet的index值| + |v|单元格的值| + |r|单元格的行号| + |c|单元格的列号| + +- **后台更新**: + + 单元格更新主要是更新 `jfgridfile[i].celldata` 参数,该参数是一个数组: + ```json + [ + {r:0, c:1, v: "值1"}, + {r:10, c:11, v:"值2"}, + {r:10, c:11, v:{f:"=sum", v:"100"}} + ] + ``` + 存储了sheet中所有单元格中的值,Luckysheet在建立的时候会根据 `jfgridfile[i].row` 和 `jfgridfile[i].column` 的行列数量大小新建一个表格data,然后再使用 `data[r][c]=v` 的方式填充表格数据,空数据单元格以null表示。 + + 后台在保存前台推送的数据时,首先需要把参数转换为 `{r:0, c:1:v:100}` 的格式,然后更新 `jfgridfile[i].celldata` 字段,如果存在该单元格则更新,如果没有则添加,如果存在该单元格但是v为null则删除该单元格。 + +- **前台查看**: + + 可以修改任意单元格的数值,然后到chrome控制台中查看"t"=="v"的操作。 + +## config操作 + +- **格式**: + + ```json + { + "t": "cg", + "i": 3, + "v": { + "7": 192 + }, + "k": "rowlen" + } + ``` + +- **说明**: + + |参数|说明| + | ------------ | ------------ | + |t|操作类型表示符号| + |i|当前sheet的index值| + |v|需要更新的内部key-value| + |k|操作的key名称| + +- **后台更新**: + + 更新 `jfgridfile[i].config.[k][v.key] = v.value` ,如果config中不存k,则新建一个k属性并设置为空,如果k中不存在v.key中,则新建一个v.key再更新v.value。 + + 1. 修改行高度举例: + - 输入:`{"t":"cg","i":3,"v":{"3":10, "5":70, "10":100},"k":" rowlen"}` + - 更新:`jfgridfile[3].config.["rowlen"]["3"] = 10` + + 2. 修改列宽度举例: + - 输入:`{"t":"cg","i":1,"v":{"20":74, "15":170, "6":40},"k":" columlen"}` + - 更新:`jfgridfile[1].config.["columlen"]["20"] = 74` + + 3. 合并单元格举例: + - 输入:`{"t":"cg","i":1,"v":{"5_10":{row:[1,3], column:[3,5]},"k":" merge "}` + - 更新:`jfgridfile[1].config.["merge"]["5_10"] = {row:[1,3], column:[3,5]}` + +## 通用保存 + +- **格式**: + + ```json + { + "t": "all", + "i": 3, + "v": { + "v": 1, + "m":1, + }, + "k": "freezen", + "s": false + } + ``` + +- **说明**: + + |参数|说明| + | ------------ | ------------ | + |t|操作类型表示符号| + |i|当前sheet的index值| + |v|需要更新的内部key-value| + |k|需要保存的key-value中的value| + |s|如果是true则v保存为字符串,否则按照对象进行保存| + +- **后台更新**: + + `jfgridfile[3].[k]= v` + 如果s为true,则为 `jfgridfile[3].[k]= JSON.stringify(v)` + + 1. 数据透视表: + - 输入:`{"t":"all","i":1,"v":{………},"k":"pivotTable", "s": false}` + - 更新:`jfgridfile[1].["pivotTable"] = {………}` + + 2. 冻结行列: + - 输入:`{"t":"all","i":3,"v":{………},"k":"freezen", "s": false}` + - 更新:`jfgridfile[3].["freezen"] = {………}` + + 3. 筛选范围: + - 输入:`{"t":"all","i":3,"v":{………},"k":"filter_select", "s": true }` + - 更新:`jfgridfile[3].["filter_select"] = JSON.stringify ({………})` + + 4. Sheet名称: + - 输入:`{"t":"all","i":1,"v":"文档","k":"name", "s": false}` + - 更新:`jfgridfile[1].["name"] = "文档"` + + 5. Sheet颜色: + - 输入: `{"t":"all","i":2,"v":"#FFF000","k":"color", "s": false}` + - 更新:`jfgridfile[2].["color"] = "#FFF000"` + +## 函数链操作 + +- **格式**: + + ```json + { + "t": "fc", + "i": 0, + "v": { + "r": 3, + "c": 7, + "index": 0, + "func": [ + true, + 187282, + "=SUM(E4:G4)" + ] + }, + "op": "add", + "pos": 0 + } + ``` + +- **说明**: + + |参数|说明| + | ------------ | ------------ | + |t|操作类型表示符号| + |i|当前sheet的index值| + |v|对象值,这里对象的内部字段不需要单独更新,所以存为文本即可| + |op|操作类型,add为新增,update为更新,del为删除| + |pos|更新或者删除的函数位置| + +- **后台更新**: + + calcChain为一个数组 + - 如果op的值add则添加到末尾 `jfgridfile[i].calcChain.push (v)`, + - 如果op的值update则更新 `jfgridfile[i].calcChain[pos]= v`, + - 如果op的值del则删除 `jfgridfile[i].calcChain.splice(pos, 1)`。 + +- **前台查看**: + + 可以修改任意单元格的数值,然后到chrome控制台中查看"t"=="v"的操作。 + +## 行列操作 + +### 删除行或列 + +- **格式**: + + ```json + { + "t": "drc", + "i": 3, + "v": { + "index": 6, + "len": 2 + }, + "rc": "r" + } + ``` + +- **说明**: + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
参数说明
t操作类型表示符号
i当前sheet的index值
rc行操作还是列操作,值r代表行,c代表列
vindex从第几行或者列开始删除
len删除多少行或者列
+ +- **后台更新**: + + 如果rc的值是r删除行, 如果rc的值为c则删除列, 例如rc=r,index=4,len=5,则代表从第4行开始删除之后的5行(4、5、6、7、8)。 + + 主要是对 `jfgridfile[i].celldata` 中的单元格进行操作,删除参数中所描述符合条件的单元格并且更新其他单元格的行列值,以上述为例,首先查找单元格中r值在4到8的所有单元格并删除,然后把本来行号9以后的单元格的r值减去5,最后把 `jfgridfile[i].row` 减去5。 + 如果v值为 `"#__qkdelete#"`(不含引号),则此处为需要删除的单元格。 + +- **前台查看**: + + 可以删除行或者列,然后到chrome控制台中查看"t"=="drc"的操作。 + +### 增加行或列 + +- **格式**: + + ```json + { + "t": "arc", + "i": 0, + "v": { + "index": 5, + "len": 10, + "data": [] + }, + "rc": "c" + } + ``` + +- **说明**: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
参数说明
t操作类型表示符号
i当前sheet的index值
rc行操作还是列操作,值r代表行,c代表列
vindex从第几行或者列开始新增
len增加多少行或者列
data新增行或者列的内容
+ +- **后台更新**: + + 如果rc的值是r新增行, 如果rc的值为c则新增列, 例如rc=r,index=4,len=5,则代表从第4行开始增加5行,如果data为空则增加空行,如果data不为空则用data中的数组添加新增的行中。 + 主要是对 `jfgridfile[i].celldata` 中的单元格进行操作,以上述为例,首先 `jfgridfile[i].row` 加5,然后把r大于4的单元格的整体的r值+5,如果data为空则增加空行则结束,如果data不为空则把二维数组data转换为 `{r:0,c:0,v:100}` 的格式并添加到celldata中,转换的伪代码如下: + ```javascript + var ret = []; + for(var r=0;r + + 参数 + 说明 + + + t + 操作类型表示符号 + + + i + 当前sheet的index值 + + + v + name + 隐藏后跳转的sheet的index值 + + + color + Sheet颜色 + + + status + 激活状态 + + + order + Sheet摆放顺序 + + + index + Index索引 + + + celldata + 单元格数据集 + + + config + 设置 + + + pivotTable + 数据透视表设置 + + + isPivotTable + 是否数据透视表 + + + + +- **后台更新**: + + 添加一行(一个文档)到数据库中。 + +### 复制sheet + +- **格式**: + + ```json + { + "t": "shc", + "i": "新建sheet的位置", + "v": { + "copyindex": "copyindex" + } + } + ``` + +- **后台更新**: + + 复制表格中的sheet索引值为copyindex并添加到数据库中,添加的设置该新文档的index为i对应的值。 + +### 删除sheet + +- **格式**: + + ```json + { + "t": "shd", + "i": null, + "v": { + "deleIndex": 0 + } + } + ``` + +- **说明**: + + + + + + + + + + + + + + + + +
参数说明
t操作类型表示符号
vdeleIndex需要删除的sheet索引
+ +- **后台更新**: + + 删除索引为deleIndex对应值得sheet。 + +### 位置 + +- **格式**: + + ```json + { + "t": "shr", + "v": { + "index": "positon" + } + } + ``` + +- **说明**: + + |参数|说明| + | ------------ | ------------ | + |t|操作类型表示符号| + |v|设置Sheet的排序,为一个键值对,key代表sheet的index,value代表order值。格式为:`{"1": 3, "2":1, "0": 2, "3":0}| + +- **后台更新**: + + 对sheet的index等于key的页设置其order属性为value值。示例: + + `jfgridfile[key1].order = value1` + `jfgridfile[key2].order = value2` + `jfgridfile[key3].order = value3` + +## sheet属性(隐藏或显示) + +- **格式**: + + ```json + { + "t": "sh", + "i": 0, + "v": 1, + "op": " hide", + "cur": 2 + } + ``` + +- **说明**: + + |参数|说明| + | ------------ | ------------ | + |t|操作类型表示符号| + |i|当前sheet的index值| + |op|操作选项,有hide、show。| + |v|如果hide为1则隐藏,为0或者空则为显示| + |cur|隐藏后设置索引对应cur的sheet为激活状态。| + +- **后台更新**: + + 更新"i"对应sheet的根路径hide字段为v,当隐藏时status值为0,当显示时为1, 如果为隐藏则更新index对应cur的sheet的status状态为1。 + +## 表格信息更改 + +### 表格名称 + +- **格式**: + + ```json + { + "t": "na", + "i": null, + "v": "数据" + } + ``` + +- **说明**: + + |参数|说明| + | ------------ | ------------ | + |t|操作类型表示符号| + |v|表格的名称| + +- **后台更新**: + + 根据gridkey更新数据库中的表格名称。 + +### 缩略图 + +- **格式**: + + ```json + { + "t": "thumb", + "img": "base64", + "curindex": "curindx" + } + ``` + +- **说明**: + + |参数|说明| + | ------------ | ------------ | + |t|操作类型表示符号| + |img|当前表格的缩略图,为base64字符串| + |curindex|当前表格默认打开的sheet| + +- **后台更新**: + + 根据gridkey更新mysql中表格的缩略图字段为img值,同时更新index为curindex值的sheet的status字段为1,设置其他sheet的status值为0。 \ No newline at end of file