diff --git a/docs/zh/guide/operate.md b/docs/zh/guide/operate.md index 4a82ad4..59288b1 100644 --- a/docs/zh/guide/operate.md +++ b/docs/zh/guide/operate.md @@ -10,6 +10,8 @@ ## 单元格刷新 +### 单个单元格刷新 + - **格式**: ```json @@ -48,6 +50,43 @@ ``` 后台在保存前台推送的数据时,会更新 `luckysheetfile[i].celldata` 字段,如果存在该单元格则更新,如果没有则添加,如果存在该单元格但是`v`为null则删除该单元格。 + +### 范围单元格刷新 + +- **格式**: + + ```json + { + "t": "rv", + "i": "Sheet_ahKdzaNC65iL_1598343160744", + "v": [ + [ + { "v": 3, "ct": { "fa": "General", "t": "n" }, "m": "3" } + ], + [ + { "v": 4, "ct": { "fa": "General", "t": "n" }, "m": "4" } + ] + ], + "range": { + "row": [ 1, 2 ], + "column": [ 1, 1 ] + } + } + ``` + +- **说明**: + + |参数|说明| + | ------------ | ------------ | + |t|操作类型表示符号| + |i|当前sheet的索引值| + |v|范围二维数组,单元格对象参考 [单元格属性表](/zh/guide/cell.html#基本单元格)| + |range|范围行列数| + +- **后台更新**: + + 前端维护luckysheetfile[i].data,而单元格更新到后台,继续维护`luckysheetfile[i].celldata` 参数,需要将指定位置`range`的所有单元格数据替换为新的数据 + ## config操作 - **格式**: @@ -78,7 +117,7 @@ - **后台更新**: - 更新 `luckysheetfile[i].config.[k] = v` ,如果`config`中不存在`k`,则新建一个`k`属性并设置为空。 + 更新 `luckysheetfile[i].config[k] = v` ,如果`config`中不存在`k`,则新建一个`k`属性并设置为空。 注意一点,修改config中的某个配置时,会把这个配置全部传输到后台,比如修改borderInfo,本来已经有一个含边框的单元格了,再新设置一个单元格边框,这时候会把这两个单元格边框信息都传输到后台,而不做更细颗粒的操作。 @@ -92,7 +131,7 @@ "k": "rowhidden" } ``` - - 后台更新:`luckysheetfile["Sheet_0554kKiKl4M7_1597974810804"].config.["rowhidden"] = { "5": 0, "6": 0, "13": 0, "14": 0 }` + - 后台更新:`luckysheetfile["Sheet_0554kKiKl4M7_1597974810804"].config["rowhidden"] = { "5": 0, "6": 0, "13": 0, "14": 0 }` 2. 修改行高: - 发送到后台: @@ -104,7 +143,7 @@ "k": "rowlen" } ``` - - 后台更新:`luckysheetfile["Sheet_0554kKiKl4M7_1597974810804"].config.["rowlen"] = { "9": 20, "11": 71, "15": 58 }` + - 后台更新:`luckysheetfile["Sheet_0554kKiKl4M7_1597974810804"].config["rowlen"] = { "9": 20, "11": 71, "15": 58 }` 3. 修改列宽: - 发送到后台: @@ -116,7 +155,7 @@ "k": "columnlen" } ``` - - 后台更新:`luckysheetfile["Sheet_0554kKiKl4M7_1597974810804"].config.["columnlen"] = { "2": 135 }` + - 后台更新:`luckysheetfile["Sheet_0554kKiKl4M7_1597974810804"].config["columnlen"] = { "2": 135 }` ## 通用保存 @@ -128,10 +167,7 @@ "i": 0, "v": { "type": "rangeRow", - "range": { - "row_focus": 1, - "column_focus": 1 - } + "range": { "row_focus": 1, "column_focus": 1 } }, "k": "frozen" } @@ -148,50 +184,370 @@ - **后台更新**: - `luckysheetfile[3].[k]= v` - 如果`s`为`true`,则为 `luckysheetfile[3].[k]= JSON.stringify(v)` - - 1. 数据透视表: - - 输入:`{"t":"all","i":1,"v":{………},"k":"pivotTable", "s": false}` - - 更新:`luckysheetfile[1].["pivotTable"] = {………}` + 更新 `luckysheetfile[i][k] = v` ,如果`luckysheetfile[i]`中不存在`k`,则新建一个`k`属性并设置为空。 - 2. 冻结行列: - - 输入:`{"t":"all","i":3,"v":{………},"k":"freezen", "s": false}` - - 更新:`luckysheetfile[3].["freezen"] = {………}` + 1. 冻结行列: + - 发送到后台: + ```json + { + "t": "all", + "i": 0, + "v": { + "type": "rangeRow", + "range": { "row_focus": 1, "column_focus": 1 } + }, + "k": "frozen" + } + ``` + - 后台更新: + ```js + luckysheetfile[0]["frozen"] = { + "type": "rangeRow", + "range": { "row_focus": 1, "column_focus": 1 } + } + ``` - 3. 筛选范围: - - 输入:`{"t":"all","i":3,"v":{………},"k":"filter_select", "s": true }` - - 更新:`luckysheetfile[3].["filter_select"] = JSON.stringify ({………})` - - 4. Sheet名称: - - 输入:`{"t":"all","i":1,"v":"文档","k":"name", "s": false}` - - 更新:`luckysheetfile[1].["name"] = "文档"` + 2. 修改工作表名称: + - 发送到后台: + ```json + { + "t": "all", + "i": 0, + "v": "Cell22", + "k": "name" + } + ``` + - 后台更新:`luckysheetfile[0]["name"] = "Cell22"` + + 3. 修改工作表颜色: + - 发送到后台: + ```json + { + "t": "all", + "i": 0, + "v": "#f02323", + "k": "color" + } + ``` + - 后台更新:`luckysheetfile[0]["color"] = "#f02323"` + + 4. 合并单元格: + - 发送到后台: + ```json + { + "t": "all", + "i": "Sheet_aheLt0Waf1lk_1598248231626", + "v": { + "merge": { + "0_0": { "r": 0, "c": 0, "rs": 2, "cs": 1 } + }, + "rowlen": {} + }, + "k": "config" + } + ``` + - 后台更新: + ```js + luckysheetfile["Sheet_aheLt0Waf1lk_1598248231626"]["config"] = { + "merge": { + "0_0": { "r": 0, "c": 0, "rs": 2, "cs": 1 } + }, + "rowlen": {} + } + ``` + + 注意,合并单元格的更新比较特殊,要求把整个config传输到后台,因为合并单元格可能会影响到其他参数。 + + 5. 筛选范围: + - 发送到后台: + ```json + { + "t": "all", + "i": 0, + "v": { + "row": [ 16, 21 ], + "column": [ 2, 3 ] + }, + "k": "filter_select" + } + ``` + - 后台更新: + ```js + luckysheetfile[0]["filter_select"] = { + "row": [ 16, 21 ], + "column": [ 2, 3 ] + } + ``` + + 6. 筛选的具体设置: + - 发送到后台: + ```json + { + "t": "all", + "i": "0", + "v": { + "0": { + "caljs": { + "value": "textinclude", + "text": "Text contains", + "type": "1", + "value1": "Lucky" + }, + "rowhidden": { + "18": 0 + }, + "optionstate": true, + "str": 17, + "edr": 19, + "cindex": 2, + "stc": 2, + "edc": 3 + } + }, + "k": "filter" + } + ``` + - 后台更新: + ```js + luckysheetfile[0]["filter"] = { + "0": { + "caljs": { + "value": "textinclude", + "text": "Text contains", + "type": "1", + "value1": "Lucky" + }, + "rowhidden": { + "18": 0 + }, + "optionstate": true, + "str": 17, + "edr": 19, + "cindex": 2, + "stc": 2, + "edc": 3 + } + } + ``` + + 7. 交替颜色: + - 发送到后台: + ```json + { + "t": "all", + "i": "Sheet_4N45tpMd0ni4_1598250591760", + "v": [ + { + "cellrange": { + "row": [ 2, 6 ], + "column": [ 1, 4 ] + }, + "format": { + "head": { + "fc": "#000", + "bc": "#f6cb4b" + }, + "one": { + "fc": "#000", + "bc": "#ffffff" + }, + "two": { + "fc": "#000", + "bc": "#fff9e7" + }, + "foot": { + "fc": "#000", + "bc": "#ffebac" + } + }, + "hasRowHeader": true, + "hasRowFooter": true + } + ], + "k": "luckysheet_alternateformat_save" + } + ``` + - 后台更新: + ```js + luckysheetfile["Sheet_4N45tpMd0ni4_1598250591760"]["luckysheet_alternateformat_save"] = [ + { + "cellrange": { + "row": [ 2, 6 ], + "column": [ 1, 4 ] + }, + "format": { + "head": { + "fc": "#000", + "bc": "#f6cb4b" + }, + "one": { + "fc": "#000", + "bc": "#ffffff" + }, + "two": { + "fc": "#000", + "bc": "#fff9e7" + }, + "foot": { + "fc": "#000", + "bc": "#ffebac" + } + }, + "hasRowHeader": true, + "hasRowFooter": true + } + ] + ``` + + 8. 条件格式: + - 发送到后台: + ```json + { + "t": "all", + "i": "Sheet_545W7w03kLkC_1598251927583", + "v": [ + { + "type": "default", + "cellrange": [ + { + "row": [ 2, 6 ], + "column": [ 1, 3 ] + } + ], + "format": { + "textColor": "#9c0006", + "cellColor": "#ffc7ce" + }, + "conditionName": "greaterThan", + "conditionRange": [], + "conditionValue": [ "3" ] + } + ], + "k": "luckysheet_conditionformat_save" + } + ``` + - 后台更新: + ```js + luckysheetfile["Sheet_545W7w03kLkC_1598251927583"]["luckysheet_conditionformat_save"] = [ + { + "type": "default", + "cellrange": [ + { + "row": [ 2, 6 ], + "column": [ 1, 3 ] + } + ], + "format": { + "textColor": "#9c0006", + "cellColor": "#ffc7ce" + }, + "conditionName": "greaterThan", + "conditionRange": [], + "conditionValue": [ "3" ] + } + ] + ``` + + 9. 数据透视表: + - 发送到后台: + ```json + { + "t": "all", + "i": "Sheet_r3Cz5bbxipL3_1598252547290", + "v": { + "pivot_select_save": { + "row": [ 0, 2 ], + "column": [ 0, 2 ] + }, + "pivotDataSheetIndex": "Sheet_31ikLMip330K_1598252536645", + "column": [], + "row": [], + "filter": [], + "values": [], + "showType": "column" + }, + "k": "pivotTable" + } + ``` + - 后台更新: + ```js + luckysheetfile["Sheet_r3Cz5bbxipL3_1598252547290"]["pivotTable"] = { + "pivot_select_save": { + "row": [ 0, 2 ], + "column": [ 0, 2 ] + }, + "pivotDataSheetIndex": "Sheet_31ikLMip330K_1598252536645", + "column": [], + "row": [], + "filter": [], + "values": [], + "showType": "column" + } + ``` - 5. Sheet颜色: - - 输入: `{"t":"all","i":2,"v":"#FFF000","k":"color", "s": false}` - - 更新:`luckysheetfile[2].["color"] = "#FFF000"` + 注意,虽然数据透视表的格式是这个,但是当你选择一个范围之后,点击生产数据透视表时,Luckysheet会先执行新建sheet页和切换到该sheet页的操作,才能在新建的sheet页加上数据透视表。 + + 10. 动态数组: + - 发送到后台: + ```json + { + "t": "all", + "i": "Sheet_r3Cz5bbxipL3_1598252547290", + "v": [ + { + "r": 4, + "c": 5, + "f": "=UNIQUE(B2:E9)", + "data": [ + [ 1, 2, 3, 4 ], + [ 2, 3, 4, 5 ], + [ 3, 4, 5, 6 ], + [ 4, 5, 6, 7 ], + [ 5, 6, 7, 8 ], + [ 6, 7, 8, 9 ], + [ 7, 8, 9, 10 ], + [ 8, 9, 10, 11 ] + ] + } + ], + "k": "dynamicArray" + } + ``` + - 后台更新: + ```js + luckysheetfile["Sheet_r3Cz5bbxipL3_1598252547290"]["dynamicArray"] = [ + { + "r": 4, + "c": 5, + "f": "=UNIQUE(B2:E9)", + "data": [ + [ 1, 2, 3, 4 ], + [ 2, 3, 4, 5 ], + [ 3, 4, 5, 6 ], + [ 4, 5, 6, 7 ], + [ 5, 6, 7, 8 ], + [ 6, 7, 8, 9 ], + [ 7, 8, 9, 10 ], + [ 8, 9, 10, 11 ] + ] + } + ] + ``` ## 函数链操作 - **格式**: ```json + { "t": "fc", - "i": 0, - "v": { - "r": 3, - "c": 7, - "index": 0, - "func": [ - true, - 187282, - "=SUM(E4:G4)" - ] - }, + "i": "0", + "v": "{\"r\":1,\"c\":1,\"index\":\"0\",\"func\":[true,3,\"=sum(A1:B1)\"]}", "op": "add", - "pos": 0 + "pos": 1 } + ``` - **说明**: @@ -207,13 +563,29 @@ - **后台更新**: calcChain为一个数组 - - 如果`op`的值为`add`则添加到末尾 `luckysheetfile[i].calcChain.push (v)`, - - 如果`op`的值为`update`则更新 `luckysheetfile[i].calcChain[pos]= v`, - - 如果`op`的值为`del`则删除 `luckysheetfile[i].calcChain.splice(pos, 1)`。 - -- **前台查看**: - - 可以修改任意单元格的数值,然后到chrome控制台中查看`"t"=="v"`的操作。 + - 如果`op`的值为`add`则添加到末尾 `luckysheetfile[0].calcChain.push(v)`, + - 如果`op`的值为`update`,格式为: + ```json + { + "t": "fc", + "i": "0", + "v": "{\"r\":0,\"c\":3,\"index\":\"0\",\"func\":[true,1,\"=Formula!A1+Formula!B1+1\"],\"color\":\"w\",\"parent\":null,\"chidren\":{},\"times\":0}", + "op": "update", + "pos": 0 + } + ``` + 更新 `luckysheetfile[0].calcChain[pos] = v`, + - 如果`op`的值为`del`则删除,格式为: + ```json + { + "t": "fc", + "i": 0, + "v": null, + "op": "del", + "pos": 0 + } + ``` + `luckysheetfile[0].calcChain.splice(pos, 1)`。 ## 行列操作 @@ -271,10 +643,6 @@ 主要是对 `luckysheetfile[i].celldata` 中的单元格进行操作,删除参数中所描述符合条件的单元格并且更新其他单元格的行列值,以上述为例,首先查找单元格中`r`值在4到8的所有单元格并删除,然后把本来行号9以后的单元格的`r`值减去5,最后把 `luckysheetfile[i].row` 减去5。 如果`v`值为 `"#__qkdelete#"`(不含引号),则此处为需要删除的单元格。 -- **前台查看**: - - 可以删除行或者列,然后到chrome控制台中查看`"t"=="drc"`的操作。 - ### 增加行或列 - **格式**: @@ -282,13 +650,14 @@ ```json { "t": "arc", - "i": 0, + "i": "0", "v": { - "index": 5, - "len": 10, + "index": 1, + "len": 1, + "direction": "lefttop", "data": [] }, - "rc": "c" + "rc": "r" } ``` @@ -312,7 +681,7 @@
参数 | +说明 | +|
t | +操作类型表示符号 | +|
v | +deleIndex | +需要恢复的sheet索引 | +