From 2b6f8ceeceac886664c6219265a645544a835437 Mon Sep 17 00:00:00 2001 From: lrz <1414556676@qq.com> Date: Fri, 14 Aug 2020 23:16:10 +0800 Subject: [PATCH] docs(docs): docs api config api,config change --- README-zh.md | 24 +- README.md | 24 +- docs/.vuepress/config.js | 8 +- docs/guide/{format.md => cell.md} | 0 docs/guide/config.md | 37 +- docs/zh/guide/README.md | 42 +- docs/zh/guide/api.md | 1462 +++++++++++++++++++- docs/zh/guide/{format.md => cell.md} | 553 +++----- docs/zh/guide/config.md | 248 ++-- docs/zh/guide/data.md | 760 +--------- docs/zh/guide/operate.md | 10 +- docs/zh/guide/sheet.md | 764 ++++++++++ src/config.js | 1 - src/controllers/handler.js | 2 +- src/controllers/luckysheetConfigsetting.js | 1 - src/core.js | 1 - 16 files changed, 2586 insertions(+), 1351 deletions(-) rename docs/guide/{format.md => cell.md} (100%) rename docs/zh/guide/{format.md => cell.md} (77%) create mode 100644 docs/zh/guide/sheet.md diff --git a/README-zh.md b/README-zh.md index d7af642..aa69400 100644 --- a/README-zh.md +++ b/README-zh.md @@ -2,7 +2,7 @@ 简体中文 | [English](./README.md) ## 介绍 -Luckysheet ,一款纯前端类似excel的在线表格,功能强大、配置简单、完全开源。 +🚀Luckysheet ,一款纯前端类似excel的在线表格,功能强大、配置简单、完全开源。 ## 文档 [在线demo](https://mengshukeji.github.io/LuckysheetDemo/) @@ -13,7 +13,7 @@ Luckysheet ,一款纯前端类似excel的在线表格,功能强大、配置 ## 特性 -### 格式设置 +### 🛠️格式设置 + **样式** (修改字体样式,字号,颜色或者其他通用的样式) + **条件格式** (突出显示所关注的单元格或单元格区域;强调异常值;使用数据栏、色阶和图标集(与数据中的特定变体对应)直观地显示数据) + **文本对齐及旋转** @@ -22,7 +22,7 @@ Luckysheet ,一款纯前端类似excel的在线表格,功能强大、配置 + **货币, 百分比, 数字, 日期** + **Custom** (和excel保持一致,例如: `##,###0.00` , `$1,234.56$##,###0.00_);[Red]($##,###0.00)`, `_($* ##,###0.00_);_(...($* "-"_);_(@_)`, `08-05 PM 01:30MM-dd AM/PM hh:mm` ) -### 单元格 +### 🧬单元格 + **拖拽选取来修改单元格** (对选区进行操作,可以拖动四边来移动选区,也可以在右下角对选区进行下拉填充操作) + **选取下拉填充** (对于一个1,2,3,4,5的序列,将会按照间隔为1进行下拉填充,而对2,4,6,8将会以2作为间隔。支持等差数列,等比数列,日期,周,天,月,年,中文数字填充) + **自动填充选项** (下拉填充后,会出现填充选项的菜单,支持选择复制,序列,仅格式,只填充格式,天,月,年的选择) @@ -31,19 +31,19 @@ Luckysheet ,一款纯前端类似excel的在线表格,功能强大、配置 + **定位** (可以根据单元格的数据类型进行自动定位并选中,选中后可以批量进行格式等操作) + **合并单元格** -### 行和列操作 +### 🖱️行和列操作 + **隐藏,插入,删除行或列** + **冻结行或列** (支持冻结首行和首列,冻结到选区,冻结调节杆可以进行拖动操作) + **文本分列** (可以把文本根据不同符号进行拆分,和excel的分列功能类似) -### 操作体验 +### 🔨操作体验 + **撤销/重做** + **复制/粘贴/剪切操作** (支持Luckysheet到excel和excel到Luckysheet带格式的互相拷贝) + **快捷键支持** (快捷键操作保持与excel一致,如果有不同或者缺失请反馈给我们) + **格式刷** (与google sheet类似) + **任意选区拖拽** (选择单元格,输入公式,插入图表,会与选区相关,可以通过任意拖动和放大缩小选区来改变与之关联的参数) -### 公式和函数 +### ⚙️公式和函数 + **内置公式** + 数学 (SUMIFS, AVERAGEIFS, SUMIF, SUM, etc.) + 文本 (CONCATENATE, REGEXMATCH, MID) @@ -56,32 +56,32 @@ Luckysheet ,一款纯前端类似excel的在线表格,功能强大、配置 + **远程公式** (DM_TEXT_TFIDF, DM_TEXT_TEXTRANK,DATA_CN_STOCK_CLOSE etc. Need remote interface, can realize complex calculation) + **自定义公式** (根据身份证识别年龄,性别,生日,省份,城市等. AGE_BY_IDCARD, SEX_BY_IDCARD, BIRTHDAY_BY_IDCARD, PROVINCE_BY_IDCARD, CITY_BY_IDCARD, etc. 可以任意加入自己的公式哦) -### 表格操作 +### 📐表格操作 + **筛选** (支持颜色、数字、字符、日期的筛选) + **排序** (同时加入多个字段进行排序) -### 数据透视表 +### 📈数据透视表 + **字段拖拽** (操作方式与excel类似,拖动字段到行、列、数值、筛选等4个区域) + **聚合方式** (支持汇总、计数、去重计数、平均、最大、最小、中位数、协方差、标准差、方差等计算) + **筛选数据** (可对字段进行筛选后再进行汇总) + **数据透视表下钻** (双击数据透视表中的数据,可以下钻查看到明细,操作方式与excel一致) + **根据数据透视表新建图表** (数据透视表产生的数据也可以进行图表的制作) -### 图表 +### 📊图表 + **支持的图表类型** (目前折线图、柱状图、面积图、条形图、饼图可以使用,散点图、雷达图、仪表盘、漏斗图正在接入,其他图表正在陆续开发中,请大家给予建议) + **关于图表插件** (图表使用了一个中间插件[ChartMix](https://github.com/mengshukeji/chartMix)(MIT协议): 目前支持ECharts,正在逐步接入Highcharts、阿里G2、amCharts、googleChart、chart.js) + **Sparklines小图** (以公式的形式进行设置和展示,目前支持:折线图、面积图、柱状图、累积图、条形图、离散图、三态图、饼图、箱线图等) -### 分享及写作 +### ✍️分享及写作 + **评论** (评论的删除、添加、修改、隐藏) + **共享编辑** (支持多用户共享编辑,内置API) -### Luckysheet专有 +### ⚡Luckysheet专有 + **矩阵计算** (通过右键菜单进行支持:对选区内的数据进行转置、旋转、数值计算) + **截图** (把选区的内容进行截图展示) + **复制到其他格式** (右键菜单的"复制为", 支持复制为json、array、对角线数据、去重等) -### 未来开发计划 +### ⏱️未来开发计划 + **插入图表和svg形状** (支持JPG,PNG,SVG,Pen tool的插入、修改和删除,并且随表格的变动而产生变化) + **数据验证(表单功能)** (支持Checkbox, drop-down list, datePicker) + **打印及设置** (像excel一样进行打印设置,并导出为图片或者PDF) diff --git a/README.md b/README.md index 0eca531..818a696 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ English| [简体中文](./README-zh.md) ## Introduction -Luckysheet is an online spreadsheet like excel that is powerful, simple to configure, and completely open source. +🚀Luckysheet is an online spreadsheet like excel that is powerful, simple to configure, and completely open source. ## Documentation [Online demo](https://mengshukeji.github.io/LuckysheetDemo/) @@ -15,7 +15,7 @@ Luckysheet is an online spreadsheet like excel that is powerful, simple to confi ## Features -### Formatting +### 🛠️Formatting + **Styling** (Change font style, size, color, or apply effects) + **Conditional formatting** (highlight interesting cells or ranges of cells, emphasize unusual values, and visualize data by using data bars, color scales, and icon sets that correspond to specific variations in the data) + **Align or rotate text** @@ -24,7 +24,7 @@ Luckysheet is an online spreadsheet like excel that is powerful, simple to confi + **currency, percentages, decimals, dates** + **Custom** (E.g `##,###0.00` , `$1,234.56$##,###0.00_);[Red]($##,###0.00)`, `_($* ##,###0.00_);_(...($* "-"_);_(@_)`, `08-05 PM 01:30MM-dd AM/PM hh:mm` ) -### Cells +### 🧬Cells + **Move cells by drag and dropping** (Operate on selection) + **Fill handle** (For a series like 1, 2, 3, 4, 5..., type 1 and 2 in the first two cells. For the series 2, 4, 6, 8..., type 2 and 4. Support arithmetic sequence, geometric sequence,date, week,chinese numbers) + **Auto Fill Options** (Fill copy, sequence, only format, no format, day, month, year) @@ -33,19 +33,19 @@ Luckysheet is an online spreadsheet like excel that is powerful, simple to confi + **Location** (Cells can be selected according to the data type) + **Merge cells** -### Row & columns +### 🖱️Row & columns + **Hide, Insert, Delete rows and columns** + **Frozen rows and columns** (First row, first column, Frozen to selection, freeze adjustment lever can be dragged) + **Split text** (Split text into different columns with the Convert Text to Columns Wizard) -### Operation +### 🔨Operation + **Undo/Redo** + **Copy/Paste/Cut** (Copy from excel to Luckysheet with format, vice versa) + **Hot key** (The operating experience is consistent with excel, if there are differences or missing, please feedback to us) + **Format Painter** (Similar to google sheet) + **Selection by drag and dropping** (Change the parameters of formula and chart through selection) -### Formulas & functions +### ⚙️Formulas & functions + **Built-in formulas** + Math (SUMIFS, AVERAGEIFS, SUMIF, SUM, etc.) + Text (CONCATENATE, REGEXMATCH, MID) @@ -58,32 +58,32 @@ Luckysheet is an online spreadsheet like excel that is powerful, simple to confi + **Remote formulas** (DM_TEXT_TFIDF, DM_TEXT_TEXTRANK,DATA_CN_STOCK_CLOSE etc. Need remote interface, can realize complex calculation) + **Custom** (Some formula suitable for use in China have been added. AGE_BY_IDCARD, SEX_BY_IDCARD, BIRTHDAY_BY_IDCARD, PROVINCE_BY_IDCARD, CITY_BY_IDCARD, etc. You can define any formula you want) -### Tables +### 📐Tables + **Filters** (Support color , numerical, date, text filtering) + **Sort** (Sort multiple fields simultaneously) -### Pivot table +### 📈Pivot table + **Arrange fields** (Add fileds to rows, columns, values, area, it is similar to excel) + **Aggregation** (Surport Sum,Count,CountA,CountUnique,Average,Max,Min,Median,Product,Stdev,Stdevp,Var,VarP etc.) + **Filter data** (Add fileds to filters area and analyze the desired data ) + **Drill down** (Double click pivot table cell to drill down for detail data ) + **Create a PivotChart** (Pivot table can create a chart ) -### Chart +### 📊Chart + **Support types** (Line, Column, Area, Bar, Pie, comming soon Scatter, Radar, Gauge, Funnel etc.) + **Chart Plugins** (Link to another project [ChartMix](https://github.com/mengshukeji/chartMix)(MIT): ECharts is currently supported,Highcharts, Ali G2, amCharts, googleChart, chart.js are being developed gradually) + **Sparklines** (Support by formula : Line, Pie, Box, Pie etc.) -### Share +### ✍️Share + **Comments** (Add, delete, update) + **Collaborate** (Simultaneous editing by multiple users) -### Luckysheet +### ⚡Luckysheet + **Matrix operation** (Operate selection through the right-click menu: transpose, rotate, numerical calculation) + **Screenshot** (Take a screenshot with selection) + **Copy to** (In the right-click menu, copy selection to json, array etc.) -### Coming soon +### ⏱️Coming soon + **Insert picture and Shapes** (JPG,PNG,SVG,Pen tool and so on) + **Data validation** (Checkbox, drop-down list, datePicker) + **Print** (Like excel print option, save to PDF) diff --git a/docs/.vuepress/config.js b/docs/.vuepress/config.js index 1252510..3c6b023 100644 --- a/docs/.vuepress/config.js +++ b/docs/.vuepress/config.js @@ -49,10 +49,10 @@ module.exports = { '/guide/': [ '', 'config', - 'api', 'data', + 'cell', 'operate', - 'format', + 'api', 'FAQ' ], }, @@ -84,10 +84,10 @@ module.exports = { '/zh/guide/': [ '', 'config', - 'api', 'data', + 'cell', 'operate', - 'format', + 'api', 'FAQ' ], }, diff --git a/docs/guide/format.md b/docs/guide/cell.md similarity index 100% rename from docs/guide/format.md rename to docs/guide/cell.md diff --git a/docs/guide/config.md b/docs/guide/config.md index e2e3ab0..0fa6c7b 100644 --- a/docs/guide/config.md +++ b/docs/guide/config.md @@ -17,6 +17,12 @@ - Default: "en" - Usage: Internationalization settings, allowing to set the language of the table, temporarily supporting Chinese ("zh") and English ("en") +------------ +## gridKey +- Type: String +- Default: "" +- Usage: Form unique identifier + ------------ ## column - Type: Number @@ -84,7 +90,6 @@ - Usage: Whether to display the bottom table name area ------------ - ## showstatisticBar - Type: Boolean - Default: true @@ -108,24 +113,6 @@ - Default: true - Usage: Allow add column ------------- -## pointEdit -- Type: Boolean -- Default: false -- Usage: Whether the editor inserts table mode - ------------- -## pointEditUpdate -- Type: Function -- Default: null -- Usage: Editor table update function - ------------- -## pointEditZoom -- Type: Number -- Default: 1 -- Usage: Editor table scaling when editing - ------------ ## userInfo - Type: String @@ -150,12 +137,6 @@ - Default: window.devicePixelRatio - Usage: Device Pixel Ratio, the larger the ratio, the higher the table resolution ------------- -## gridKey -- Type: String -- Default: "" -- Usage: Form unique identifier - ------------ ## allowUpdate - Type: Boolean @@ -204,12 +185,6 @@ - Default: false - Usage: Allow next page to load ------------- -## chartConfigChange -- Type: Function -- Default: null -- Usage: Custom method for triggering chart update in chart plugin - ------------ ## beforeCreateDom - Type: Function diff --git a/docs/zh/guide/README.md b/docs/zh/guide/README.md index 4308406..9088cb7 100644 --- a/docs/zh/guide/README.md +++ b/docs/zh/guide/README.md @@ -155,25 +155,27 @@ luckysheetfile = [ {sheet1设置}, {sheet2设置}, {sheet3设置} ]` ![excel sheet](https://minio.cnbabylon.com/public/luckysheet/excel.png) -文件中的一个sheet的示例如下: -```javascript -luckysheetfile[0] = +文件中的一个sheet的数据`luckysheetfile[0]`的结构如下: +```json { "name": "Cell", //工作表名称 "color": "", //工作表颜色 - "config": {}, //表格行高、列宽、合并单元格、边框、隐藏行等设置 "index": "0", //工作表索引 - "chart": [], //图表配置 "status": "1", //激活状态 "order": "0", //工作表的顺序 "hide": 0,//是否隐藏 - "column": 18, //列数 "row": 36, //行数 - "celldata": [], //原始单元格数据集 - "visibledatarow": [], //所有行的位置 - "visibledatacolumn": [], //所有列的位置 - "ch_width": 2322, //工作表区域的宽度 - "rh_height": 949, //工作表区域的高度 + "column": 18, //列数 + "config": { + "merge":{}, //合并单元格 + "rowlen":{}, //表格行高 + "columnlen":{}, //表格列宽 + "rowhidden":{}, //隐藏行 + "columnhidden":{}, //隐藏列 + "borderInfo":{}, //边框 + }, + "celldata": [], //初始化使用的单元格数据 + "data": [], //更新和存储使用的单元格数据 "scrollLeft": 0, //左右滚动条位置 "scrollTop": 315, //上下滚动条位置 "luckysheet_select_save": [], //选中的区域 @@ -181,10 +183,17 @@ luckysheetfile[0] = "calcChain": [],//公式链 "isPivotTable":false,//是否数据透视表 "pivotTable":{},//数据透视表设置 - "filter_select": null,//筛选范围 + "filter_select": {},//筛选范围 "filter": null,//筛选配置 "luckysheet_alternateformat_save": [], //交替颜色 - "luckysheet_alternateformat_save_modelCustom": []//自定义交替颜色 + "luckysheet_alternateformat_save_modelCustom": [], //自定义交替颜色 + "freezen": {}, //冻结行列 + "chart": [], //图表配置 + "visibledatarow": [], //所有行的位置 + "visibledatacolumn": [], //所有列的位置 + "ch_width": 2322, //工作表区域的宽度 + "rh_height": 949, //工作表区域的高度 + "load": "1", //已加载过此sheet的标识 } ``` ### 查看方式 @@ -214,9 +223,4 @@ luckysheetfile[0] = | UP/DOWN/LEFT/RIGHT | 移动单元格选框 | | ENTER | 编辑单元格 | | TAB | 向右移动单元格选框 | -| DELETE | 清除单元格数据 | - -## 警告 -::: danger -新的API正在整理,可能随时变动,请谨慎使用! -::: \ No newline at end of file +| DELETE | 清除单元格数据 | \ No newline at end of file diff --git a/docs/zh/guide/api.md b/docs/zh/guide/api.md index 44aac5c..fd392c1 100644 --- a/docs/zh/guide/api.md +++ b/docs/zh/guide/api.md @@ -1,58 +1,1418 @@ # API -::: danger -新的API正在整理,请谨慎使用! -::: +Luckysheet针对常用的数据操作需求,开放了主要功能的API,开发者可以根据需要进行任意对接开发。 + +使用注意: +1. 所有方法均挂载到window.luckysheet对象下面,可以在浏览器控制台打印看到 +2. `success`回调函数第一个参数为API方法的返回值 +3. 需要新的API请到github [Issues](https://github.com/mengshukeji/Luckysheet/issues/new/choose)中提交,根据点赞数决定是否开放新API +3. ⚠️新的API正在整理,旧API可能随时变动,请谨慎使用并随时关注官网更新! + +## 单元格操作 + +### getCellValue(row, column [,setting]) + +- **参数**: + + - {Number} [row]: 单元格所在行数;从0开始的整数,0表示第一行 + - {Number} [column]: 单元格所在列数;从0开始的整数,0表示第一列 + - {PlainObject} [setting]: 可选参数 + + {String} [type]: 单元格的值,可以设置为"v":原始值 或者"m":显示值;默认值为'v',表示获取单元格的实际值 + + {Number} [order]: 工作表索引;默认值为当前工作表索引 + + {Function} [success]: 操作结束的回调函数 + +- **说明**: + + 获取单元格的值。 + + 特殊情况,单元格格式为`yyyy-MM-dd`,`type`为`'v'`时会强制取`'m'`显示值 + +- **示例**: + + - 返回当前工作表第1行第1列单元格的数据的v值 + + `luckysheet.getCellValue(0, 0)` + + - 返回指定data数据的第2行第2列单元格的原始值。 + + `luckysheet.getCellValue(1, 1, {type:"m"})` + +------------ + +### setCellValue(row, column, value [,setting]) + +- **参数**: +    - {Number} [row]: 单元格所在行数;从0开始的整数,0表示第一行 +    - {Number} [column]: 单元格所在列数;从0开始的整数,0表示第一列 +    - {Object | String | Number} [value]: 要设置的值;可以为字符串或数字,或为符合Luckysheet单元格格式的对象,参考 [单元格属性表](https://mengshukeji.github.io/LuckysheetDocs/zh/guide/format.html#%E5%8D%95%E5%85%83%E6%A0%BC%E5%B1%9E%E6%80%A7%E8%A1%A8) +    - {PlainObject} [setting]: 可选参数 +        + {Number} [order]: 工作表索引;默认值为当前工作表索引 +        + {Function} [success]: 操作结束的回调函数 + +- **说明**: + +    设置某个单元格的值,也可以设置整个单元格对象,用于同时设置多个单元格属性 + +- **示例**: + +    - 设置当前工作表"A1"单元格的值为"abc" +    `luckysheet.setCellValue(0, 0, 'abc');` + +------------ + +### setCellFormat(row, column, attr, value [,setting]) + +- **参数**: + - {Number} [row]: 单元格所在行数;从0开始的整数,0表示第一行 + - {Number} [column]: 单元格所在列数;从0开始的整数,0表示第一列 + - {String} [attr]: 属性类型,参考 [单元格属性表](https://mengshukeji.github.io/LuckysheetDocs/zh/guide/format.html#%E5%8D%95%E5%85%83%E6%A0%BC%E5%B1%9E%E6%80%A7%E8%A1%A8)的属性值 + - {String | Number | Object} [value]: 具体的设置值,一个属性会对应多个值,参考 [单元格属性表](https://mengshukeji.github.io/LuckysheetDocs/zh/guide/format.html#%E5%8D%95%E5%85%83%E6%A0%BC%E5%B1%9E%E6%80%A7%E8%A1%A8)的值示例,特殊情况:如果属性类型`attr`是单元格格式`ct`,则设置值`value`应提供`ct.fa`,比如设置A1单元格的格式为百分比格式: + + `luckysheet.setCellFormat(0, 0, "ct", "0.00%")` + + - {PlainObject} [setting]: 可选参数 + + {Number} [order]: 工作表索引;默认值为当前工作表索引 + + {Function} [success]: 操作结束的回调函数 + +- **说明**: + + 设置某个单元格的属性,如果要设置单元格的值或者同时设置多个单元格属性,推荐使用`setCellValue` + + 特殊的设置 + + - 边框设置时,attr为`"bd"`,value为一个key/value对象,需要同时设置边框类型:`borderType`/边框粗细:`style`/边框颜色:`color`/,比如设置A1单元格的边框为所有/红色/细: + + `luckysheet.setCellAttr(0, 0, "bd", {borderType: "border-right",style: "1", color: "#ff0000"})` + + 完整可选的设置参数如下: + + + 边框类型 `borderType:"border-left" | "border-right" | "border-top" | "border-bottom" | "border-all" | "border-outside" | "border-inside" | "border-horizontal" | "border-vertical" | "border-none"`, + + 边框粗细 `style: 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` + + 边框颜色 `color: 16进制颜色值` + +- **示例**: + + - 设置当前工作表A1单元格文本加粗 + `luckysheet.setCellFormat(0, 0, "bl", 1)` + - 设置第二个工作表的B2单元格背景为红色 + `luckysheet.setCellFormat(1, 1, "bg", "#ff0000", {order:1})` + - 设置当前工作表"A1"单元格的值为"abc" + `luckysheet.setCellFormat(0, 0, 'v', 'abc');` + +------------ + +### find(content [,setting]) + +- **参数**: + + - {String} [content]: 要查找的内容 + - {PlainObject} [setting]: 可选参数 + + {Boolean} [isRegularExpression]: 是否正则表达式匹配;默认为 `false` + + {Boolean} [isWholeWord]: 是否整词匹配;默认为 `false` + + {Boolean} [isCaseSensitive]: 是否区分大小写匹配;默认为 `false` + + {Number} [order]: 工作表索引;默认值为当前工作表索引 + + {Function} [success]: 操作结束的回调函数 + +- **说明**: + + 查找一个工作表中的指定内容,返回查找到的内容组成的单元格一位数组,数据格式同`celldata`。 + +------------ + +### replace(content, replaceContent [,setting]) + +- **参数**: + + - {String} [content]: 要查找的内容 + - {String} [replaceContent]: 要替换的内容 + - {PlainObject} [setting]: 可选参数 + + {Boolean} [isRegularExpression]: 是否正则表达式匹配;默认为 `false` + + {Boolean} [isWholeWord]: 是否整词匹配;默认为 `false` + + {Boolean} [isCaseSensitive]: 是否区分大小写匹配;默认为 `false` + + {Number} [order]: 工作表索引;默认值为当前工作表索引 + + {Function} [success]: 操作结束的回调函数 + +- **说明**: + + 查找一个工作表中的指定内容并替换成新的内容,返回替换后的内容组成的单元格一位数组,数据格式同`celldata`。 + +------------ + +## 行和列操作 + +### setHorizontalFrozen(isRange [,setting]) + +- **参数**: + - {Boolean} [isRange]: 是否冻结行到选区 + `isRange`可能的值有: + + + `"false"`: 冻结首行 + + `"true"`: 冻结行到选区 + - {PlainObject} [setting]: 可选参数 + + {Array | Object | String} [range]: `isRange`为`true`的时候设置,开启冻结的选区范围,支持选区的格式为`"A1:B2"`、`"sheetName!A1:B2"`或者`{row:[0,1],column:[0,1]}`,只能为单个选区;默认为当前选区 + + {Number} [order]: 工作表索引;默认值为当前工作表索引 + + {Function} [success]: 操作结束的回调函数 + +- **说明**: + + 冻结行操作 + + 特别注意,只有在`isRange`设置为`true`的时候,才需要设置`setting`中的`range`。 + +------------ + +### setVerticalFrozen(isRange [,setting]) + +- **参数**: + - {Boolean} [isRange]: 是否冻结列到选区 + `isRange`可能的值有: + + + `"false"`: 冻结首列 + + `"true"`: 冻结列到选区 + - {PlainObject} [setting]: 可选参数 + + {Array | Object | String} [range]: `isRange`为`true`的时候设置,开启冻结的选区范围,支持选区的格式为`"A1:B2"`、`"sheetName!A1:B2"`或者`{row:[0,1],column:[0,1]}`,只能为单个选区;默认为当前选区 + + {Number} [order]: 工作表索引;默认值为当前工作表索引 + + {Function} [success]: 操作结束的回调函数 + +- **说明**: + + 冻结列操作 + + 特别注意,只有在`isRange`设置为`true`的时候,才需要设置`setting`中的`range`。 + +------------ + +### setBothFrozen(isRange [,setting]) + +- **参数**: + - {Boolean} [isRange]: 是否冻结行列到选区 + `isRange`可能的值有: + + + `"false"`: 冻结行列 + + `"true"`: 冻结行列到选区 + - {PlainObject} [setting]: 可选参数 + + {Array | Object | String} [range]: `isRange`为`true`的时候设置,开启冻结的选区范围,支持选区的格式为`"A1:B2"`、`"sheetName!A1:B2"`或者`{row:[0,1],column:[0,1]}`,只能为单个选区;默认为当前选区 + + {Number} [order]: 工作表索引;默认值为当前工作表索引 + + {Function} [success]: 操作结束的回调函数 + +- **说明**: + + 冻结行列操作 + + 特别注意,只有在`isRange`设置为`true`的时候,才需要设置`setting`中的`range`。 + +------------ + +### cancelFrozen([setting]) + +- **参数**: + + - {PlainObject} [setting]: 可选参数 + + {Number} [order]: 工作表索引;默认值为当前工作表索引 + + {Function} [success]: 操作结束的回调函数 + +- **说明**: + + 取消冻结操作 + +------------ + +### insertRow( row [,setting]) + +- **参数**: + + - {Number} [row]: 在第几行插入空白行 + + - {PlainObject} [setting]: 可选参数 + + {Number} [number]: 插入的空白行数;默认为 1 + + {Number} [order]: 工作表索引;默认值为当前工作表索引 + + {Function} [success]: 操作结束的回调函数 + +- **说明**: + + 在第`row`行的位置,插入`number`行空白行 + +------------ + +### insertColumn( column [,setting]) + +- **参数**: + + - {Number} [column]: 在第几列插入空白列 + + - {PlainObject} [setting]: 可选参数 + + {Number} [number]: 插入的空白列数;默认为 1 + + {Number} [order]: 工作表索引;默认值为当前工作表索引 + + {Function} [success]: 操作结束的回调函数 + +- **说明**: + + 在第`column`列的位置,插入`number`列空白列 + +------------ + +### deleteRow(rowStart, rowEnd [,setting]) + +- **参数**: + + - {Number} [rowStart]: 要删除的起始行 + - {Number} [rowEnd]: 要删除的结束行 + + - {PlainObject} [setting]: 可选参数 + + {Number} [order]: 工作表索引;默认值为当前工作表索引 + + {Function} [success]: 操作结束的回调函数 + +- **说明**: + + 删除指定的行 + + 特别提醒,删除行之后,行的序号并不会变化,注意观察数据是否被正确删除即可。 + +------------ + +### deleteColumn(columnStart, columnEnd [,setting]) + +- **参数**: + + - {Number} [columnStart]: 要删除的起始列 + - {Number} [columnEnd]: 要删除的结束列 + + - {PlainObject} [setting]: 可选参数 + + {Number} [order]: 工作表索引;默认值为当前工作表索引 + + {Function} [success]: 操作结束的回调函数 + +- **说明**: + + 删除指定的列 + + 特别提醒,删除列之后,列的序号并不会变化,注意观察数据是否被正确删除即可。 + +------------ + +### hideRow(rowStart, rowEnd [,setting]) + +- **参数**: + + - {Number} [rowStart]: 要隐藏的起始行 + - {Number} [rowEnd]: 要隐藏的结束行 + + - {PlainObject} [setting]: 可选参数 + + {Number} [order]: 工作表索引;默认值为当前工作表索引 + + {Function} [success]: 操作结束的回调函数 + +- **说明**: + + 隐藏指定的行 + + 特别提醒,隐藏行之后,行的序号会变化。 + +------------ + +### hideColumn(columnStart, columnEnd [,setting])(TODO) + +- **参数**: + + - {Number} [columnStart]: 要隐藏的起始列 + - {Number} [columnEnd]: 要隐藏的结束列 + + - {PlainObject} [setting]: 可选参数 + + {Number} [order]: 工作表索引;默认值为当前工作表索引 + + {Function} [success]: 操作结束的回调函数 + +- **说明**: + + 隐藏指定的列 + + 特别提醒,隐藏列之后,列的序号会变化。 + +------------ + +### showRow(rowStart, rowEnd [,setting]) + +- **参数**: + + - {Number} [rowStart]: 要显示的起始行 + - {Number} [rowEnd]: 要显示的结束行 + + - {PlainObject} [setting]: 可选参数 + + {Number} [order]: 工作表索引;默认值为当前工作表索引 + + {Function} [success]: 操作结束的回调函数 + +- **说明**: + + 显示指定的行 + +------------ + +### showColumn(columnStart, columnEnd [,setting])(TODO) + +- **参数**: + + - {Number} [columnStart]: 要显示的起始列 + - {Number} [columnEnd]: 要显示的结束列 + + - {PlainObject} [setting]: 可选参数 + + {Number} [order]: 工作表索引;默认值为当前工作表索引 + + {Function} [success]: 操作结束的回调函数 + +- **说明**: + + 显示指定的列 + +------------ + +## 选区操作 + +### getRangeValue([setting]) + +- **参数**: + + - {PlainObject} [setting]: 可选参数 + + {Array | Object | String} [range]: 选区范围,支持选区的格式为`"A1:B2"`、`"sheetName!A1:B2"`或者`{row:[0,1],column:[0,1]}`,只能为单个选区;默认为当前选区 + + {Number} [order]: 工作表索引;默认值为当前工作表索引 + + {Function} [success]: 操作结束的回调函数 + +- **说明**: + + 返回指定工作表指定范围的单元格二维数组数据,每个单元格为一个对象。 + + [单元格对象格式参考](https://mengshukeji.github.io/LuckysheetDocs/zh/guide/format.html#%E5%8D%95%E5%85%83%E6%A0%BC%E5%B1%9E%E6%80%A7%E8%A1%A8) + +------------ + +### getRangeHtml([setting]) + +- **参数**: + + - {PlainObject} [setting]: 可选参数 + + {Array | Object | String} [range]: 选区范围,支持选区的格式为`"A1:B2"`、`"sheetName!A1:B2"`或者`{row:[0,1],column:[0,1]}`,允许多个选区组成的数组;默认为当前选区 + + {Number} [order]: 工作表索引;默认值为当前工作表索引 + + {Function} [success]: 操作结束的回调函数 + +- **说明**: + + 复制指定工作表指定单元格区域的数据,返回包含``html格式的数据,可用于粘贴到excel中保持单元格样式。 + + 特别注意,如果复制多个选区,这几个选区必须有相同的行或者相同的列才能复制,复制出的结果也会自动合并成衔接的数组,比如,多选`"C18:C20"` / `"E18:E20"` / `"G18:H20"`是允许的,但是多选`"C18:C20"` / `"E18:E21"`是不允许的 + +------------ + +### getRangeJson(title [,setting]) + +- **参数**: + + - {Boolean} [title]: 是否首行为标题 + + `title`可能的值有: + + + `"true"`: 首行为标题 + + `"false"`: 首行不为标题 + - {PlainObject} [setting]: 可选参数 + + {Array | Object | String} [range]: 选区范围,支持选区的格式为`"A1:B2"`、`"sheetName!A1:B2"`或者`{row:[0,1],column:[0,1]}`,只能为单个选区;默认为当前选区 + + {Number} [order]: 工作表索引;默认值为当前工作表索引 + + {Function} [success]: 操作结束的回调函数 + +- **说明**: + + 复制指定工作表指定单元格区域的数据,返回`json`格式的数据 + +------------ + +### getRangeArray(dimensional [,setting]) + +- **参数**: + + - {String} [dimensional]: 数组维度 + + `dimensional`可能的值有: + + + `"oneDimensional"`: 一维数组 + + `"twoDimensional"`: 二维数组 + + `"custom"`: 自定义维数组 + - {PlainObject} [setting]: 可选参数 + + {Number} [row]: `dimensional`为`custom`的时候设置,多维数组的行数 + + {Number} [column]: `dimensional`为`custom`的时候设置,多维数组的列数 + + {Array | Object | String} [range]: 选区范围,支持选区的格式为`"A1:B2"`、`"sheetName!A1:B2"`或者`{row:[0,1],column:[0,1]}`,只能为单个选区;默认为当前选区 + + {Number} [order]: 工作表索引;默认值为当前工作表索引 + + {Function} [success]: 操作结束的回调函数 + +- **说明**: + + 复制指定工作表指定单元格区域的数据,返回一维、二维或者自定义维数组格式的数据。 + + 特别注意,只有在`dimensional`设置为`custom`的时候,才需要设置`setting`中的`row`和`column` + +------------ + +### getRangeDiagonal(type [,setting]) + +- **参数**: + + - {String} [type]: 对角线还是对角线偏移 + + `type`可能的值有: + + + `"normal"`: 对角线 + + `"offset"`: 对角线偏移 + - {PlainObject} [setting]: 可选参数 + - {Number} [column]: `type`为`offset`的时候设置,对角偏移的列数 + + {Array | Object | String} [range]: 选区范围,支持选区的格式为`"A1:B2"`、`"sheetName!A1:B2"`或者`{row:[0,1],column:[0,1]}`,只能为单个选区;默认为当前选区 + + {Number} [order]: 工作表索引;默认值为当前工作表索引 + + {Function} [success]: 操作结束的回调函数 + +- **说明**: + + 复制指定工作表指定单元格区域的数据,返回对角线或者对角线偏移`column`列后的数据。 + + 特别注意,只有在`type`设置为`offset`的时候,才需要设置`setting`中的`column`。 + +------------ + +### getRangeBoolean([setting]) + +- **参数**: + + - {PlainObject} [setting]: 可选参数 + + {Array | Object | String} [range]: 选区范围,支持选区的格式为`"A1:B2"`、`"sheetName!A1:B2"`或者`{row:[0,1],column:[0,1]}`,只能为单个选区;默认为当前选区 + + {Number} [order]: 工作表索引;默认值为当前工作表索引 + + {Function} [success]: 操作结束的回调函数 + +- **说明**: + + 复制指定工作表指定单元格区域的数据,返回布尔值的数据 + +------------ + +### setRangeShow(range [,setting]) + +- **参数**: + + - {Array | Object | String} [range]: 选区范围,支持选区的格式为`"A1:B2"`、`"sheetName!A1:B2"`或者`{row:[0,1],column:[0,1]}`,允许多个选区组成的数组;默认为当前选区 + - {PlainObject} [setting]: 可选参数 + + {Boolean} [show]: 是否显示高亮选中效果;默认值为 `true` + + {Number} [order]: 工作表索引;默认值为当前工作表索引 + + {Function} [success]: 操作结束的回调函数 + +- **说明**: + + 指定工作表选中一个或多个选区为选中状态并选择是否高亮,支持多种格式设置。 + + 特别提醒,Luckysheet中涉及到的选区范围设置都可以参考这个设置 + +- **示例**: + + + 设定当前工作表选区范围`A1:B2`: + + `luckysheet.setRangeShow("A1:B2")` + + 设定选区范围`A1:B2`: + + `luckysheet.setRangeShow(["A1:B2"])` + + 设定选区范围`A1:B2`: + + `luckysheet.setRangeShow({row:[0,1],column:[0,1]})` + + 设定选区范围`A1:B2`: + + `luckysheet.setRangeShow([{row:[0,1],column:[0,1]}])` + + 设定选区范围`A1:B2`和`C3:D4`: + + `luckysheet.setRangeShow(["A1:B2","C3:D4"])` + + 设定选区范围`A1:B2`和`D3`: + + `luckysheet.setRangeShow([{row:[0,1],column:[0,1]},{row:[2,2],column:[3,3]}])` + +------------ + +### setRangeValue(data [,setting]) + +- **参数**: + + - {Array} [data]: 要赋值的单元格二维数组数据,每个单元格的值,可以为字符串或数字,或为符合Luckysheet格式的对象,参考 [单元格属性表](https://mengshukeji.github.io/LuckysheetDocs/zh/guide/format.html#%E5%8D%95%E5%85%83%E6%A0%BC%E5%B1%9E%E6%80%A7%E8%A1%A8) + - {PlainObject} [setting]: 可选参数 + + {Array | Object | String} [range]: 选区范围,支持选区的格式为`"A1:B2"`、`"sheetName!A1:B2"`或者`{row:[0,1],column:[0,1]}`,只能为单个选区;默认为当前选区 + + {Number} [order]: 工作表索引;默认值为当前工作表索引 + + {Function} [success]: 操作结束的回调函数 + +- **说明**: + + 将一个单元格数组数据赋值到指定的区域,数据格式同`getRangeValue`方法取到的数据。 + +------------ + +### setRangeFormat(attr, value [,setting]) + +- **参数**: + + - {String} [attr]: 属性类型, + 参考 [单元格属性表](https://mengshukeji.github.io/LuckysheetDocs/zh/guide/format.html#%E5%8D%95%E5%85%83%E6%A0%BC%E5%B1%9E%E6%80%A7%E8%A1%A8)的属性值 + - {String | Number | Object} [value]: 具体的设置值,一个属性会对应多个值,参考 [单元格属性表](https://mengshukeji.github.io/LuckysheetDocs/zh/guide/format.html#%E5%8D%95%E5%85%83%E6%A0%BC%E5%B1%9E%E6%80%A7%E8%A1%A8)的值示例,特殊情况:如果属性类型`attr`是单元格格式`ct`,则设置值`value`应提供`ct.fa`,比如设置`"A1:B2"`单元格的格式为百分比格式: + + `luckysheet.setRangeFormat("ct", "0.00%", {range:"A1:B2"})` + + - {PlainObject} [setting]: 可选参数 + + {Object | String} [range]: 设置参数的目标选区范围,支持选区的格式为`"A1:B2"`、`"sheetName!A1:B2"`或者`{row:[0,1],column:[0,1]}`,允许多个选区组成的数组;默认为当前选区 + + {Number} [order]: 工作表索引;默认值为当前工作表索引 + + {Function} [success]: 操作结束的回调函数 + +- **说明**: + + 设置指定范围的单元格格式,一般用作处理格式,赋值操作推荐使用`setRangeValue`方法 + + - 边框设置时,attr为`"bd"`,value为一个key/value对象,需要同时设置边框类型:`borderType`/边框粗细:`style`/边框颜色:`color`/,比如设置`"A1:B2"`单元格的边框为所有/红色/细: + + `luckysheet.setRangeFormat("bd", {borderType: "border-right",style: "1", color: "#ff0000"}, {range:["A1:B2"]})` + + 完整可选的设置参数如下: + + + 边框类型 `borderType:"border-left" | "border-right" | "border-top" | "border-bottom" | "border-all" | "border-outside" | "border-inside" | "border-horizontal" | "border-vertical" | "border-none"`, + + 边框粗细 `style: 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` + + 边框颜色 `color: 16进制颜色值` + +- **示例**: + + - 设置当前工作表`"A1:B2"`范围的单元格文本加粗 + `luckysheet.setRangeFormat("bl", 1, {range:"A1:B2"})` + - 设置第二个工作表的`"B2"`和`"C4:D5"`范围的单元格背景为红色 + `luckysheet.setRangeFormat("bg", "#ff0000", {range:["B2","C4:D5"], order:1})` + +------------ + +### setRangeFilter(type [,setting]) + +- **参数**: + - {String} [type]: 打开还是关闭筛选功能 + + `type`可能的值有: + + + `"open"`: 打开筛选功能,返回当前筛选的范围对象 + + `"close"`: 关闭筛选功能,返回关闭前筛选的范围对象 + - {PlainObject} [setting]: 可选参数 + + {Array | Object | String} [range]: 选区范围,支持选区的格式为`"A1:B2"`、`"sheetName!A1:B2"`或者`{row:[0,1],column:[0,1]}`,只能为单个选区;默认为当前选区 + + {Number} [order]: 工作表索引;默认值为当前工作表索引 + + {Function} [success]: 操作结束的回调函数 + +- **说明**: + + 为指定索引的工作表,选定的范围开启或关闭筛选功能 + +- **示例**: + + - 打开第二个工作表"A1:B2"范围的筛选功能 + `luckysheet.setRangeFilter("open",{range:"A1:B2",order:1})` + +------------ + +### setRangeMerge(type [,setting]) + +- **参数**: + - {String} [type]: 合并单元格类型 + + `type`可能的值有: + + + `"all"`: 全部合并,区域内所有单元格合并成一个大的单元格 + + `"horizontal"`: 水平合并,区域内在同一行的单元格合并成一个单元格 + + `"vertical"`: 垂直合并,区域内在同一列的单元格合并成一个单元格 + - {PlainObject} [setting]: 可选参数 + + {Array | Object | String} [range]: 选区范围,支持选区的格式为`"A1:B2"`、`"sheetName!A1:B2"`或者`{row:[0,1],column:[0,1]}`,允许多个选区组成的数组;默认为当前选区 + + {Number} [order]: 工作表索引;默认值为当前工作表索引 + + {Function} [success]: 操作结束的回调函数 + +- **说明**: + + 为指定索引的工作表,选定的范围设定合并单元格 + +------------ + +### cancelRangeMerge( [setting]) + +- **参数**: + + - {PlainObject} [setting]: 可选参数 + + {Array | Object | String} [range]: 选区范围,支持选区的格式为`"A1:B2"`、`"sheetName!A1:B2"`或者`{row:[0,1],column:[0,1]}`,允许多个选区组成的数组;默认为当前选区 + + {Number} [order]: 工作表索引;默认值为当前工作表索引 + + {Function} [success]: 操作结束的回调函数 + +- **说明**: + + 为指定索引的工作表,选定的范围取消合并单元格 + +------------ + +### setRangeSort(type [,setting]) + +- **参数**: + + - {String} [type]: 排序类型 + + `type`可能的值有: + + + `"asc"`: 升序 + + `"des"`: 降序 + + - {PlainObject} [setting]: 可选参数 + + + {Array | Object | String} [range]: 选区范围,支持选区的格式为`"A1:B2"`、`"sheetName!A1:B2"`或者`{row:[0,1],column:[0,1]}`,只能为单个选区;默认为当前选区 + + {Number} [order]: 工作表索引;默认值为当前工作表索引 + + {Function} [success]: 操作结束的回调函数 + +- **说明**: + + 为指定索引的工作表,选定的范围开启排序功能,返回选定范围排序后的数据。 + +- **示例**: + + - 设置当前工作表当前选区为升序 + `luckysheet.setRangeSort("asc")` + +------------ + +### setRangeSortMulti(title, sort [,setting]) + +- **参数**: + + - {Boolean} [title]: 数据是否具有标题行 + - {Array} [sort]: 列设置,设置需要排序的列索引和排序方式,格式如:`[{ i:0,sort:'asc' },{ i:1,sort:'des' }]` + - {PlainObject} [setting]: 可选参数 + + + {Array | Object | String} [range]: 选区范围,支持选区的格式为`"A1:B2"`、`"sheetName!A1:B2"`或者`{row:[0,1],column:[0,1]}`,只能为单个选区;默认为当前选区 + + {Number} [order]: 工作表索引;默认值为当前工作表索引 + + {Function} [success]: 操作结束的回调函数 + +- **说明**: + + 为指定索引的工作表,选定的范围开启多列自定义排序功能,返回选定范围排序后的数据。 + +- **示例**: + + - 设置当前工作表当前选区为自定义排序,数据具有标题行,且按第一列升序第二列降序的规则进行排序 + `luckysheet.setRangeSortMulti(true,{sort:[{ i:0,sort:'asc' },{ i:1,sort:'des' }]})` + +------------ + +### setRangeConditionalFormatDefault(conditionName, conditionValue [,setting]) + +- **参数**: + + - {String} [conditionName]: 条件格式规则类型 + + `conditionName`可能的值有: + + + `"greaterThan"`: 大于 + + `"lessThan"`: 小于 + + `"betweenness"`: 介于 + + `"equal"`: 等于 + + `"textContains"`: 文本包含 + + `"occurrenceDate"`: 发生日期 + + `"duplicateValue"`: 重复值 + + `"top"`: 前 N 项(可以在conditionValue中设置其他值) + + `"topPercent"`: 前 N%(可以在conditionValue中设置其他值) + + `"last"`: 后 N 项(可以在conditionValue中设置其他值) + + `"lastPercent"`: 后 N%(可以在conditionValue中设置其他值) + + `"AboveAverage"`: 高于平均值 + + `"SubAverage"`: 低于平均值 + + - {Object} [conditionValue]: 可以设置条件单元格或者条件值 + 取值规则 + ```js + { + type: 'value', + content: [2] + } + ``` + 或者 + ```js + { + type: 'range', + content: ['A1'] + } + ``` + + - {PlainObject} [setting]: 可选参数 + + + {Object | Array} [format]: 颜色设置 + + * `type`为`default`时,应设置文本颜色和单元格颜色;默认值为` { + "textColor": "#000000", + "cellColor": "#ff0000" + }` + + {Boolean} [isEdit]: 是否在修改条件格式规则;默认为 `false` + + {Array | Object | String} [range]: 选区范围,支持选区的格式为`"A1:B2"`、`"sheetName!A1:B2"`或者`{row:[0,1],column:[0,1]}`,允许多个选区组成的数组;默认为当前选区 + + + {Number} [order]: 工作表索引;默认值为当前工作表索引 + + {Function} [success]: 操作结束的回调函数 + +- **说明**: + + 为指定索引的工作表,选定的范围开启条件格式,根据设置的条件格式规则突出显示部分单元格,返回开启条件格式后的数据。 + +- **示例**: + + - 突出显示内容大于数字2的单元格 + `luckysheet.setRangeConditionalFormatDefault("greaterThan",{ type: 'value', content: [2] })` + + - 突出显示内容小于单元格A1内容的单元格 + `luckysheet.setRangeConditionalFormatDefault("lessThan",{ type: 'range', content: ['A1'] })` + + - 突出显示内容介于2和10之间的单元格 + `luckysheet.setRangeConditionalFormatDefault("betweenness",{ type: 'value', content: [2,10] })` + + - 突出显示内容等于单元格A1内容的单元格 + `luckysheet.setRangeConditionalFormatDefault("equal",{ type: 'range', content: ['A1'] })` + + - 突出显示内容包含单元格A1内容的单元格 + `luckysheet.setRangeConditionalFormatDefault("textContains",{ type: 'range', content: ['A1'] })` + + - 突出显示日期在 `2020/09/24 - 2020/10/15` 之间的单元格 + `luckysheet.setRangeConditionalFormatDefault("occurrenceDate",{ type: 'value', content: ['2020/09/24 - 2020/10/15'] })` + + - 突出显示重复值的单元格,content为0 + `luckysheet.setRangeConditionalFormatDefault("duplicateValue",{ type: 'value', content: [0] })` + + - 突出显示唯一值的单元格,content为1 + `luckysheet.setRangeConditionalFormatDefault("duplicateValue",{ type: 'value', content: [1] })` + + - 突出显示排名前20名的单元格 + `luckysheet.setRangeConditionalFormatDefault("top",{ type: 'value', content: [20] })` + + - 突出显示排名前30%的单元格 + `luckysheet.setRangeConditionalFormatDefault("topPercent",{ type: 'value', content: [30] })` + + - 突出显示排名后15名的单元格 + `luckysheet.setRangeConditionalFormatDefault("last",{ type: 'value', content: [15] })` + + - 突出显示排名后15%的单元格 + `luckysheet.setRangeConditionalFormatDefault("lastPercent",{ type: 'value', content: [15] })` + + - 突出显示高于平均值的单元格 + luckysheet.setRangeConditionalFormatDefault("AboveAverage",{ type: 'value', content: ['AboveAverage'] })` + + - 突出显示低于平均值的单元格 + luckysheet.setRangeConditionalFormatDefault("SubAverage",{ type: 'value', content: ['SubAverage'] })` + +------------ + +### setRangeConditionalFormat(type [,setting]) -## luckysheet.create(options) - **参数**: - - {Object} [options]:表格的所有配置信息 -- **用法**: + + - {String} [type]: 条件格式规则类型 - 初始化一个luckysheet,可包含多个工作表,参考 [配置列表](https://mengshukeji.github.io/LuckysheetDocs/zh/guide/config.html#container) + `type`可能的值有: + + + `"dataBar"`: 数据条 + + `"icons"`: 图标集 + + `"colorGradation"`: 色阶 + + - {PlainObject} [setting]: 可选参数 + + + {Object | Array} [format]: 颜色设置 + + * `type`为`dataBar`时,应设置渐变色;默认值为蓝-白渐变` ["#638ec6", "#ffffff"]` + + 推荐的快捷取值: + ```js + ["#638ec6", "#ffffff"], //蓝-白渐变 数据条 + ["#63c384", "#ffffff"], //绿-白渐变 数据条 + ["#ff555a", "#ffffff"], //红-白渐变 数据条 + ["#ffb628", "#ffffff"], //橙-白渐变 数据条 + ["#008aef", "#ffffff"], //浅蓝-白渐变 数据条 + ["#d6007b", "#ffffff"], //紫-白渐变 数据条 + ["#638ec6"], //蓝色 数据条 + ["#63c384"], //绿色 数据条 + ["#ff555a"], //红色 数据条 + ["#ffb628"], //橙色 数据条 + ["#008aef"], //浅蓝色 数据条 + ["#d6007b"] //紫色 数据条 + ``` + + * `type`为`icons`时,应设置图标类型;默认值为"threeWayArrowColor":三向箭头彩色, + + 可取值为: + + `threeWayArrowMultiColor`:三向箭头(彩色), + + `threeTriangles`:3个三角形, + + `fourWayArrowMultiColor`:四向箭头(彩色), + + `fiveWayArrowMultiColor`:五向箭头(彩色), + + `threeWayArrowGrayColor`:三向箭头(灰色), + + `fourWayArrowGrayColor`:四向箭头(灰色), + + `fiveWayArrowGrayColor`:五向箭头(灰色), + + `threeColorTrafficLightRimless`:三色交通灯(无边框), + + `threeSigns`:三标志, + + `greenRedBlackGradient`:绿-红-黑渐变, + + `threeColorTrafficLightBordered`:三色交通灯(有边框), + + `fourColorTrafficLight`:四色交通灯, + + `threeSymbolsCircled`:三个符号(有圆圈), + + `tricolorFlag`:三色旗, + + `threeSymbolsnoCircle`:三个符号(无圆圈), + + `threeStars`:3个星形, + + `fiveQuadrantDiagram`:五象限图, + + `fiveBoxes`:5个框, + + `grade4`:四等级, + + `grade5`:五等级, + + * `type`为`colorGradation`时,应设置色阶颜色值;默认值为绿-黄-红色阶` ["rgb(99, 190, 123)", "rgb(255, 235, 132)", "rgb(248, 105, 107)"]` + + 推荐的快捷取值: + ```js + ["rgb(99, 190, 123)", "rgb(255, 235, 132)", "rgb(248, 105, 107)"], //绿-黄-红色阶 + ["rgb(248, 105, 107)", "rgb(255, 235, 132)", "rgb(99, 190, 123)"], //红-黄-绿色阶 + + ["rgb(99, 190, 123)", "rgb(252, 252, 255)", "rgb(248, 105, 107)"], //绿-白-红色阶 + ["rgb(248, 105, 107)", "rgb(252, 252, 255)", "rgb(99, 190, 123)"], //红-白-绿色阶 + + ["rgb(90, 138, 198)", "rgb(252, 252, 255)", "rgb(248, 105, 107)"], //蓝-白-红色阶 + ["rgb(248, 105, 107)", "rgb(252, 252, 255)", "rgb(90, 138, 198)"], //红-白-蓝色阶 + + ["rgb(252, 252, 255)", "rgb(248, 105, 107)"], //白-红色阶 + ["rgb(248, 105, 107)", "rgb(252, 252, 255)"], //红-白色阶 + + ["rgb(99, 190, 123)", "rgb(252, 252, 255)"], //绿-白色阶 + ["rgb(252, 252, 255)", "rgb(99, 190, 123)"], //白-绿色阶 + + ["rgb(99, 190, 123)", "rgb(255, 235, 132)"], //绿-黄色阶 + ["rgb(255, 235, 132)", "rgb(99, 190, 123)"] //黄-绿色阶 + ``` + + + {Boolean} [isEdit]: 是否在修改条件格式规则;默认为 `false` + + {Array | Object | String} [range]: 选区范围,支持选区的格式为`"A1:B2"`、`"sheetName!A1:B2"`或者`{row:[0,1],column:[0,1]}`,允许多个选区组成的数组;默认为当前选区 + + + {Number} [order]: 工作表索引;默认值为当前工作表索引 + + {Function} [success]: 操作结束的回调函数 + +- **说明**: + + 为指定索引的工作表,选定的范围开启条件格式,返回开启条件格式后的数据。 + +------------ + +### deleteRangeConditionalFormat(itemIndex [,setting]) + +- **参数**: + + - {Number} [itemIndex]: 条件格式规则索引 + + - {PlainObject} [setting]: 可选参数 + + + {Number} [order]: 工作表索引;默认值为当前工作表索引 + + {Function} [success]: 操作结束的回调函数 + +- **说明**: + + 为指定索引的工作表,删除条件格式规则,返回被删除的条件格式规则。 + +- **示例**: + + - 删除第三个条件格式规则 + `luckysheet.editRangeConditionalFormat(2)` + +------------ + +### clearRange([setting]) + +- **参数**: + + - {PlainObject} [setting]: 可选参数 + + {Array | Object | String} [range]: 要清除的选区范围,支持选区的格式为`"A1:B2"`、`"sheetName!A1:B2"`或者`{row:[0,1],column:[0,1]}`,允许多个选区组成的数组;默认为当前选区 + + {Number} [order]: 工作表索引;默认值为当前工作表索引 + + {Function} [success]: 操作结束的回调函数 + +- **说明**: + + 清除指定工作表指定单元格区域的内容,返回清除掉的数据,不同于删除选区的功能,不需要设定单元格移动情况 + +------------ + +### deleteRange(move [,setting]) + +- **参数**: + - {String} [move]: 删除后,右侧还是下方的单元格移动 + + `move`可能的值有: + + + `"left"`: 右侧单元格左移 + + `"up"`: 下方单元格上移 + + - {PlainObject} [setting]: 可选参数 + + {Array | Object | String} [range]: 要删除的选区范围,支持选区的格式为`"A1:B2"`、`"sheetName!A1:B2"`或者`{row:[0,1],column:[0,1]}`,允许多个选区组成的数组;默认为当前选区 + + {Number} [order]: 工作表索引;默认值为当前工作表索引 + + {Function} [success]: 操作结束的回调函数 + +- **说明**: + + 删除指定工作表指定单元格区域,返回删除掉的数据,同时,指定是右侧单元格左移还是下方单元格上移 + +------------ + +### insertRange(move [,setting]) + +- **参数**: + + - {String} [move]: 活动单元格右移或者下移 + + `move`可能的值有: + + + `"right"`: 活动单元格右移 + + `"bottom"`: 活动单元格下移 + + - {PlainObject} [setting]: 可选参数 + + {Array} [data]: 赋值到range区域的单元格二维数组数据,[单元格对象格式参考](https://mengshukeji.github.io/LuckysheetDocs/zh/guide/format.html#%E5%8D%95%E5%85%83%E6%A0%BC%E5%B1%9E%E6%80%A7%E8%A1%A8);默认值为空数组,即插入空白的区域 + + {Array | Object | String} [range]: 要插入的位置,选区范围,支持选区的格式为`"A1:B2"`、`"sheetName!A1:B2"`或者`{row:[0,1],column:[0,1]}`,默认为当前选区 + + 当未设置data数据时,允许多个选区组成的数组,插入的空白区域即为这些选区的区域, + + 当设置了data数据,只能为单个选区,并且会把data数据插入到当前选区的第一个单元格位置 + + + {Number} [order]: 工作表索引;默认值为当前工作表索引 + + {Function} [success]: 操作结束的回调函数 + +- **说明**: + + 在指定工作表指定单元格区域,赋值单元格数据,或者新建一块空白区域,返回data数据,同时,指定活动单元格右移或者下移 + +------------ + +### matrixOperation(type [,setting]) + +- **参数**: + + - {String} [type]: 矩阵操作的类型 + + `type`可能的值有: + + + `"flipUpDown"`: 上下翻转 + + `"flipLeftRight"`: 左右翻转 + + `"flipClockwise"`: 顺时针旋转 + + `"flipCounterClockwise"`: 逆时针旋转 + + `"Transpose"`: 转置 + + `"DeleteZeroByRow"`: 按行删除两端0值 + + `"DeleteZeroByColumn"`: 按列删除两端0值 + + `"removeDuplicateByRow"`: 按行删除重复值 + + `"removeDuplicateByColumn"`: 按列删除重复值 + + `"newMatrix"`: 生产新矩阵 + - {PlainObject} [setting]: 可选参数 + + {Array | Object | String} [range]: 选区范围,支持选区的格式为`"A1:B2"`、`"sheetName!A1:B2"`或者`{row:[0,1],column:[0,1]}`,只能为单个选区;默认为当前选区 + + {Number} [order]: 工作表索引;默认值为当前工作表索引 + + {Function} [success]: 操作结束的回调函数 + +- **说明**: + + 指定工作表指定单元格区域的数据进行矩阵操作,返回操作成功后的结果数据 + +------------ + +### matrixCalculation(type, number [,setting]) + +- **参数**: + - {String} [type]: 计算方式 + + `type`可能的值有: + + + `"plus"`: 加 + + `"minus"`: 减 + + `"multiply"`: 乘 + + `"divided"`: 除 + + `"power"`: 次方 + + `"root"`: 次方根 + + `"log"`: log + + `"removeDuplicateByRow"`: 按行删除重复值 + + `"removeDuplicateByColumn"`: 按列删除重复值 + + `"newMatrix"`: 生产新矩阵 + - {Number} [number]: 计算数值,如: 2 + - {PlainObject} [setting]: 可选参数 + + {Array | Object | String} [range]: 选区范围,支持选区的格式为`"A1:B2"`、`"sheetName!A1:B2"`或者`{row:[0,1],column:[0,1]}`,只能为单个选区;默认为当前选区 + + {Number} [order]: 工作表索引;默认值为当前工作表索引 + + {Function} [success]: 操作结束的回调函数 + +- **说明**: + + 指定工作表指定单元格区域的数据进行矩阵计算,返回计算成功后的结果数据 + +------------ + +## 工作表操作 + +### getAllSheets([setting]) + +- **参数**: + + - {PlainObject} [setting]: 可选参数 + + {Function} [success]: 操作结束的回调函数 + +- **说明**: + + 返回所有工作表配置,格式同[工作表配置](/zh/guide/sheet.html),得到的结果可用于表格初始化时作为`options.data`使用。 + + 所以此API适用于,手动操作配置完一个表格后,将所有工作表信息取出来自行保存,再用于其他地方的表格创建。 + +- **示例**: + + - 取得第一个工作表的所有基本信息 + `luckysheet.getAllSheets()[0]` + +------------ + +### getluckysheetfile() + +- **参数**: + + - {PlainObject} [setting]: 可选参数 + + {Function} [success]: 操作结束的回调函数 + +- **说明**: + + 返回所有表格数据结构的一维数组`luckysheetfile`,不同于`getAllSheets`方法,此方法得到的工作表参数会包含很多内部使用变量,最明显的区别是表格数据操作会维护`luckysheetfile[i].data`,而初始化数据采用的是`options.data[i].celldata`,所以`luckysheetfile`可用于调试使用,但是不适用初始化表格。 + +- **示例**: + + - 取得第一个工作表的所有调试信息 + `luckysheet.getluckysheetfile()[0]` + +------------ + +### setSheetAdd([setting]) + +- **参数**: + + - {PlainObject} [setting]: 可选参数 + + {Object} [sheetObject]: 新增的工作表的数据;默认值为空对象 + + {Number} [order]: 新增的工作表索引;默认值为最后一个索引位置 + + {Function} [success]: 操作结束的回调函数 + +- **说明**: + + 新增一个sheet,返回新增的工作表对象,`setting`中可选设置数据为 `sheetObject`,不传`sheetObject`则会新增一个空白的工作表 + +- **示例**: + + - 在最后一个工作表索引位置新增一个空白的工作表 + `luckysheet.setSheetAdd()` + +------------ + +### setSheetDelete([setting]) + +- **参数**: + + - {PlainObject} [setting]: 可选参数 + + {Number} [order]: 工作表索引;默认值为当前工作表索引 + + {Function} [success]: 操作结束的回调函数 + +- **说明**: + + 删除指定索引的工作表,返回已删除的工作表对象 + +- **示例**: + + - 删除当前工作表 + `luckysheet.setSheetDelete()` + +------------ + +### setSheetCopy([setting]) + +- **参数**: + + - {PlainObject} [setting]: 可选参数 + + {Number} [targetOrder]: 新复制的工作表目标索引位置;默认值为当前工作表索引的下一个索引位置(递增) + + {Number} [order]: 被复制的工作表索引;默认值为当前工作表索引 + + {Function} [success]: 操作结束的回调函数 + +- **说明**: + + 复制指定索引的工作表到指定索引位置,在`setting`中可选设置指定索引位置`targetOrder`,返回新复制的工作表对象 + +- **示例**: + + - 复制当前工作表到下一个索引位置 + `luckysheet.setSheetCopy()` + +------------ + +### setSheetHide(hide [,setting]) + +- **参数**: + + - {Boolean} [hide]: 是否隐藏工作表 + + `hide`可能的值有的: + + `ture`: 隐藏指定索引的工作表,返回被隐藏的工作表对象 + + `false`: 取消隐藏指定索引的工作表,返回被显示的工作表对象 + - {PlainObject} [setting]: 可选参数 + + {Number} [order]: 被隐藏的工作表索引;默认值为当前工作表索引 + + {Function} [success]: 操作结束的回调函数 + +- **说明**: + + 隐藏或取消隐藏指定索引的工作表,返回被隐藏或取消隐藏的工作表对象 + +- **示例**: + + - 隐藏当前工作表 + `luckysheet.setSheetHide(true)` + - 取消隐藏第三个工作表 + `luckysheet.setSheetHide(false,{order:2})` + +------------ + +### setSheetActive(order [,setting]) + +- **参数**: + + - {Number} [order]: 要激活的工作表索引 + - {PlainObject} [setting]: 可选参数 + + {Function} [success]: 操作结束的回调函数 + +- **说明**: + + 设置指定索引的工作表为当前工作表(激活态),即切换到指定的工作表,返回被激活的工作表对象 + +- **示例**: + + - 切换到第二个工作表 + `luckysheet.setSheetActive(1)` + +------------ + +### setSheetName(name [,setting]) + +- **参数**: + + - {String} [name]: 新的工作表名称 + - {PlainObject} [setting]: 可选参数 + + {Number} [order]: 工作表索引;默认值为当前工作表索引 + + {Function} [success]: 操作结束的回调函数 + +- **说明**: + + 修改工作表名称 + +- **示例**: + + - 修改当前工作表名称为"CellSheet" + `luckysheet.setSheetName("CellSheet")` + +------------ + +### setSheetColor(color [,setting]) + +- **参数**: + - {String} [color]: 工作表颜色 + - {PlainObject} [setting]: 可选参数 + + {Number} [order]: 工作表索引;默认值为当前工作表索引 + + {Function} [success]: 操作结束的回调函数 + +- **说明**: + + 设置工作表名称处的颜色 + +- **示例**: + + - 修改当前工作表名称处的颜色为红色 + `luckysheet.setSheetColor("#ff0000")` + +------------ + +### setSheetMove(type [,setting]) + +- **参数**: + + - {String | Number} [type]: 工作表移动方向或者移动的目标索引, + + `type`可能的值有: + + + `"left"`: 向左 + + `"right"`: 向右 + + `1`/`2`/`3`/...: 指定索引 + - {PlainObject} [setting]: 可选参数 + + {Number} [order]: 工作表索引;默认值为当前工作表索引 + + {Function} [success]: 操作结束的回调函数 + +- **说明**: + + 指定工作表向左边或右边移动一个位置,或者指定索引,返回指定的工作表对象 + +- **示例**: + + - 当前工作表向左移动一个位置 + `luckysheet.setSheetMove("left")` + - 第二个工作表移动到第四个工作表的索引位置 + `luckysheet.setSheetMove(3,{order:1})` + +------------ + +## 工作簿操作 + +### getScreenshot([setting]) + +- **参数**: + + - {PlainObject} [setting]: 可选参数 + + {Array | Object | String} [range]: 选区范围,支持选区的格式为`"A1:B2"`、`"sheetName!A1:B2"`或者`{row:[0,1],column:[0,1]}`,只能为单个选区;默认为当前选区 + + {Number} [order]: 工作表索引;默认值为当前工作表索引 + + {Function} [success]: 操作结束的回调函数 + +- **说明**: + + 返回指定选区截图后生成的base64格式的图片 + +------------ + +### setWorkbookName(name [,setting]) + +- **参数**: + + - {Number} [name]: 工作簿名称 + - {PlainObject} [setting]: 可选参数 + + {Function} [success]: 操作结束的回调函数 + +- **说明**: + + 设置工作簿名称 + +------------ + +### undo([setting]) + +- **参数**: + + - {PlainObject} [setting]: 可选参数 + + {Function} [success]: 操作结束的回调函数 + +- **说明**: + + 撤销当前操作,返回刚刚撤销的操作对象 + +------------ + +### redo([setting]) + +- **参数**: + + - {PlainObject} [setting]: 可选参数 + + {Function} [success]: 操作结束的回调函数 + +- **说明**: + + 重做当前操作,返回刚刚重做的操作对象 + +------------ + +## 图表 + +### insertChart([setting]) + +- **参数**: + + - {PlainObject} [setting]: 可选参数 + + {Array | Object | String} [range]: 图表数据的选区范围,支持选区的格式为`"A1:B2"`、`"sheetName!A1:B2"`或者`{row:[0,1],column:[0,1]}`,只能为单个选区;默认为当前选区 + + {Number} [order]: 工作表索引;默认值为当前工作表索引 + + {Function} [success]: 操作结束的回调函数 + +- **说明**: + + 指定工作表指定选区范围生成一个图表,返回图表参数对象,包含图表唯一标识符chart id + +------------ + +### setChart(chartId, attr, value [,setting]) + +- **参数**: + + - {String} [chartId]: 指定要修改的图表id + - {String} [attr]: 属性类型 + `attr`可能的值有: + + + `"left"`: 左边到工作表边缘的距离 + + `"top"`: 上边到工作表边缘的距离 + + `"width"`: 图表外框的宽度 + + `"height"`: 图表外框的高度 + + `"chartOptions"`: 图表的详细设置项 + + - {Number | Object}} [value]: 属性值,当`attr`为`chartOptions`时,直接设置整个chart的配置对象 + + - {PlainObject} [setting]: 可选参数 + + {Function} [success]: 操作结束的回调函数 + +- **说明**: + + 修改指定id图表的参数,返回修改后的整个图表参数 + +------------ + +### getChart(chartId [,setting]) + +- **参数**: + + - {String} [chartId]: 指定要获取的图表id + + - {PlainObject} [setting]: 可选参数 + + {Function} [success]: 操作结束的回调函数 + +- **说明**: + + 获取指定id图表的参数 ------------ -## luckysheet.getcellvalue([r] [,c] [,data] [,type]) + +### deleteChart(chartId [,setting]) + - **参数**: - - {Number} [r]:单元格所在行数;可选值;从0开始的整数,0表示第一行 - - {Number} [c]:单元格所在列数;可选值;从0开始的整数,0表示第一列 - - {Array} [data]:表数据,二维数组;可选值;默认值为当前表格数据 - - {String} [type]:单元格属性值;可选值;默认值为'v',表示获取单元格的实际值 -- **用法**: - 此方法为获取单元格的值。 - - `luckysheet.getcellvalue()`:返回当前工作表的所有数据; - - `luckysheet.getcellvalue(0)`:返回当前工作表第1行数据; - - `luckysheet.getcellvalue(null,0)`:返回当前工作表第1列数据; - - `luckysheet.getcellvalue(0,0)`:返回当前工作表第1行第1列单元格的数据的v值; - - `luckysheet.getcellvalue(1,1,null,'m')`: 返回指定data数据的第2行第2列单元格的原始值。 + - {String} [chartId]: 要删除的图表id + + - {PlainObject} [setting]: 可选参数 + + {Function} [success]: 操作结束的回调函数 - 特殊情况:单元格格式为`yyyy-MM-dd`,type为'v'时会强制取'm'显示值 +- **说明**: + + 删除指定id图表,返回被删除的图表的参数 ------------ -## luckysheet.getluckysheetfile() -- **用法**: - 返回所有表格数据结构的一维数组 [luckysheetfile](https://mengshukeji.github.io/LuckysheetDocs/zh/guide/data.html#%E8%8E%B7%E5%8F%96%E8%A1%A8%E6%A0%BC%E6%95%B0%E6%8D%AE),`luckysheet.getluckysheetfile()[0]`可取得第一个工作表的所有信息。 +## luckysheet.create(options) +- **参数**: + - {Object} [options]:表格的所有配置信息 +- **说明**: + + 初始化一个luckysheet,可包含多个工作表,参考 [配置列表](https://mengshukeji.github.io/LuckysheetDocs/zh/guide/config.html#container) ------------ + ## luckysheet.getconfig() -- **用法**: +- **说明**: 快捷返回当前表格config配置,每个工作表的config信息仍然包含在luckysheetfile。 ------------ ## luckysheet.getluckysheet_select_save() -- **用法**: +- **说明**: 返回当前选区对象的数组,可能存在多个选区。 ------------ -## luckysheet.getdatabyselection([range] [,sheetIndex]) +## luckysheet.getdatabyselection([range] [,sheetOrder]) - **参数**: - - {Object} [range]:选区对象,`object: { row: [r1, r2], column: [c1, c2] }`;可选值;默认为当前第一个选区。 - - {Number} [sheetIndex]:表格下标,从0开始的整数,0表示第一个表格;可选值;默认为当前表格下标。 -- **用法**: + - {Object} [range]:选区对象,`object: { row: [r1, r2], column: [c1, c2] }`;默认为当前第一个选区。 + - {Number} [sheetOrder]:表格下标,从0开始的整数,0表示第一个表格;默认为当前表格下标。 +- **说明**: 返回某个表格第一个选区的数据。 - `luckysheet.getdatabyselection()`: 返回当前工作表当前选区的数据 @@ -63,28 +1423,14 @@ - **参数**: - {Number} [scrollWidth]:横向滚动值。默认为当前横向滚动位置。 - {Number} [scrollHeight]:纵向滚动值。默认为当前纵向滚动位置。 -- **用法**: +- **说明**: 按照scrollWidth, scrollHeight刷新canvas展示数据。 ------------ -## luckysheet.setcellvalue(r, c, d, v) -- **参数**: - - {Number} [r]:单元格所在行数;从0开始的整数,0表示第一行。 - - {Number} [c]:单元格所在列数;从0开始的整数,0表示第一列。 - - {Array} [d]:表数据;可选值;二维数组。 - - {Object | String | Number} [v]:要设置的值;可为对象,对象是是要符合单元格对象格式。 -- **用法**: - 设置某个单元格的值。可配合`luckysheet.luckysheetrefreshgrid()`刷新查看单元格值改变。 - ```js - luckysheet.setcellvalue(0, 0, luckysheet.flowdata(), 'abc'); - luckysheet.jfrefreshgrid(); - ``` - ------------- ## luckysheet.jfrefreshgrid() -- **用法**: +- **说明**: 刷新canvas @@ -92,7 +1438,7 @@ ## luckysheet.setluckysheet_select_save(v) - **参数**: - {Array} [v]:要设置的选区值(数组)。符合选区格式规则,如`[{ row: [r1, r2], column: [c1, c2] }]`。 -- **用法**: +- **说明**: 设置当前表格选区的值。配合`luckysheet.selectHightlightShow()`可在界面查看选区改变。 ```js @@ -102,29 +1448,29 @@ ------------ ## luckysheet.selectHightlightShow() -- **用法**: +- **说明**: 高亮当前选区 ------------ -## luckysheet.setSheetHide(index) +## luckysheet.setSheetHide(order) - **参数**: - - {Number} [index]:表格索引;从0开始的整数,0表示第一个表格;默认为当前表格索引。 -- **用法**: + - {Number} [order]:表格索引;从0开始的整数,0表示第一个表格;默认为当前表格索引。 +- **说明**: 隐藏某个表格。 ------------ -## luckysheet.setSheetShow(index) +## luckysheet.setSheetShow(order) - **参数**: - - {Number} [index]:表格索引;从0开始的整数,0表示第一个表格;默认为当前表格索引。 -- **用法**: + - {Number} [order]:表格索引;从0开始的整数,0表示第一个表格;默认为当前表格索引。 +- **说明**: 显示某个表格。 ------------ ## luckysheet.flowdata() -- **用法**: +- **说明**: 快捷获取当前表格的数据 @@ -132,7 +1478,7 @@ ## luckysheet.buildGridData(file) - **参数**: - {Object} [file]:[luckysheetfile](https://mengshukeji.github.io/LuckysheetDocs/zh/guide/data.html#%E8%8E%B7%E5%8F%96%E8%A1%A8%E6%A0%BC%E6%95%B0%E6%8D%AE) -- **用法**: +- **说明**: 生成表格可以识别的二维数组 @@ -140,12 +1486,12 @@ ## luckysheet.getGridData(data) - **参数**: - {Array} [data]:工作表的二维数组数据 -- **用法**: +- **说明**: 二维数组数据转化成 `{r, c, v}` 格式 一维数组 ------------ ## luckysheet.destroy() -- **用法**: +- **说明**: - 删除并释放表格 + 删除并释放表格 \ No newline at end of file diff --git a/docs/zh/guide/format.md b/docs/zh/guide/cell.md similarity index 77% rename from docs/zh/guide/format.md rename to docs/zh/guide/cell.md index b2342cb..b048210 100644 --- a/docs/zh/guide/format.md +++ b/docs/zh/guide/cell.md @@ -1,339 +1,10 @@ -# 单元格格式 +# 单元格 -## 单元格介绍 +## 基本单元格 -### 基本单元格格式 单元格是Luckysheet中最基本的单位,每个单元格都会保存为一个对象,一个工作表的数据则会保存为一个由单元格对象组成的二维数组,并存入当前工作表的 `luckysheetfile[i].data`中。 -一个规范的单元格格式如下: -```json -{ - "ct": { //单元格值格式 - "fa": "General", //格式名称为自动格式 - "t": "n" //格式类型为数字类型 - }, - "v": 233, //内容的原始值为 233 - "m": 233, //内容的显示值为 233 - "bg": "#f6b26b", //背景为 "#f6b26b" - "ff": 1, // 字体为 "Arial" - "fc": "#990000", //字体颜色为 "#990000" - "bl": 1, //字体加粗 - "it": 1, //字体斜体 - "fs": 9, //字体大小为 9px - "cl": 1, //启用删除线 - "ht": 0, //水平居中 - "vt": 0, //垂直居中 - "tr": 2, //文字旋转 -45° - "tb": 2, //文本自动换行 - "ps": { //批注 - "left": 92, //批注框左边距 - "top": 10, //批注框上边距 - "width": 91, //批注框宽度 - "height": 48, //批注框高度 - "value": "I am a comment", //批准内容 - "isshow": true //批注框为显示状态 - }, - "f": "=SUM(233)" //公式 -} -``` - -### 合并单元格配置 - -TODO - - -### 一个常规的表格数据 - -下面展示了稍微复杂点的,但是很常用的表格数据 - -::: details 点击查看代码 -```js -[ - [ - { - "v": "地区", - "ct": { - "fa": "General", - "t": "g" - }, - "m": "地区", - "bl": 1, - "bg": "#f6b26b", - "mc": { - "r": 0, - "c": 0, - "rs": 2, - "cs": 1 - }, - "ht": "0", - "vt": "0" - }, - { - "v": "销售额", - "ct": { - "fa": "General", - "t": "g" - }, - "m": "销售额", - "bl": 1, - "bg": "#f6b26b", - "mc": { - "r": 0, - "c": 1, - "rs": 1, - "cs": 2 - }, - "ht": "0" - }, - { - "mc": { - "r": 0, - "c": 1 - }, - "ht": "0" - }, - { - "v": "日期", - "ct": { - "fa": "General", - "t": "g" - }, - "m": "日期", - "bl": 1, - "bg": "#f6b26b", - "mc": { - "r": 0, - "c": 3, - "rs": 2, - "cs": 1 - }, - "vt": "0", - "ht": "0" - }, - { - "ct": { - "fa": "General", - "t": "g" - }, - "m": "备注", - "v": "备注", - "bg": "#ffd966", - "cl": 1, - "mc": { - "r": 0, - "c": 4, - "rs": 2, - "cs": 1 - }, - "ht": "0", - "vt": "0" - } - ], - [ - { - "mc": { - "r": 0, - "c": 0 - }, - "ht": "0", - "vt": "0" - }, - { - "m": "1月", - "ct": { - "fa": "General", - "t": "g" - }, - "v": "1月", - "ht": "0" - }, - { - "m": "2月", - "ct": { - "fa": "General", - "t": "g" - }, - "v": "2月", - "ht": "0" - }, - { - "mc": { - "r": 0, - "c": 3 - }, - "vt": "0", - "ht": "0" - }, - { - "mc": { - "r": 0, - "c": 4 - }, - "ht": "0", - "vt": "0" - } - ], - [ - { - "v": "四川", - "ct": { - "fa": "General", - "t": "g" - }, - "m": "四川" - }, - { - "v": 234, - "ct": { - "fa": "General", - "t": "n" - }, - "m": "234", - "it": 1, - "fc": "#660000", - "vt": "0" - }, - { - "v": 234, - "ct": { - "fa": "General", - "t": "n" - }, - "m": "234", - "it": 1, - "fc": "#660000", - "vt": "0" - }, - { - "v": 44056, - "ct": { - "fa": "yyyy-MM-dd", - "t": "d" - }, - "m": "2020-08-13", - "ht": "0" - }, - { - "ct": { - "fa": "General", - "t": "g" - }, - "m": "无", - "v": "无", - "ht": "1", - "tb": "0", - "tr": "0" - } - ], - [ - { - "v": "山东", - "ct": { - "fa": "General", - "t": "g" - }, - "m": "山东" - }, - { - "v": 345, - "ct": { - "fa": "General", - "t": "n" - }, - "m": "345", - "it": 1, - "fc": "#660000", - "vt": "0" - }, - { - "v": 345, - "ct": { - "fa": "General", - "t": "n" - }, - "m": "345", - "it": 1, - "fc": "#660000", - "vt": "0" - }, - { - "v": 44056, - "ct": { - "fa": "yyyy-MM-dd", - "t": "d" - }, - "m": "2020-08-13", - "ht": "0" - }, - { - "ct": { - "fa": "General", - "t": "g" - }, - "m": "无", - "v": "无", - "ht": "1", - "tb": "0", - "tr": "0" - } - ], - [ - { - "v": "江苏", - "ct": { - "fa": "General", - "t": "g" - }, - "m": "江苏" - }, - { - "v": 543, - "ct": { - "fa": "General", - "t": "n" - }, - "m": "543", - "it": 1, - "fc": "#660000", - "vt": "0" - }, - { - "v": 543, - "ct": { - "fa": "General", - "t": "n" - }, - "m": "543", - "it": 1, - "fc": "#660000", - "vt": "0" - }, - { - "v": 44056, - "ct": { - "fa": "yyyy-MM-dd", - "t": "d" - }, - "m": "2020-08-13", - "ht": "0" - }, - { - "ct": { - "fa": "General", - "t": "g" - }, - "m": "无", - "v": "无", - "ht": "1", - "tb": "0", - "tr": "0" - } - ] -] -``` -::: - -## 单元格属性表 +单元格对象包含以下单元格属性
@@ -347,7 +18,10 @@ TODO - + @@ -417,7 +91,7 @@ TODO - + @@ -475,13 +149,193 @@ TODO
ct celltype 单元格值格式:文本、时间等单元格格式{ + "fa": "General", + "t": "g" + }单元格值格式
mc mergecell 合并单元格{ rs: 10, cs:5 } 表示从此cell开始到10行5列的cell进行合并。主单元格{ r:0, c:0, rs: 2, cs:2 },辅单元格{ r:0, c:0 },合并单元格案例 Merge
+一个规范的单元格对象如下: + +```json +{ + "ct": { //单元格值格式 + "fa": "General", //格式名称为自动格式 + "t": "n" //格式类型为数字类型 + }, + "v": 233, //内容的原始值为 233 + "m": 233, //内容的显示值为 233 + "bg": "#f6b26b", //背景为 "#f6b26b" + "ff": 1, // 字体为 "Arial" + "fc": "#990000", //字体颜色为 "#990000" + "bl": 1, //字体加粗 + "it": 1, //字体斜体 + "fs": 9, //字体大小为 9px + "cl": 1, //启用删除线 + "ht": 0, //水平居中 + "vt": 0, //垂直居中 + "tr": 2, //文字旋转 -45° + "tb": 2, //文本自动换行 + "ps": { //批注 + "left": 92, //批注框左边距 + "top": 10, //批注框上边距 + "width": 91, //批注框宽度 + "height": 48, //批注框高度 + "value": "I am a comment", //批准内容 + "isshow": true //批注框为显示状态 + }, + "f": "=SUM(233)" //单元格是一个求和公式 +} +``` + +### 为什么会有原始值 `v` 和显示值 `m` 的区分? + +Luckysheet在存储数字类型的内容时,支持多种格式转换,所以需要保留原始值来做更多处理,比如同样一个数字`1`,设置成百分比格式就是`"100%"`,设置成两位小数数字就是`"1.00"`, + +还有一个原因是日期和时间格式的内容原始值会存储为一个数字,默认情况下,Luckysheet把`1900-1-1 0:00:00`存储为`1`,把`1900-1-1 0:00:00`以后的每一个时刻存储为该时刻与`1900-1-1 0:00:00`这个时刻的差值(以天为单位)。比如`44127`就表示`2020-10-23`这一天。 + +以下是特殊格式的例子: + +百分比 `100%` +```json +{ + "ct": { + "fa": "0%", + "t": "n" + }, + "v": 1, + "m": "100%" +} +``` + +小数 `1.00` +```json +{ + "ct": { + "fa": "##0.00", + "t": "n" + }, + "v": 1, + "m": "1.00" +} +``` + +日期 `2020-10-23` +```json +{ + "ct": { + "fa": "yyyy-MM-dd", + "t": "d" + }, + "v": 44127, + "m": "2020-10-23" +} +``` + +## 合并单元格
+ +设置一个合并单元格,需要处理两个地方,一是单元格对象中设置`mc`属性,二是在`config`中设置`merge`。 + +比如,将"A1:B2"单元格合并为一个单元格 + +- 第一步:先设置四个单元格的参数 + ```json + [ + [{ + "m": "merge cell", + "ct": { + "fa": "General", + "t": "g" + }, + "v": "merge cell", + "mc": { //合并单元格必备属性 + "r": 0, //主单元格的行号 + "c": 0, //主单元格的列号 + "rs": 2, //合并单元格占的行数 + "cs": 2 //合并单元格占的列数 + } + }, { + "mc": { + "r": 0, //主单元格的行号 + "c": 0, //主单元格的列号 + } + }], + [{ + "mc": { + "r": 0, //主单元格的行号 + "c": 0, //主单元格的列号 + } + }, { + "mc": { + "r": 0, //主单元格的行号 + "c": 0, //主单元格的列号 + } + }] + ] + ``` + + 合并单元格的关键属性是`mc`,主单元格是选区范围中左上角的单元格,包含4个属性 r/c/rs/cs ,分别表示 row/column/rowspan/columnspan,在这里,就表示从主单元格A1(row 0 column 0)开始到右边2行下方2列的单元格进行合并,选区范围中的其他单元格则只需要设置主单元格位置即可。 + +- 第二步:再设置`config.merge` + ```json + { + "0_0": { + "r": 0, + "c": 0, + "rs": 2, + "cs": 2 + } + } + ``` + 对象中的key为 `r + '_' + c` 的拼接值,value同主单元格的`mc`设置: r:行数,c:列数,rs:合并的行数,cs:合并的列数 + +> merge 详细参考:[表格数据config](/zh/guide/data.html#config) + +## 含边框单元格 + +单元格的边框设置与合并单元格类似,需要在`config`中设置`borderInfo`,区别在于不需要设置单元格对象。 +加入 + +比如,将"A1"单元格设置一个黑色细实线的全部边框 + +设置`config.borderInfo`为 +```json +{ + "rangeType": "range", + "borderType": "border-all", + "color": "#000", + "style": "1", + "range": [ + { + "row": [ 0, 0 ], + "column": [0, 0] + } + ] +} +``` +而其单元格对象不需要增加设置,如下只是基础的内容和格式设置 +```json +[ + [ + { + "m": "borderCell", + "ct": { + "fa": "General", + "t": "g" + }, + "v": "borderCell" + } + ] +] +``` + +> borderInfo 详细参考:[表格数据config](/zh/guide/data.html#config) + +## 简化的单元格数据 + +特别强调的是,表格初始化的时候,采用的是`r/c/v`对象组成的一维数组格式,其中`v`的值一般是设置为单元格对象。为了节约后台的存储空间,`v`的值支持简写格式,直接写为一个字符串即可,渲染进Luckysheet后自动识别为自动格式即,`"ct": { "fa": "General", "t": "n" }` + +以下为初始化3个单元格信息,第三个单元格即为简写格式: -以下为3个单元格存储: ```json [ { - "r": 10, - "c": 11, + "r": 0, + "c": 0, "v": { "f": "=MAX(A7:A9)", "ct": { @@ -496,24 +350,26 @@ TODO "r": 0, "c": 1, "v": { - "v": 12, "f": "=SUM(A2)", - "bg": "#fff000" + "bg": "#fff000", + "v": 12, + "m": "12" } }, { - "r": 10, - "c": 11, - "v": "值2" + "r": 0, + "c": 2, + "v": "value 2" } ] ``` +> 了解 [celldata的使用](/zh/guide/data.html#celldata) -##
单元格格式
+## 单元格值格式
-参考[Aspose.Cells](https://docs.aspose.com/display/cellsnet/List+of+Supported+Number+Formats#ListofSupportedNumberFormats-Aspose.Cells) +值格式即为单元格对象中 `ct` 的设置, -格式设置为: +如下为自动格式的单元格 ```json { @@ -531,7 +387,9 @@ TODO |fa|Format格式的定义串| 如"General"| |t|Type类型|如"g"| -可选择的设置如下: + +### 可选择的设置如下 + | 格式 | ct.fa | ct.t | m 值示例 |备注 | |----------|----------|-------------------------|------------------------- |------------------------- | | 自动 | General | g/n | Luckysheet |自动格式,也是默认的格式;单元格内容为数字时,`m`的值为`'n'`| @@ -739,5 +597,4 @@ TODO | 货币:智利比索 | "$" 0.00 | n | $ 123.00 || | 货币:中非金融合作法郎 | "FCFA" 0.00 | n | FCFA 123.00 || - -注意: 导入/导出只用考虑用户看到的数据样式,例如excel中处理日期格式的方式为把日期统一转换为数字:42736 代表 2017-1-1 \ No newline at end of file +以上配置参考了[Aspose.Cells](https://docs.aspose.com/display/cellsnet/List+of+Supported+Number+Formats#ListofSupportedNumberFormats-Aspose.Cells) \ No newline at end of file diff --git a/docs/zh/guide/config.md b/docs/zh/guide/config.md index e49d310..dded6cd 100644 --- a/docs/zh/guide/config.md +++ b/docs/zh/guide/config.md @@ -1,225 +1,273 @@ -# 基本配置 - -## container +# 整体配置 + +## 基础结构 + +初始化表格时,可以设置一个对象配置串`options`来自定义配置Luckysheet表格。 + +如下是一个简洁的配置案例: + +```js +// 配置项 +const options = { + container: 'luckysheet', // 设定DOM容器的id + title: 'Luckysheet Demo', // 设定表格名称 + lang: 'zh' // 设定表格语言 + + // 更多其他设置... +} + +// 初始化表格 +luckysheet.create(options) +``` + +这里的`options`配置项会作用于整个表格,特别的,单个sheet的配置则需要在`options.data`数组中,分别设置对应更详细的参数,参考[工作表配置](/zh/guide/sheet.html) + +## 配置项 + +以下为所有支持的设置参数 + +- [container](#container) +- [title](#title) +- [lang](#lang) +- [gridKey](#gridKey) +- [loadUrl](#loadUrl) +- [loadSheetUrl](#loadSheetUrl) +- [allowUpdate](#allowUpdate) +- [updateUrl](#updateUrl) +- [updateImageUrl](#updateImageUrl) +- [data](#data) +- [plugins](#plugins) +- [column](#column) +- [row](#row) +- [autoFormatw](#autoFormatw) +- [accuracy](#accuracy) +- [allowCopy](#allowCopy) +- [showtoolbar](#showtoolbar) +- [showinfobar](#showinfobar) +- [showsheetbar](#showsheetbar) +- [showstatisticBar](#showstatisticBar) +- [allowEdit](#allowEdit) +- [enableAddRow](#enableAddRow) +- [enableAddCol](#enableAddCol) +- [userInfo](#userInfo) +- [userMenuItem](#userMenuItem) +- [myFolderUrl](#myFolderUrl) +- [devicePixelRatio](#devicePixelRatio) +- [functionButton](#functionButton) +- [showConfigWindowResize](#showConfigWindowResize) +- [enablePage](#enablePage) +- [fullscreenmode](#fullscreenmode) +- [beforeCreateDom](#beforeCreateDom) +- [fireMousedown](#fireMousedown) +- [forceCalculation](#forceCalculation) + +### container - 类型:String - 默认值:"luckysheet" - 作用:容器的ID ------------ -## title +### title - 类型:String - 默认值:"Luckysheet Demo" - 作用:表格的名称 ------------ -## lang +### lang - 类型:String - 默认值:"en" -- 作用:国际化设置,允许设置表格的语言,暂时支持中文("zh")和英文("en") +- 作用:国际化设置,允许设置表格的语言,支持中文("zh")和英文("en") ------------ -## column -- 类型:Number -- 默认值:60 -- 作用:空表格默认的列数量 +### gridKey +- 类型:String +- 默认值:"" +- 作用:表格唯一标识符 ------------ -## row -- 类型:Number -- 默认值:84 -- 作用:空表格默认的行数据量 +### loadUrl +- 类型:String +- 默认值:"" +- 作用:配置`loadUrl`的地址,Luckysheet会通过ajax请求整个表格数据,默认载入status为1的sheet数据中的所有`celldata`,其余的sheet载入除`celldata`字段外的所有字段 + +------------ +### loadSheetUrl +- 类型:String +- 默认值:"" +- 作用:配置`loadSheetUrl`的地址,参数为`gridKey`(表格主键) 和 `index`(sheet主键合集,格式为`[1,2,3]`),返回的数据为sheet的`celldata`字段数据集合 + +------------ +### allowUpdate +- 类型:Boolean +- 默认值:false +- 作用:是否允许操作表格后的后台更新,与`updateUrl`配合使用 + +------------ +### updateUrl +- 类型:String +- 默认值:"" +- 作用:操作表格后的后台更新地址,在`allowUpdate`为`true`时才会有效 + +------------ +### updateImageUrl +- 类型:String +- 默认值:"" +- 作用:缩略图的更新地址 ------------ -## data +### data - 类型:Array - 默认值:[{ "name": "Sheet1", color: "", "status": "1", "order": "0", "data": [], "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数据`[shee1, sheet2, sheet3]` +- 作用:当未配置`loadUrl`和`loadSheetUrl`的时候,需要手动配置传入整个客户端所有sheet数据`[shee1, sheet2, sheet3]`,详细参数设置参见[工作表配置](/zh/guide/sheet.html) ------------ -## plugins +### plugins - 类型:Array - 默认值:[] -- 作用:配置插件,支持 图表:"chart" +- 作用:配置插件,支持图表:"chart" ------------ -## fullscreenmode -- 类型:Boolean -- 默认值:true -- 作用:是否全屏模式。非全屏模式下,标记框不会强制选中 +### column +- 类型:Number +- 默认值:60 +- 作用:空表格默认的列数量 ------------ -## autoFormatw +### row +- 类型:Number +- 默认值:84 +- 作用:空表格默认的行数据量 + +------------ +### autoFormatw - 类型:Boolean - 默认值:false - 作用:自动格式化超过4位数的数字为‘亿万格式’,例:true or "true" or "TRUE" ------------ -## accuracy +### accuracy - 类型:Number - 默认值:undefined - 作用:设置精度,小数点后的位数。传参数为数字或数字字符串,例: "0" 或 0 ------------ -## allowCopy +### allowCopy - 类型:Boolean - 默认值:true - 作用:是否允许拷贝 ------------ -## showtoolbar +### showtoolbar - 类型:Boolean - 默认值:true - 作用:是否第二列显示工具栏 ------------ -## showinfobar +### showinfobar - 类型:Boolean - 默认值:true - 作用:是否显示顶部名称栏 ------------ -## showsheetbar +### showsheetbar - 类型:Boolean - 默认值:true - 作用:是否显示底部表格名称区域 ------------ - -## showstatisticBar +### showstatisticBar - 类型:Boolean - 默认值:true - 作用:是否显示底部计数栏 ------------ -## allowEdit +### allowEdit - 类型:Boolean - 默认值:true - 作用:是否允许前台编辑 ------------ -## enableAddRow +### enableAddRow - 类型:Boolean - 默认值:true - 作用:允许增加行 ------------ -## enableAddCol +### enableAddCol - 类型:Boolean - 默认值:true - 作用:允许增加列 ------------ -## pointEdit -- 类型:Boolean -- 默认值:false -- 作用:是否是编辑器插入表格模式 - ------------- -## pointEditUpdate -- 类型:Function -- 默认值:null -- 作用:编辑器表格更新函数 - ------------- -## pointEditZoom -- 类型:Number -- 默认值:1 -- 作用:编辑器表格编辑时缩放比例 - ------------- -## userInfo +### userInfo - 类型:String - 默认值:`' rabbit'` - 作用:右上角的用户信息展示样式 ------------ -## userMenuItem +### userMenuItem - 类型:Array - 默认值:`[{url:"www.baidu.com", "icon":'', "name":"我的表格"}, {url:"www.baidu.com", "icon":'', "name":"退出登陆"}]` - 作用:点击右上角的用户信息弹出的菜单 ------------ -## myFolderUrl +### myFolderUrl - 类型:String - 默认值:"www.baidu.com" - 作用:左上角<返回按钮的链接 ------------ -## devicePixelRatio +### devicePixelRatio - 类型:Number - 默认值:window.devicePixelRatio - 作用:设备比例,比例越大表格分辨率越高 ------------ -## gridKey -- 类型:String -- 默认值:"" -- 作用:表格唯一标识符 - ------------- -## allowUpdate -- 类型:Boolean -- 默认值:false -- 作用:是否允许操作表格后的后台更新,与`updateUrl`配合使用 - ------------- -## loadUrl -- 类型:String -- 默认值:"" -- 作用:配置`loadUrl`的地址,Luckysheet会通过ajax请求表格数据,默认载入status为1的sheet数据中的所有`data`,其余的sheet载入除`data`字段外的所有字段 - ------------- -## loadSheetUrl -- 类型:String -- 默认值:"" -- 作用:配置`loadSheetUrl`的地址,参数为`gridKey`(表格主键) 和 `index`(sheet主键合集,格式为`[1,2,3]`),返回的数据为sheet的`data`字段数据集合 - ------------- -## updateUrl -- 类型:String -- 默认值:"" -- 作用:操作表格后的后台更新地址,在`allowUpdate`为`true`时才会有效 - ------------- -## updateImageUrl -- 类型:String -- 默认值:"" -- 作用:缩略图的更新地址 - ------------- -## functionButton +### functionButton - 类型:String - 默认值:"" - 作用:右上角功能按钮,例如`' '` ------------ -## showConfigWindowResize +### showConfigWindowResize - 类型:Boolean - 默认值:true - 作用:图表或数据透视表的配置会在右侧弹出,设置弹出后表格是否会自动缩进 ------------ -## enablePage +### enablePage - 类型:Boolean - 默认值:false - 作用:允许加载下一页 ------------ -## chartConfigChange -- 类型:Function -- 默认值:null -- 作用:图表插件中图表更新触发的自定义方法 +### fullscreenmode +- 类型:Boolean +- 默认值:true +- 作用:是否全屏模式。非全屏模式下,标记框不会强制选中 ------------ -## beforeCreateDom +### beforeCreateDom - 类型:Function - 默认值:null - 作用:表格创建之前自定义方法 ------------ -## fireMousedown +### fireMousedown - 类型:Function - 默认值:null - 作用:单元格数据下钻自定义方法 +------------ +### forceCalculation +- 类型:Boolean +- 默认值:false +- 作用:强制刷新公式。 + + 默认情况下,为提高加载性能,表格初始化的时候,含有公式的单元格会默认直接取得`v`和`m`作为数据结果,而不做实时计算。 + + 如果公式关联到的单元格数据已经变化,或者公式所在的单元格数据结果改变了,则会导致关联单元格应该计算得出的结果和实际显示结果不一致,这是就需要开启公式刷新,保证数据实时计算的准确性。 + + ⚠️提醒,公式较多时会有性能问题,慎用! + ------------ \ No newline at end of file diff --git a/docs/zh/guide/data.md b/docs/zh/guide/data.md index 9f836b0..edd2219 100644 --- a/docs/zh/guide/data.md +++ b/docs/zh/guide/data.md @@ -1,768 +1,14 @@ # 表格数据 -## 获取表格数据 +存储了sheet中所有单元格中的值,Luckysheet在建立的时候会根据 `luckysheetfile[i].row` 和 `luckysheetfile[i].column` 的行列数量大小新建一个表格data,然后再使用 `data[r][c]=v` 的方式填充表格数据,空数据单元格以null表示。 + +## 初始化表格数据 - **配置**: 配置 `updateUrl` 的地址,Luckysheet会通过ajax请求表格数据,默认载入status为1的sheet数据中的所有`data`,其余的sheet载入除`data`字段外的所有字段。 - **格式**: - 通过全局方法 `luckysheet.getluckysheetfile()`可以获取所有工作表的配置信息。 - - luckysheetfile示例如下: - ```json - [ - { - "name": "Cell", //工作表名称 - "color": "", //工作表颜色 - "index": "0", //工作表索引 - "status": "1", //激活状态 - "order": "0", //工作表的顺序 - "hide": 0,//是否隐藏 - "row": 36, //行数 - "column": 18, //列数 - "config": { - "merge":{}, //合并单元格 - "rowlen":{}, //表格行高 - "columnlen":{}, //表格列宽 - "rowhidden":{}, //隐藏行 - "columnhidden":{}, //隐藏列 - "borderInfo":{}, //边框 - }, - "celldata": [], //初始化使用的单元格数据 - "data": [], //更新和存储使用的单元格数据 - "scrollLeft": 0, //左右滚动条位置 - "scrollTop": 315, //上下滚动条位置 - "luckysheet_select_save": [], //选中的区域 - "luckysheet_conditionformat_save": {},//条件格式 - "calcChain": [],//公式链 - "isPivotTable":false,//是否数据透视表 - "pivotTable":{},//数据透视表设置 - "filter_select": null,//筛选范围 - "filter": null,//筛选配置 - "luckysheet_alternateformat_save": [], //交替颜色 - "luckysheet_alternateformat_save_modelCustom": [], //自定义交替颜色 - "chart": [], //图表配置 - "visibledatarow": [], //所有行的位置 - "visibledatacolumn": [], //所有列的位置 - "ch_width": 2322, //工作表区域的宽度 - "rh_height": 949, //工作表区域的高度 - }, - { - "name": "Sheet2", - "color": "", - "status": "0", - "order": "1", - "data": [], - "config": {}, - "index": 1 - }, - { - "name": "Sheet3", - "color": "", - "status": "0", - "order": "2", - "data": [], - "config": {}, - "index": 2 - } - ] - ``` -- **说明**: - - ## name - - 类型:String - - 默认值:"Sheet1" - - 作用:工作表名称 - - ------------ - ## color - - 类型:String - - 默认值:"##f20e0e" - - 作用:工作表颜色,工作表名称下方会有一条底部边框 - - ------------ - ## index - - 类型:Number - - 默认值:0 - - 作用:工作表索引,从0开始 - - ------------ - ## status - - 类型:Number - - 默认值:1 - - 作用: 激活状态,仅有一个激活状态的工作表,其他工作表为 0 - - ------------ - ## order - - 类型:Number - - 默认值:0 - - 作用: 工作表的索引,新增工作表时会递增,从0开始 - - ------------ - ## hide - - 类型:Number - - 默认值:0 - - 作用: 是否隐藏,`0`为不隐藏,`1`为隐藏 - - ------------ - ## row - - 类型:Number - - 默认值:36 - - 作用: 单元格行数 - - ------------ - ## column - - 类型:Number - - 默认值:18 - - 作用: 单元格列数 - - ------------ - ## scrollLeft - - 类型:Number - - 默认值:0 - - 作用: 左右滚动条位置 - - ------------ - ## scrollTop - - 类型:Number - - 默认值:0 - - 作用: 上下滚动条位置 - - ------------ - ## config - - 类型:Object - - 默认值:{} - - 作用:表格行高、列宽、合并单元格、边框、隐藏行等设置 - - ### config.merge - - 类型:Object - - 默认值:{} - - 作用:合并单元格设置 - - 示例: - ```js - { - "13_5": { - "r": 13, - "c": 5, - "rs": 3, - "cs": 1 - }, - "13_7": { - "r": 13, - "c": 7, - "rs": 3, - "cs": 2 - }, - "14_2": { - "r": 14, - "c": 2, - "rs": 1, - "cs": 2 - } - } - ``` - 对象中的`key`为`r + '_' + c`的拼接值,`value`为左上角单元格信息: r:行数,c:列数,rs:合并的行数,cs:合并的列数 - - ### config.rowlen - - 类型:Object - - 默认值:{} - - 作用:每个单元格的行高 - - 示例: - ```js - "rowlen": { - "0": 20, - "1": 20, - "2": 20 - } - ``` - - ### config.columnlen - - 类型:Object - - 默认值:{} - - 作用:每个单元格的列宽 - - 示例: - ```js - "columnlen": { - "0": 97, - "1": 115, - "2": 128 - } - ``` - - ### config.rowhidden - - 类型:Object - - 默认值:{} - - 作用:隐藏行信息,格式为:`rowhidden[行数]: 0`, - - `key`指定行数即可,`value`总是为`0` - - 示例: - ```js - "rowhidden": { - "30": 0, - "31": 0 - } - ``` - - ### config.columnhidden - - 类型:Object - - 默认值:{} - - 作用:隐藏列 - 格式为:`columnhidden[列数]: 0`, - - `key`指定列数即可,`value`总是为`0` - - 示例: - ```js - "columnhidden": { - "30": 0, - "31": 0 - } - ``` - - ### config.borderInfo - - 类型:Object - - 默认值:{} - - 作用:单元格的边框信息,示例: - ```js - "borderInfo": [{ - "rangeType": "cell", - "value": { - "row_index": 3, - "col_index": 3, - "l": { - "style": 10, - "color": "rgb(255, 0, 0)" - }, - "r": { - "style": 10, - "color": "rgb(255, 0, 0)" - }, - "t": { - "style": 10, - "color": "rgb(255, 0, 0)" - }, - "b": { - "style": 10, - "color": "rgb(255, 0, 0)" - } - } - }, - { - "rangeType": "range", - "borderType": "border-all", - "style": "3", - "color": "#0000ff", - "range": [{ - "row": [7, 8], - "column": [2, 3] - }] - }, { - "rangeType": "range", - "borderType": "border-inside", - "style": "3", - "color": "#0000ff", - "range": [{ - "row": [7, 8], - "column": [8, 9] - }] - }] - ``` - 范围类型分单个单元格和选区两种情况 - 1. 选区 `rangeType: "range"` - - + 边框类型 `borderType:"border-left" | "border-right" | "border-top" | "border-bottom" | "border-all" | "border-outside" | "border-inside" | "border-horizontal" | "border-vertical" | "border-none"`, - + 边框粗细 `style: 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` - + 边框颜色 `color: 16进制颜色值` - + 选区范围 `range: 行列信息数组` - - 2. 单个单元格 `rangeType:"cell"` - + 单元格的行数和列数索引 `value.row_index: 数字,value.col_index: 数字` - + 四个边框对象 `value.l:左边框,value.r:右边框,value.t:上边框,value.b:下边框` - + 边框粗细 `value.l.style: 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` - + 边框颜色 `value.l.color: 16进制颜色值` - - - 示例 - + ```js - { - "rangeType": "range", - "borderType": "border-all", - "style": "3", - "color": "#0000ff", - "range": [{ - "row": [7, 8], - "column": [2, 3] - }] - } - ``` - 表示设置范围为`{"row": [7, 8],"column": [2, 3]}`的选区,类型为所有边框,边框粗细为`Dotted`,颜色为`"#0000ff"` - - + ```js - { - "rangeType": "cell", - "value": { - "row_index": 3, - "col_index": 3, - "l": { - "style": 10, - "color": "rgb(255, 0, 0)" - }, - "r": { - "style": 10, - "color": "rgb(255, 0, 0)" - }, - "t": { - "style": 10, - "color": "rgb(255, 0, 0)" - }, - "b": { - "style": 10, - "color": "rgb(255, 0, 0)" - } - } - } - ``` - 表示设置单元格`"D4"`,上边框/下边框/左边框/右边框都是边框粗细为`"MediumDashDot"`,颜色为`"rgb(255, 0, 0)"` - - ------------ - ## celldata - - 类型:Array - - 默认值:[] - - 作用: 原始单元格数据集,是一个包含`{r:0,c:0,v:{m:"value",v:"value",ct: {fa: "General", t: "g"}}}`格式单元格信息的一维数组,只在初始化的时候使用,使用celldata初始化完表格后,数据转换为luckysheetfile中的同级字段data,如`luckysheetfile[0].data`,后续操作表格的数据更新,会更新到这个data字段中,celldata不再使用。 - - 示例: - ```js - [{ - "r": 0, - "c": 0, - "v": { - ct: {fa: "General", t: "g"}, - m:"value1", - v:"value1" - } - }, { - "r": 0, - "c": 1, - "v": { - ct: {fa: "General", t: "g"}, - m:"value2", - v:"value2" - } - }] - ``` - - ------------ - ## luckysheet_select_save - - 类型:Array - - 默认值:[] - - 作用: 选中的区域,支持多选,是一个包含多个选区对象的一维数组,示例: - ```js - [ - { - "left": 0, - "width": 97, - "top": 0, - "height": 20, - "left_move": 0, - "width_move": 97, - "top_move": 0, - "height_move": 41, - "row": [ 0, 1 ], - "column": [ 0, 0 ], - "row_focus": 0, - "column_focus": 0 - }, - { - "left": 98, - "width": 73, - "top": 63, - "height": 20, - "left_move": 98, - "width_move": 189, - "top_move": 63, - "height_move": 41, - "row": [ 3, 4 ], - "column": [ 1, 2 ], - "row_focus": 3, - "column_focus": 1 - }, - { - "left": 288, - "width": 128, - "top": 21, - "height": 20, - "left_move": 288, - "width_move": 128, - "top_move": 21, - "height_move": 62, - "row": [ 1, 3 ], - "column": [ 3, 3 ], - "row_focus": 1, - "column_focus": 3 - } - ] - ``` - - ------------ - ## luckysheet_conditionformat_save - - 类型:Array - - 默认值:[] - - 作用: 条件格式配置信息,包含多个条件格式配置对象的一维数组, - - type: "default": 突出显示单元格规则和项目选区规则, - - "dataBar":数据条, - - "icons":图标集, - - "colorGradation": 色阶 - - 示例: - ```js - [ - { - "type": "default", - "cellrange": [ - { - "row": [ 2, 7 ], - "column": [ 2, 2 ] - } - ], - "format": { - "textColor": "#000000", - "cellColor": "#ff0000" - }, - "conditionName": "betweenness", - "conditionRange": [ - { - "row": [ 4, 4 ], - "column": [ 2, 2 ] - }, - { - "row": [ 6, 6 ], - "column": [ 2, 2 ] - } - ], - "conditionValue": [ 2, 4 - ] - }, - { - "type": "dataBar", - "cellrange": [ - { - "row": [ 10, 15 ], - "column": [ 10, 11 ] - } - ], - "format": [ - "#6aa84f", - "#ffffff" - ] - }, - { - "type": "icons", - "cellrange": [ - { - "row": [ 19, 23 ], - "column": [ 2, 2 ] - } - ], - "format": { - "len": "3", - "leftMin": "0", - "top": "0" - } - }, - { - "type": "colorGradation", - "cellrange": [ - { - "left": 422, - "width": 100, - "top": 210, - "height": 20, - "left_move": 422, - "width_move": 100, - "top_move": 210, - "height_move": 125, - "row": [ 10, 15 ], - "column": [ 6, 6 ], - "row_focus": 10, - "column_focus": 6 - } - ], - "format": [ - "rgb(99, 190, 123)", - "rgb(255, 235, 132)", - "rgb(248, 105, 107)" - ] - } - ] - ``` - - ------------ - ## calcChain - - 类型:Array - - 默认值:[] - - 作用: 公式链,用于公式所链接的单元格改变后,所有引用此单元格的公式都会联动刷新,示例: - ```js - [{ - "r": 6, - "c": 3, - "index": 1, - "func": [true, 23.75, "=AVERAGE(D3:D6)"], - "color": "w", - "parent": null, - "chidren": {}, - "times": 0 - }, { - "r": 7, - "c": 3, - "index": 1, - "func": [true, 30, "=MAX(D3:D6)"], - "color": "w", - "parent": null, - "chidren": {}, - "times": 0 - }] - ``` - - ------------ - ## isPivotTable - - 类型:Boolean - - 默认值:false - - 作用: 是否数据透视表 - - ------------ - ## pivotTable - - 类型:Object - - 默认值:{} - - 作用: 数据透视表设置,示例: - ```js - { - "pivot_select_save": { - "left": 0, - "width": 73, - "top": 0, - "height": 19, - "left_move": 0, - "width_move": 369, - "top_move": 0, - "height_move": 259, - "row": [0, 12], - "column": [0, 4], - "row_focus": 0, - "column_focus": 0 - }, - "pivotDataSheetIndex": 6, //The sheet index where the source data is located - "column": [{ - "index": 3, - "name": "subject", - "fullname": "subject" - }], - "row": [{ - "index": 1, - "name": "student", - "fullname": "student" - }], - "filter": [], - "values": [{ - "index": 4, - "name": "score", - "fullname": "count:score", - "sumtype": "COUNTA", - "nameindex": 0 - }], - "showType": "column", - "pivotDatas": [ - ["count:score", "science", "mathematics", "foreign language", "English", "total"], - ["Alex", 1, 1, 1, 1, 4], - ["Joy", 1, 1, 1, 1, 4], - ["Tim", 1, 1, 1, 1, 4], - ["total", 3, 3, 3, 3, 12] - ], - "drawPivotTable": false, - "pivotTableBoundary": [5, 6] - } - ``` - - ------------ - ## filter_select - - 类型:Object - - 默认值:{} - - 作用: 筛选范围,一个选区,一个sheet只有一个筛选范围,类似`luckysheet_select_save`示例: - ```js - { - "left": 74, - "width": 73, - "top": 40, - "height": 19, - "left_move": 74, - "width_move": 221, - "top_move": 40, - "height_move": 99, - "row": [ - 2, - 6 - ], - "column": [ - 1, - 3 - ], - "row_focus": 2, - "column_focus": 1 - } - ``` - - ------------ - ## filter - - 类型:Object - - 默认值:{} - - 作用: 筛选的具体设置,示例: - ```js - { - "0": { - "caljs": {}, - "rowhidden": { - "3": 0, - "4": 0 - }, - "optionstate": true, - "str": 2, - "edr": 6, - "cindex": 1, - "stc": 1, - "edc": 3 - }, - "1": { - "caljs": {}, - "rowhidden": { - "6": 0 - }, - "optionstate": true, - "str": 2, - "edr": 6, - "cindex": 2, - "stc": 1, - "edc": 3 - } - } - ``` - - ------------ - ## luckysheet_alternateformat_save - - 类型:Array - - 默认值:[] - - 作用: 交替颜色配置,示例: - ```js - [{ - "cellrange": { - "row": [1, 6], - "column": [1, 5] - }, - "format": { - "head": { - "fc": "#000", - "bc": "#5ed593" - }, - "one": { - "fc": "#000", - "bc": "#ffffff" - }, - "two": { - "fc": "#000", - "bc": "#e5fbee" - }, - "foot": { - "fc": "#000", - "bc": "#a5efcc" - } - }, - "hasRowHeader": false, - "hasRowFooter": false - }, { - "cellrange": { - "row": [1, 6], - "column": [8, 12] - }, - "format": { - "head": { - "fc": "#000", - "bc": "#5599fc" - }, - "one": { - "fc": "#000", - "bc": "#ffffff" - }, - "two": { - "fc": "#000", - "bc": "#ecf2fe" - }, - "foot": { - "fc": "#000", - "bc": "#afcbfa" - } - }, - "hasRowHeader": false, - "hasRowFooter": false - }] - ``` - - ------------ - ## luckysheet_alternateformat_save_modelCustom - - 类型:Array - - 默认值:[] - - 作用:自定义交替颜色,包含多个自定义交替颜色的配置,示例: - ```js - [{ - "head": { - "fc": "#6aa84f", - "bc": "#ffffff" - }, - "one": { - "fc": "#000", - "bc": "#ffffff" - }, - "two": { - "fc": "#000", - "bc": "#e5fbee" - }, - "foot": { - "fc": "#000", - "bc": "#a5efcc" - } - }] - ``` - - ------------ - ## chart - - 类型:Array - - 默认值:[] - - 作用: 图表配置(开发中) - - ------------ - ## visibledatarow - - 类型:Number - - 默认值:[] - - 作用: 所有行的位置信息,递增的行位置数据,初始化无需设置 - - ------------ - ## visibledatacolumn - - 类型:Number - - 默认值:[] - - 作用: 所有列的位置信息,递增的列位置数据,初始化无需设置 - - ------------ - ## ch_width - - 类型:Number - - 默认值:2322 - - 作用: 整个工作表区域的宽度(包含边界的灰色区域),初始化无需设置 - - ------------ - ## rh_height - - 类型:Number - - 默认值:2322 - - 作用: 整个工作表区域的高度(包含边界的灰色区域),初始化无需设置 - - ------------ ## 获取sheet数据 diff --git a/docs/zh/guide/operate.md b/docs/zh/guide/operate.md index fd85f44..966fad9 100644 --- a/docs/zh/guide/operate.md +++ b/docs/zh/guide/operate.md @@ -6,7 +6,7 @@ 通常,共享编辑(或者叫协同编辑)是需要和账户系统配合来控制权限的,开发者可以根据已有功能,配合自己的账户管理功能自行实现权限控制。 -以下为所有的支持传输到后台的操作类型。 +以下为所有的支持传输到后台的操作类型,并且以MongoDB做存储示例,讲解如何做前后端交互。 ## 单元格刷新 @@ -16,7 +16,7 @@ { "t": "v", "i": 3, - "v": "asdf", + "v": "good", "r": 5, "c": 7 } @@ -28,13 +28,13 @@ | ------------ | ------------ | |t|操作类型表示符号| |i|当前sheet的索引值| - |v|单元格的值,参考 [单元格属性表](https://mengshukeji.github.io/LuckysheetDocs/zh/guide/format.html#%E5%8D%95%E5%85%83%E6%A0%BC%E5%B1%9E%E6%80%A7%E8%A1%A8)| + |v|单元格的值,参考 [单元格属性表](/zh/guide/cell.html#基本单元格)| |r|单元格的行号| |c|单元格的列号| - **后台更新**: - 单元格更新主要是更新 `luckysheetfile[i].celldata` 参数,该参数是一个数组: + 前端维护luckysheetfile[i].data,而单元格更新到后台,继续维护`luckysheetfile[i].celldata` 参数,该参数是一个一维数组: ```json [ {r:0, c:1, v: "值1"}, @@ -42,8 +42,6 @@ {r:10, c:11, v:{f:"=sum", v:"100"}} ] ``` - 存储了sheet中所有单元格中的值,Luckysheet在建立的时候会根据 `luckysheetfile[i].row` 和 `luckysheetfile[i].column` 的行列数量大小新建一个表格data,然后再使用 `data[r][c]=v` 的方式填充表格数据,空数据单元格以null表示。 - 后台在保存前台推送的数据时,首先需要把参数转换为 `{r:0, c:1:v:100}` 的格式,然后更新 `luckysheetfile[i].celldata` 字段,如果存在该单元格则更新,如果没有则添加,如果存在该单元格但是`v`为null则删除该单元格。 - **前台查看**: diff --git a/docs/zh/guide/sheet.md b/docs/zh/guide/sheet.md new file mode 100644 index 0000000..867be74 --- /dev/null +++ b/docs/zh/guide/sheet.md @@ -0,0 +1,764 @@ +# 工作表配置 + +表格初始化配置`options`时,需要配置一个由每个工作表参数组成的一维数组,赋给`options.data`。 + +> 表格初始化完成之后,通过全局方法[`luckysheet.getAllSheets()`](/zh/guide/api.html#getAllSheets([setting]))可以获取所有工作表的配置信息。 + +luckysheetfile示例如下: +```json +[ + { + "name": "Cell", //工作表名称 + "color": "", //工作表颜色 + "index": "0", //工作表索引 + "status": "1", //激活状态 + "order": "0", //工作表的顺序 + "hide": 0,//是否隐藏 + "row": 36, //行数 + "column": 18, //列数 + "config": { + "merge":{}, //合并单元格 + "rowlen":{}, //表格行高 + "columnlen":{}, //表格列宽 + "rowhidden":{}, //隐藏行 + "columnhidden":{}, //隐藏列 + "borderInfo":{}, //边框 + }, + "celldata": [], //初始化使用的单元格数据 + "data": [], //更新和存储使用的单元格数据 + "scrollLeft": 0, //左右滚动条位置 + "scrollTop": 315, //上下滚动条位置 + "luckysheet_select_save": [], //选中的区域 + "luckysheet_conditionformat_save": {},//条件格式 + "calcChain": [],//公式链 + "isPivotTable":false,//是否数据透视表 + "pivotTable":{},//数据透视表设置 + "filter_select": {},//筛选范围 + "filter": null,//筛选配置 + "luckysheet_alternateformat_save": [], //交替颜色 + "luckysheet_alternateformat_save_modelCustom": [], //自定义交替颜色 + "freezen": {}, //冻结行列 + "chart": [], //图表配置 + "visibledatarow": [], //所有行的位置 + "visibledatacolumn": [], //所有列的位置 + "ch_width": 2322, //工作表区域的宽度 + "rh_height": 949, //工作表区域的高度 + "load": "1", //已加载过此sheet的标识 + }, + { + "name": "Sheet2", + "color": "", + "status": "0", + "order": "1", + "data": [], + "config": {}, + "index": 1 + }, + { + "name": "Sheet3", + "color": "", + "status": "0", + "order": "2", + "data": [], + "config": {}, + "index": 2 + } +] +``` + +### name +- 类型:String +- 默认值:"Sheet1" +- 作用:工作表名称 + +------------ +### color +- 类型:String +- 默认值:"##f20e0e" +- 作用:工作表颜色,工作表名称下方会有一条底部边框 + +------------ +### index +- 类型:Number +- 默认值:0 +- 作用:工作表索引,从0开始 + +------------ +### status +- 类型:Number +- 默认值:1 +- 作用: 激活状态,仅有一个激活状态的工作表,其他工作表为 0 + +------------ +### order +- 类型:Number +- 默认值:0 +- 作用: 工作表的索引,新增工作表时会递增,从0开始 + +------------ +### hide +- 类型:Number +- 默认值:0 +- 作用: 是否隐藏,`0`为不隐藏,`1`为隐藏 + +------------ +### row +- 类型:Number +- 默认值:36 +- 作用: 单元格行数 + +------------ +### column +- 类型:Number +- 默认值:18 +- 作用: 单元格列数 + +------------ +### scrollLeft +- 类型:Number +- 默认值:0 +- 作用: 左右滚动条位置 + +------------ +### scrollTop +- 类型:Number +- 默认值:0 +- 作用: 上下滚动条位置 + +------------ +### config +- 类型:Object +- 默认值:{} +- 作用:表格行高、列宽、合并单元格、边框、隐藏行等设置 + +#### config.merge +- 类型:Object +- 默认值:{} +- 作用:合并单元格设置 +- 示例: + ```js + { + "13_5": { + "r": 13, + "c": 5, + "rs": 3, + "cs": 1 + }, + "13_7": { + "r": 13, + "c": 7, + "rs": 3, + "cs": 2 + }, + "14_2": { + "r": 14, + "c": 2, + "rs": 1, + "cs": 2 + } + } + ``` +对象中的`key`为`r + '_' + c`的拼接值,`value`为左上角单元格信息: r:行数,c:列数,rs:合并的行数,cs:合并的列数 + +#### config.rowlen +- 类型:Object +- 默认值:{} +- 作用:每个单元格的行高 +- 示例: + ```js + "rowlen": { + "0": 20, + "1": 20, + "2": 20 + } + ``` + +#### config.columnlen +- 类型:Object +- 默认值:{} +- 作用:每个单元格的列宽 +- 示例: + ```js + "columnlen": { + "0": 97, + "1": 115, + "2": 128 + } + ``` + +#### config.rowhidden +- 类型:Object +- 默认值:{} +- 作用:隐藏行信息,格式为:`rowhidden[行数]: 0`, + + `key`指定行数即可,`value`总是为`0` +- 示例: + ```js + "rowhidden": { + "30": 0, + "31": 0 + } + ``` + +#### config.columnhidden +- 类型:Object +- 默认值:{} +- 作用:隐藏列 + 格式为:`columnhidden[列数]: 0`, + + `key`指定列数即可,`value`总是为`0` +- 示例: + ```js + "columnhidden": { + "30": 0, + "31": 0 + } + ``` + +#### config.borderInfo +- 类型:Object +- 默认值:{} +- 作用:单元格的边框信息,示例: + ```js + "borderInfo": [{ + "rangeType": "cell", + "value": { + "row_index": 3, + "col_index": 3, + "l": { + "style": 10, + "color": "rgb(255, 0, 0)" + }, + "r": { + "style": 10, + "color": "rgb(255, 0, 0)" + }, + "t": { + "style": 10, + "color": "rgb(255, 0, 0)" + }, + "b": { + "style": 10, + "color": "rgb(255, 0, 0)" + } + } + }, + { + "rangeType": "range", + "borderType": "border-all", + "style": "3", + "color": "#0000ff", + "range": [{ + "row": [7, 8], + "column": [2, 3] + }] + }, { + "rangeType": "range", + "borderType": "border-inside", + "style": "3", + "color": "#0000ff", + "range": [{ + "row": [7, 8], + "column": [8, 9] + }] + }] + ``` +范围类型分单个单元格和选区两种情况 +1. 选区 `rangeType: "range"` + + + 边框类型 `borderType:"border-left" | "border-right" | "border-top" | "border-bottom" | "border-all" | "border-outside" | "border-inside" | "border-horizontal" | "border-vertical" | "border-none"`, + + 边框粗细 `style: 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` + + 边框颜色 `color: 16进制颜色值` + + 选区范围 `range: 行列信息数组` + +2. 单个单元格 `rangeType:"cell"` + + 单元格的行数和列数索引 `value.row_index: 数字,value.col_index: 数字` + + 四个边框对象 `value.l:左边框,value.r:右边框,value.t:上边框,value.b:下边框` + + 边框粗细 `value.l.style: 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` + + 边框颜色 `value.l.color: 16进制颜色值` + +- 示例 + + ```js + { + "rangeType": "range", + "borderType": "border-all", + "style": "3", + "color": "#0000ff", + "range": [{ + "row": [7, 8], + "column": [2, 3] + }] + } + ``` + 表示设置范围为`{"row": [7, 8],"column": [2, 3]}`的选区,类型为所有边框,边框粗细为`Dotted`,颜色为`"#0000ff"` + + + ```js + { + "rangeType": "cell", + "value": { + "row_index": 3, + "col_index": 3, + "l": { + "style": 10, + "color": "rgb(255, 0, 0)" + }, + "r": { + "style": 10, + "color": "rgb(255, 0, 0)" + }, + "t": { + "style": 10, + "color": "rgb(255, 0, 0)" + }, + "b": { + "style": 10, + "color": "rgb(255, 0, 0)" + } + } + } + ``` + 表示设置单元格`"D4"`,上边框/下边框/左边框/右边框都是边框粗细为`"MediumDashDot"`,颜色为`"rgb(255, 0, 0)"` + +------------ +### celldata +- 类型:Array +- 默认值:[] +- 作用: 原始单元格数据集,是一个包含`{r:0,c:0,v:{m:"value",v:"value",ct: {fa: "General", t: "g"}}}`格式单元格信息的一维数组,只在初始化的时候使用,使用celldata初始化完表格后,数据转换为luckysheetfile中的同级字段data,如`luckysheetfile[0].data`,后续操作表格的数据更新,会更新到这个data字段中,celldata不再使用。 +- 示例: + ```js + [{ + "r": 0, + "c": 0, + "v": { + ct: {fa: "General", t: "g"}, + m:"value1", + v:"value1" + } + }, { + "r": 0, + "c": 1, + "v": { + ct: {fa: "General", t: "g"}, + m:"value2", + v:"value2" + } + }] + ``` + +------------ +### luckysheet_select_save +- 类型:Array +- 默认值:[] +- 作用: 选中的区域,支持多选,是一个包含多个选区对象的一维数组,示例: +```js +[ + { + "left": 0, + "width": 97, + "top": 0, + "height": 20, + "left_move": 0, + "width_move": 97, + "top_move": 0, + "height_move": 41, + "row": [ 0, 1 ], + "column": [ 0, 0 ], + "row_focus": 0, + "column_focus": 0 + }, + { + "left": 98, + "width": 73, + "top": 63, + "height": 20, + "left_move": 98, + "width_move": 189, + "top_move": 63, + "height_move": 41, + "row": [ 3, 4 ], + "column": [ 1, 2 ], + "row_focus": 3, + "column_focus": 1 + }, + { + "left": 288, + "width": 128, + "top": 21, + "height": 20, + "left_move": 288, + "width_move": 128, + "top_move": 21, + "height_move": 62, + "row": [ 1, 3 ], + "column": [ 3, 3 ], + "row_focus": 1, + "column_focus": 3 + } +] +``` + +------------ +### luckysheet_conditionformat_save +- 类型:Array +- 默认值:[] +- 作用: 条件格式配置信息,包含多个条件格式配置对象的一维数组, + +type: "default": 突出显示单元格规则和项目选区规则, + +"dataBar":数据条, + +"icons":图标集, + +"colorGradation": 色阶 + +示例: +```js +[ + { + "type": "default", + "cellrange": [ + { + "row": [ 2, 7 ], + "column": [ 2, 2 ] + } + ], + "format": { + "textColor": "#000000", + "cellColor": "#ff0000" + }, + "conditionName": "betweenness", + "conditionRange": [ + { + "row": [ 4, 4 ], + "column": [ 2, 2 ] + }, + { + "row": [ 6, 6 ], + "column": [ 2, 2 ] + } + ], + "conditionValue": [ 2, 4 + ] + }, + { + "type": "dataBar", + "cellrange": [ + { + "row": [ 10, 15 ], + "column": [ 10, 11 ] + } + ], + "format": [ + "#6aa84f", + "#ffffff" + ] + }, + { + "type": "icons", + "cellrange": [ + { + "row": [ 19, 23 ], + "column": [ 2, 2 ] + } + ], + "format": { + "len": "3", + "leftMin": "0", + "top": "0" + } + }, + { + "type": "colorGradation", + "cellrange": [ + { + "left": 422, + "width": 100, + "top": 210, + "height": 20, + "left_move": 422, + "width_move": 100, + "top_move": 210, + "height_move": 125, + "row": [ 10, 15 ], + "column": [ 6, 6 ], + "row_focus": 10, + "column_focus": 6 + } + ], + "format": [ + "rgb(99, 190, 123)", + "rgb(255, 235, 132)", + "rgb(248, 105, 107)" + ] + } +] +``` + +------------ +### calcChain +- 类型:Array +- 默认值:[] +- 作用: 公式链,用于公式所链接的单元格改变后,所有引用此单元格的公式都会联动刷新,示例: +```js +[{ + "r": 6, + "c": 3, + "index": 1, + "func": [true, 23.75, "=AVERAGE(D3:D6)"], + "color": "w", + "parent": null, + "chidren": {}, + "times": 0 +}, { + "r": 7, + "c": 3, + "index": 1, + "func": [true, 30, "=MAX(D3:D6)"], + "color": "w", + "parent": null, + "chidren": {}, + "times": 0 +}] +``` + +------------ +### isPivotTable +- 类型:Boolean +- 默认值:false +- 作用: 是否数据透视表 + +------------ +### pivotTable +- 类型:Object +- 默认值:{} +- 作用: 数据透视表设置,示例: +```js +{ + "pivot_select_save": { + "left": 0, + "width": 73, + "top": 0, + "height": 19, + "left_move": 0, + "width_move": 369, + "top_move": 0, + "height_move": 259, + "row": [0, 12], + "column": [0, 4], + "row_focus": 0, + "column_focus": 0 + }, + "pivotDataSheetIndex": 6, //The sheet index where the source data is located + "column": [{ + "index": 3, + "name": "subject", + "fullname": "subject" + }], + "row": [{ + "index": 1, + "name": "student", + "fullname": "student" + }], + "filter": [], + "values": [{ + "index": 4, + "name": "score", + "fullname": "count:score", + "sumtype": "COUNTA", + "nameindex": 0 + }], + "showType": "column", + "pivotDatas": [ + ["count:score", "science", "mathematics", "foreign language", "English", "total"], + ["Alex", 1, 1, 1, 1, 4], + ["Joy", 1, 1, 1, 1, 4], + ["Tim", 1, 1, 1, 1, 4], + ["total", 3, 3, 3, 3, 12] + ], + "drawPivotTable": false, + "pivotTableBoundary": [5, 6] +} +``` + +------------ +### filter_select +- 类型:Object +- 默认值:{} +- 作用: 筛选范围,一个选区,一个sheet只有一个筛选范围,类似`luckysheet_select_save`示例: +```js +{ + "left": 74, + "width": 73, + "top": 40, + "height": 19, + "left_move": 74, + "width_move": 221, + "top_move": 40, + "height_move": 99, + "row": [ + 2, + 6 + ], + "column": [ + 1, + 3 + ], + "row_focus": 2, + "column_focus": 1 +} +``` + +------------ +### filter +- 类型:Object +- 默认值:{} +- 作用: 筛选的具体设置,示例: +```js +{ + "0": { + "caljs": {}, + "rowhidden": { + "3": 0, + "4": 0 + }, + "optionstate": true, + "str": 2, + "edr": 6, + "cindex": 1, + "stc": 1, + "edc": 3 + }, + "1": { + "caljs": {}, + "rowhidden": { + "6": 0 + }, + "optionstate": true, + "str": 2, + "edr": 6, + "cindex": 2, + "stc": 1, + "edc": 3 + } +} +``` + +------------ +### luckysheet_alternateformat_save +- 类型:Array +- 默认值:[] +- 作用: 交替颜色配置,示例: +```js +[{ + "cellrange": { + "row": [1, 6], + "column": [1, 5] + }, + "format": { + "head": { + "fc": "#000", + "bc": "#5ed593" + }, + "one": { + "fc": "#000", + "bc": "#ffffff" + }, + "two": { + "fc": "#000", + "bc": "#e5fbee" + }, + "foot": { + "fc": "#000", + "bc": "#a5efcc" + } + }, + "hasRowHeader": false, + "hasRowFooter": false +}, { + "cellrange": { + "row": [1, 6], + "column": [8, 12] + }, + "format": { + "head": { + "fc": "#000", + "bc": "#5599fc" + }, + "one": { + "fc": "#000", + "bc": "#ffffff" + }, + "two": { + "fc": "#000", + "bc": "#ecf2fe" + }, + "foot": { + "fc": "#000", + "bc": "#afcbfa" + } + }, + "hasRowHeader": false, + "hasRowFooter": false +}] +``` + +------------ +### luckysheet_alternateformat_save_modelCustom +- 类型:Array +- 默认值:[] +- 作用:自定义交替颜色,包含多个自定义交替颜色的配置,示例: +```js +[{ + "head": { + "fc": "#6aa84f", + "bc": "#ffffff" + }, + "one": { + "fc": "#000", + "bc": "#ffffff" + }, + "two": { + "fc": "#000", + "bc": "#e5fbee" + }, + "foot": { + "fc": "#000", + "bc": "#a5efcc" + } +}] +``` + +------------ +### chart +- 类型:Array +- 默认值:[] +- 作用: 图表配置(开发中) + +------------ +### visibledatarow +- 类型:Number +- 默认值:[] +- 作用: 所有行的位置信息,递增的行位置数据,初始化无需设置 + +------------ +### visibledatacolumn +- 类型:Number +- 默认值:[] +- 作用: 所有列的位置信息,递增的列位置数据,初始化无需设置 + +------------ +### ch_width +- 类型:Number +- 默认值:2322 +- 作用: 整个工作表区域的宽度(包含边界的灰色区域),初始化无需设置 + +------------ +### rh_height +- 类型:Number +- 默认值:2322 +- 作用: 整个工作表区域的高度(包含边界的灰色区域),初始化无需设置 + +------------ + + + diff --git a/src/config.js b/src/config.js index ca9950f..1a0f2e8 100644 --- a/src/config.js +++ b/src/config.js @@ -47,7 +47,6 @@ export default { "pageUrl":"", }, editMode: false, //是否为编辑模式 - chartConfigChange: null,//图表插件中图表更新触发的自定义方法 beforeCreateDom: null,//表格创建之前的方法 fireMousedown: null, //单元格数据下钻 lang: 'en', //language diff --git a/src/controllers/handler.js b/src/controllers/handler.js index 718fbc3..b2b0ae0 100644 --- a/src/controllers/handler.js +++ b/src/controllers/handler.js @@ -4081,7 +4081,7 @@ export default function luckysheetHandler() { let totalPage = luckysheetConfigsetting.pageInfo.totalPage; let pageUrl = luckysheetConfigsetting.pageInfo.pageUrl; - // rptapp + method.addDataAjax({ "queryExps": queryExps, "reportId": reportId, diff --git a/src/controllers/luckysheetConfigsetting.js b/src/controllers/luckysheetConfigsetting.js index 9a60203..757f831 100644 --- a/src/controllers/luckysheetConfigsetting.js +++ b/src/controllers/luckysheetConfigsetting.js @@ -25,7 +25,6 @@ const luckysheetConfigsetting = { editMode: false, - chartConfigChange: null, beforeCreateDom: null, fireMousedown: null, plugins:[], diff --git a/src/core.js b/src/core.js index 694b263..56c47ba 100644 --- a/src/core.js +++ b/src/core.js @@ -82,7 +82,6 @@ luckysheet.create = function (setting) { luckysheetConfigsetting.pageInfo = extendsetting.pageInfo; luckysheetConfigsetting.editMode = extendsetting.editMode; - luckysheetConfigsetting.chartConfigChange = extendsetting.chartConfigChange; luckysheetConfigsetting.beforeCreateDom = extendsetting.beforeCreateDom; luckysheetConfigsetting.fireMousedown = extendsetting.fireMousedown;