Browse Source

docs(docs): docs api config

api,config change
master
lrz 5 years ago
parent
commit
2b6f8ceece
  1. 24
      README-zh.md
  2. 24
      README.md
  3. 8
      docs/.vuepress/config.js
  4. 0
      docs/guide/cell.md
  5. 37
      docs/guide/config.md
  6. 40
      docs/zh/guide/README.md
  7. 1460
      docs/zh/guide/api.md
  8. 553
      docs/zh/guide/cell.md
  9. 248
      docs/zh/guide/config.md
  10. 760
      docs/zh/guide/data.md
  11. 10
      docs/zh/guide/operate.md
  12. 764
      docs/zh/guide/sheet.md
  13. 1
      src/config.js
  14. 2
      src/controllers/handler.js
  15. 1
      src/controllers/luckysheetConfigsetting.js
  16. 1
      src/core.js

24
README-zh.md

@ -2,7 +2,7 @@
简体中文 | [English](./README.md) 简体中文 | [English](./README.md)
## 介绍 ## 介绍
Luckysheet ,一款纯前端类似excel的在线表格,功能强大、配置简单、完全开源。 🚀Luckysheet ,一款纯前端类似excel的在线表格,功能强大、配置简单、完全开源。
## 文档 ## 文档
[在线demo](https://mengshukeji.github.io/LuckysheetDemo/) [在线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` ) + **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作为间隔。支持等差数列,等比数列,日期,周,天,月,年,中文数字填充) + **选取下拉填充** (对于一个1,2,3,4,5的序列,将会按照间隔为1进行下拉填充,而对2,4,6,8将会以2作为间隔。支持等差数列,等比数列,日期,周,天,月,年,中文数字填充)
+ **自动填充选项** (下拉填充后,会出现填充选项的菜单,支持选择复制,序列,仅格式,只填充格式,天,月,年的选择) + **自动填充选项** (下拉填充后,会出现填充选项的菜单,支持选择复制,序列,仅格式,只填充格式,天,月,年的选择)
@ -31,19 +31,19 @@ Luckysheet ,一款纯前端类似excel的在线表格,功能强大、配置
+ **定位** (可以根据单元格的数据类型进行自动定位并选中,选中后可以批量进行格式等操作) + **定位** (可以根据单元格的数据类型进行自动定位并选中,选中后可以批量进行格式等操作)
+ **合并单元格** + **合并单元格**
### 行和列操作 ### 🖱️行和列操作
+ **隐藏,插入,删除行或列** + **隐藏,插入,删除行或列**
+ **冻结行或列** (支持冻结首行和首列,冻结到选区,冻结调节杆可以进行拖动操作) + **冻结行或列** (支持冻结首行和首列,冻结到选区,冻结调节杆可以进行拖动操作)
+ **文本分列** (可以把文本根据不同符号进行拆分,和excel的分列功能类似) + **文本分列** (可以把文本根据不同符号进行拆分,和excel的分列功能类似)
### 操作体验 ### 🔨操作体验
+ **撤销/重做** + **撤销/重做**
+ **复制/粘贴/剪切操作** (支持Luckysheet到excel和excel到Luckysheet带格式的互相拷贝) + **复制/粘贴/剪切操作** (支持Luckysheet到excel和excel到Luckysheet带格式的互相拷贝)
+ **快捷键支持** (快捷键操作保持与excel一致,如果有不同或者缺失请反馈给我们) + **快捷键支持** (快捷键操作保持与excel一致,如果有不同或者缺失请反馈给我们)
+ **格式刷** (与google sheet类似) + **格式刷** (与google sheet类似)
+ **任意选区拖拽** (选择单元格,输入公式,插入图表,会与选区相关,可以通过任意拖动和放大缩小选区来改变与之关联的参数) + **任意选区拖拽** (选择单元格,输入公式,插入图表,会与选区相关,可以通过任意拖动和放大缩小选区来改变与之关联的参数)
### 公式和函数 ### ⚙️公式和函数
+ **内置公式** + **内置公式**
+ 数学 (SUMIFS, AVERAGEIFS, SUMIF, SUM, etc.) + 数学 (SUMIFS, AVERAGEIFS, SUMIF, SUM, etc.)
+ 文本 (CONCATENATE, REGEXMATCH, MID) + 文本 (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) + **远程公式** (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. 可以任意加入自己的公式哦) + **自定义公式** (根据身份证识别年龄,性别,生日,省份,城市等. AGE_BY_IDCARD, SEX_BY_IDCARD, BIRTHDAY_BY_IDCARD, PROVINCE_BY_IDCARD, CITY_BY_IDCARD, etc. 可以任意加入自己的公式哦)
### 表格操作 ### 📐表格操作
+ **筛选** (支持颜色、数字、字符、日期的筛选) + **筛选** (支持颜色、数字、字符、日期的筛选)
+ **排序** (同时加入多个字段进行排序) + **排序** (同时加入多个字段进行排序)
### 数据透视表 ### 📈数据透视表
+ **字段拖拽** (操作方式与excel类似,拖动字段到行、列、数值、筛选等4个区域) + **字段拖拽** (操作方式与excel类似,拖动字段到行、列、数值、筛选等4个区域)
+ **聚合方式** (支持汇总、计数、去重计数、平均、最大、最小、中位数、协方差、标准差、方差等计算) + **聚合方式** (支持汇总、计数、去重计数、平均、最大、最小、中位数、协方差、标准差、方差等计算)
+ **筛选数据** (可对字段进行筛选后再进行汇总) + **筛选数据** (可对字段进行筛选后再进行汇总)
+ **数据透视表下钻** (双击数据透视表中的数据,可以下钻查看到明细,操作方式与excel一致) + **数据透视表下钻** (双击数据透视表中的数据,可以下钻查看到明细,操作方式与excel一致)
+ **根据数据透视表新建图表** (数据透视表产生的数据也可以进行图表的制作) + **根据数据透视表新建图表** (数据透视表产生的数据也可以进行图表的制作)
### 图表 ### 📊图表
+ **支持的图表类型** (目前折线图、柱状图、面积图、条形图、饼图可以使用,散点图、雷达图、仪表盘、漏斗图正在接入,其他图表正在陆续开发中,请大家给予建议) + **支持的图表类型** (目前折线图、柱状图、面积图、条形图、饼图可以使用,散点图、雷达图、仪表盘、漏斗图正在接入,其他图表正在陆续开发中,请大家给予建议)
+ **关于图表插件** (图表使用了一个中间插件[ChartMix](https://github.com/mengshukeji/chartMix)(MIT协议): 目前支持ECharts,正在逐步接入Highcharts、阿里G2、amCharts、googleChart、chart.js) + **关于图表插件** (图表使用了一个中间插件[ChartMix](https://github.com/mengshukeji/chartMix)(MIT协议): 目前支持ECharts,正在逐步接入Highcharts、阿里G2、amCharts、googleChart、chart.js)
+ **Sparklines小图** (以公式的形式进行设置和展示,目前支持:折线图、面积图、柱状图、累积图、条形图、离散图、三态图、饼图、箱线图等) + **Sparklines小图** (以公式的形式进行设置和展示,目前支持:折线图、面积图、柱状图、累积图、条形图、离散图、三态图、饼图、箱线图等)
### 分享及写作 ### ✍️分享及写作
+ **评论** (评论的删除、添加、修改、隐藏) + **评论** (评论的删除、添加、修改、隐藏)
+ **共享编辑** (支持多用户共享编辑,内置API) + **共享编辑** (支持多用户共享编辑,内置API)
### Luckysheet专有 ### Luckysheet专有
+ **矩阵计算** (通过右键菜单进行支持:对选区内的数据进行转置、旋转、数值计算) + **矩阵计算** (通过右键菜单进行支持:对选区内的数据进行转置、旋转、数值计算)
+ **截图** (把选区的内容进行截图展示) + **截图** (把选区的内容进行截图展示)
+ **复制到其他格式** (右键菜单的"复制为", 支持复制为json、array、对角线数据、去重等) + **复制到其他格式** (右键菜单的"复制为", 支持复制为json、array、对角线数据、去重等)
### 未来开发计划 ### ⏱️未来开发计划
+ **插入图表和svg形状** (支持JPG,PNG,SVG,Pen tool的插入、修改和删除,并且随表格的变动而产生变化) + **插入图表和svg形状** (支持JPG,PNG,SVG,Pen tool的插入、修改和删除,并且随表格的变动而产生变化)
+ **数据验证(表单功能)** (支持Checkbox, drop-down list, datePicker) + **数据验证(表单功能)** (支持Checkbox, drop-down list, datePicker)
+ **打印及设置** (像excel一样进行打印设置,并导出为图片或者PDF) + **打印及设置** (像excel一样进行打印设置,并导出为图片或者PDF)

24
README.md

@ -4,7 +4,7 @@
English| [简体中文](./README-zh.md) English| [简体中文](./README-zh.md)
## Introduction ## 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 ## Documentation
[Online demo](https://mengshukeji.github.io/LuckysheetDemo/) [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 ## Features
### Formatting ### 🛠️Formatting
+ **Styling** (Change font style, size, color, or apply effects) + **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) + **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** + **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** + **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` ) + **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) + **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) + **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) + **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) + **Location** (Cells can be selected according to the data type)
+ **Merge cells** + **Merge cells**
### Row & columns ### 🖱️Row & columns
+ **Hide, Insert, Delete rows and columns** + **Hide, Insert, Delete rows and columns**
+ **Frozen rows and columns** (First row, first column, Frozen to selection, freeze adjustment lever can be dragged) + **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) + **Split text** (Split text into different columns with the Convert Text to Columns Wizard)
### Operation ### 🔨Operation
+ **Undo/Redo** + **Undo/Redo**
+ **Copy/Paste/Cut** (Copy from excel to Luckysheet with format, vice versa) + **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) + **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) + **Format Painter** (Similar to google sheet)
+ **Selection by drag and dropping** (Change the parameters of formula and chart through selection) + **Selection by drag and dropping** (Change the parameters of formula and chart through selection)
### Formulas & functions ### ⚙️Formulas & functions
+ **Built-in formulas** + **Built-in formulas**
+ Math (SUMIFS, AVERAGEIFS, SUMIF, SUM, etc.) + Math (SUMIFS, AVERAGEIFS, SUMIF, SUM, etc.)
+ Text (CONCATENATE, REGEXMATCH, MID) + 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) + **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) + **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) + **Filters** (Support color , numerical, date, text filtering)
+ **Sort** (Sort multiple fields simultaneously) + **Sort** (Sort multiple fields simultaneously)
### Pivot table ### 📈Pivot table
+ **Arrange fields** (Add fileds to rows, columns, values, area, it is similar to excel) + **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.) + **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 ) + **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 ) + **Drill down** (Double click pivot table cell to drill down for detail data )
+ **Create a PivotChart** (Pivot table can create a chart ) + **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.) + **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) + **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.) + **Sparklines** (Support by formula : Line, Pie, Box, Pie etc.)
### Share ### ✍️Share
+ **Comments** (Add, delete, update) + **Comments** (Add, delete, update)
+ **Collaborate** (Simultaneous editing by multiple users) + **Collaborate** (Simultaneous editing by multiple users)
### Luckysheet ### Luckysheet
+ **Matrix operation** (Operate selection through the right-click menu: transpose, rotate, numerical calculation) + **Matrix operation** (Operate selection through the right-click menu: transpose, rotate, numerical calculation)
+ **Screenshot** (Take a screenshot with selection) + **Screenshot** (Take a screenshot with selection)
+ **Copy to** (In the right-click menu, copy selection to json, array etc.) + **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) + **Insert picture and Shapes** (JPG,PNG,SVG,Pen tool and so on)
+ **Data validation** (Checkbox, drop-down list, datePicker) + **Data validation** (Checkbox, drop-down list, datePicker)
+ **Print** (Like excel print option, save to PDF) + **Print** (Like excel print option, save to PDF)

8
docs/.vuepress/config.js

@ -49,10 +49,10 @@ module.exports = {
'/guide/': [ '/guide/': [
'', '',
'config', 'config',
'api',
'data', 'data',
'cell',
'operate', 'operate',
'format', 'api',
'FAQ' 'FAQ'
], ],
}, },
@ -84,10 +84,10 @@ module.exports = {
'/zh/guide/': [ '/zh/guide/': [
'', '',
'config', 'config',
'api',
'data', 'data',
'cell',
'operate', 'operate',
'format', 'api',
'FAQ' 'FAQ'
], ],
}, },

0
docs/guide/format.md → docs/guide/cell.md

37
docs/guide/config.md

@ -17,6 +17,12 @@
- Default: "en" - Default: "en"
- Usage: Internationalization settings, allowing to set the language of the table, temporarily supporting Chinese ("zh") and English ("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 ## column
- Type: Number - Type: Number
@ -84,7 +90,6 @@
- Usage: Whether to display the bottom table name area - Usage: Whether to display the bottom table name area
------------ ------------
## showstatisticBar ## showstatisticBar
- Type: Boolean - Type: Boolean
- Default: true - Default: true
@ -108,24 +113,6 @@
- Default: true - Default: true
- Usage: Allow add column - 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 ## userInfo
- Type: String - Type: String
@ -150,12 +137,6 @@
- Default: window.devicePixelRatio - Default: window.devicePixelRatio
- Usage: Device Pixel Ratio, the larger the ratio, the higher the table resolution - Usage: Device Pixel Ratio, the larger the ratio, the higher the table resolution
------------
## gridKey
- Type: String
- Default: ""
- Usage: Form unique identifier
------------ ------------
## allowUpdate ## allowUpdate
- Type: Boolean - Type: Boolean
@ -204,12 +185,6 @@
- Default: false - Default: false
- Usage: Allow next page to load - Usage: Allow next page to load
------------
## chartConfigChange
- Type: Function
- Default: null
- Usage: Custom method for triggering chart update in chart plugin
------------ ------------
## beforeCreateDom ## beforeCreateDom
- Type: Function - Type: Function

40
docs/zh/guide/README.md

@ -155,25 +155,27 @@ luckysheetfile = [ {sheet1设置}, {sheet2设置}, {sheet3设置} ]`
![excel sheet](https://minio.cnbabylon.com/public/luckysheet/excel.png) ![excel sheet](https://minio.cnbabylon.com/public/luckysheet/excel.png)
文件中的一个sheet的示例如下: 文件中的一个sheet的数据`luckysheetfile[0]`的结构如下:
```javascript ```json
luckysheetfile[0] =
{ {
"name": "Cell", //工作表名称 "name": "Cell", //工作表名称
"color": "", //工作表颜色 "color": "", //工作表颜色
"config": {}, //表格行高、列宽、合并单元格、边框、隐藏行等设置
"index": "0", //工作表索引 "index": "0", //工作表索引
"chart": [], //图表配置
"status": "1", //激活状态 "status": "1", //激活状态
"order": "0", //工作表的顺序 "order": "0", //工作表的顺序
"hide": 0,//是否隐藏 "hide": 0,//是否隐藏
"column": 18, //列数
"row": 36, //行数 "row": 36, //行数
"celldata": [], //原始单元格数据集 "column": 18, //列数
"visibledatarow": [], //所有行的位置 "config": {
"visibledatacolumn": [], //所有列的位置 "merge":{}, //合并单元格
"ch_width": 2322, //工作表区域的宽度 "rowlen":{}, //表格行高
"rh_height": 949, //工作表区域的高度 "columnlen":{}, //表格列宽
"rowhidden":{}, //隐藏行
"columnhidden":{}, //隐藏列
"borderInfo":{}, //边框
},
"celldata": [], //初始化使用的单元格数据
"data": [], //更新和存储使用的单元格数据
"scrollLeft": 0, //左右滚动条位置 "scrollLeft": 0, //左右滚动条位置
"scrollTop": 315, //上下滚动条位置 "scrollTop": 315, //上下滚动条位置
"luckysheet_select_save": [], //选中的区域 "luckysheet_select_save": [], //选中的区域
@ -181,10 +183,17 @@ luckysheetfile[0] =
"calcChain": [],//公式链 "calcChain": [],//公式链
"isPivotTable":false,//是否数据透视表 "isPivotTable":false,//是否数据透视表
"pivotTable":{},//数据透视表设置 "pivotTable":{},//数据透视表设置
"filter_select": null,//筛选范围 "filter_select": {},//筛选范围
"filter": null,//筛选配置 "filter": null,//筛选配置
"luckysheet_alternateformat_save": [], //交替颜色 "luckysheet_alternateformat_save": [], //交替颜色
"luckysheet_alternateformat_save_modelCustom": []//自定义交替颜色 "luckysheet_alternateformat_save_modelCustom": [], //自定义交替颜色
"freezen": {}, //冻结行列
"chart": [], //图表配置
"visibledatarow": [], //所有行的位置
"visibledatacolumn": [], //所有列的位置
"ch_width": 2322, //工作表区域的宽度
"rh_height": 949, //工作表区域的高度
"load": "1", //已加载过此sheet的标识
} }
``` ```
### 查看方式 ### 查看方式
@ -215,8 +224,3 @@ luckysheetfile[0] =
| ENTER | 编辑单元格 | | ENTER | 编辑单元格 |
| TAB | 向右移动单元格选框 | | TAB | 向右移动单元格选框 |
| DELETE | 清除单元格数据 | | DELETE | 清除单元格数据 |
## 警告
::: danger
新的API正在整理,可能随时变动,请谨慎使用!
:::

1460
docs/zh/guide/api.md

File diff suppressed because it is too large

553
docs/zh/guide/format.md → docs/zh/guide/cell.md

@ -1,339 +1,10 @@
# 单元格格式 # 单元格
## 单元格介绍 ## 基本单元格
### 基本单元格格式
单元格是Luckysheet中最基本的单位,每个单元格都会保存为一个对象,一个工作表的数据则会保存为一个由单元格对象组成的二维数组,并存入当前工作表的 `luckysheetfile[i].data`中。 单元格是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"
}
]
]
```
:::
## 单元格属性表
<table> <table>
<tr> <tr>
@ -347,7 +18,10 @@ TODO
<td>ct</td> <td>ct</td>
<td>celltype</td> <td>celltype</td>
<td>单元格值格式:文本、时间等</td> <td>单元格值格式:文本、时间等</td>
<td><a href="#cellStyle">单元格格式</a></td> <td><code>{
"fa": "General",
"t": "g"
}</code><a href="#cellStyle">单元格值格式</a></td>
<td></td> <td></td>
</tr> </tr>
<tr> <tr>
@ -417,7 +91,7 @@ TODO
<td>mc</td> <td>mc</td>
<td>mergecell</td> <td>mergecell</td>
<td>合并单元格</td> <td>合并单元格</td>
<td>{ rs: 10, cs:5 } 表示从此cell开始到10行5列的cell进行合并。</td> <td>主单元格{ r:0, c:0, rs: 2, cs:2 },辅单元格{ r:0, c:0 },<a href="#mergeCell">合并单元格案例</a></td>
<td>Merge</td> <td>Merge</td>
</tr> </tr>
<tr> <tr>
@ -475,13 +149,193 @@ TODO
</tr> </tr>
</table> </table>
一个规范的单元格对象如下:
```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"
}
```
以下为3个单元格存储: 日期 `2020-10-23`
```json
{
"ct": {
"fa": "yyyy-MM-dd",
"t": "d"
},
"v": 44127,
"m": "2020-10-23"
}
```
## 合并单元格<div id='mergeCell'></div>
设置一个合并单元格,需要处理两个地方,一是单元格对象中设置`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 ```json
[ [
[
{ {
"r": 10, "m": "borderCell",
"c": 11, "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个单元格信息,第三个单元格即为简写格式:
```json
[
{
"r": 0,
"c": 0,
"v": { "v": {
"f": "=MAX(A7:A9)", "f": "=MAX(A7:A9)",
"ct": { "ct": {
@ -496,24 +350,26 @@ TODO
"r": 0, "r": 0,
"c": 1, "c": 1,
"v": { "v": {
"v": 12,
"f": "=SUM(A2)", "f": "=SUM(A2)",
"bg": "#fff000" "bg": "#fff000",
"v": 12,
"m": "12"
} }
}, },
{ {
"r": 10, "r": 0,
"c": 11, "c": 2,
"v": "2" "v": "value 2"
} }
] ]
``` ```
> 了解 [celldata的使用](/zh/guide/data.html#celldata)
## <div id='cellStyle'>单元格格式</div> ## 单元格值格式<div id='cellStyle'></div>
参考[Aspose.Cells](https://docs.aspose.com/display/cellsnet/List+of+Supported+Number+Formats#ListofSupportedNumberFormats-Aspose.Cells) 值格式即为单元格对象中 `ct` 的设置,
格式设置为: 如下为自动格式的单元格
```json ```json
{ {
@ -531,7 +387,9 @@ TODO
|fa|Format格式的定义串| 如"General"| |fa|Format格式的定义串| 如"General"|
|t|Type类型|如"g"| |t|Type类型|如"g"|
可选择的设置如下:
### 可选择的设置如下
| 格式 | ct.fa | ct.t | m 值示例 |备注 | | 格式 | ct.fa | ct.t | m 值示例 |备注 |
|----------|----------|-------------------------|------------------------- |------------------------- | |----------|----------|-------------------------|------------------------- |------------------------- |
| 自动 | General | g/n | Luckysheet |自动格式,也是默认的格式;单元格内容为数字时,`m`的值为`'n'`| | 自动 | General | g/n | Luckysheet |自动格式,也是默认的格式;单元格内容为数字时,`m`的值为`'n'`|
@ -739,5 +597,4 @@ TODO
| 货币:智利比索 | "$" 0.00 | n | $ 123.00 || | 货币:智利比索 | "$" 0.00 | n | $ 123.00 ||
| 货币:中非金融合作法郎 | "FCFA" 0.00 | n | FCFA 123.00 || | 货币:中非金融合作法郎 | "FCFA" 0.00 | n | FCFA 123.00 ||
以上配置参考了[Aspose.Cells](https://docs.aspose.com/display/cellsnet/List+of+Supported+Number+Formats#ListofSupportedNumberFormats-Aspose.Cells)
注意: 导入/导出只用考虑用户看到的数据样式,例如excel中处理日期格式的方式为把日期统一转换为数字:42736 代表 2017-1-1

248
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 - 类型:String
- 默认值:"luckysheet" - 默认值:"luckysheet"
- 作用:容器的ID - 作用:容器的ID
------------ ------------
## title ### title
- 类型:String - 类型:String
- 默认值:"Luckysheet Demo" - 默认值:"Luckysheet Demo"
- 作用:表格的名称 - 作用:表格的名称
------------ ------------
## lang ### lang
- 类型:String - 类型:String
- 默认值:"en" - 默认值:"en"
- 作用:国际化设置,允许设置表格的语言,暂时支持中文("zh")和英文("en") - 作用:国际化设置,允许设置表格的语言,支持中文("zh")和英文("en")
------------ ------------
## column ### gridKey
- 类型:Number - 类型:String
- 默认值:60 - 默认值:""
- 作用:空表格默认的列数量 - 作用:表格唯一标识符
------------ ------------
## row ### loadUrl
- 类型:Number - 类型:String
- 默认值:84 - 默认值:""
- 作用:空表格默认的行数据量 - 作用:配置`loadUrl`的地址,Luckysheet会通过ajax请求整个表格数据,默认载入status为1的sheet数据中的所有`celldata`,其余的sheet载入除`celldata`字段外的所有字段
------------ ------------
## data ### loadSheetUrl
- 类型:String
- 默认值:""
- 作用:配置`loadSheetUrl`的地址,参数为`gridKey`(表格主键) 和 `index`(sheet主键合集,格式为`[1,2,3]`),返回的数据为sheet的`celldata`字段数据集合
------------
### allowUpdate
- 类型:Boolean
- 默认值:false
- 作用:是否允许操作表格后的后台更新,与`updateUrl`配合使用
------------
### updateUrl
- 类型:String
- 默认值:""
- 作用:操作表格后的后台更新地址,在`allowUpdate`为`true`时才会有效
------------
### updateImageUrl
- 类型:String
- 默认值:""
- 作用:缩略图的更新地址
------------
### data
- 类型:Array - 类型: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 }] - 默认值:[{ "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 - 类型:Array
- 默认值:[] - 默认值:[]
- 作用:配置插件,支持 图表:"chart" - 作用:配置插件,支持图表:"chart"
------------ ------------
## fullscreenmode ### column
- 类型:Boolean - 类型:Number
- 默认值:true - 默认值:60
- 作用:是否全屏模式。非全屏模式下,标记框不会强制选中 - 作用:空表格默认的列数量
------------
### row
- 类型:Number
- 默认值:84
- 作用:空表格默认的行数据量
------------ ------------
## autoFormatw ### autoFormatw
- 类型:Boolean - 类型:Boolean
- 默认值:false - 默认值:false
- 作用:自动格式化超过4位数的数字为‘亿万格式’,例:true or "true" or "TRUE" - 作用:自动格式化超过4位数的数字为‘亿万格式’,例:true or "true" or "TRUE"
------------ ------------
## accuracy ### accuracy
- 类型:Number - 类型:Number
- 默认值:undefined - 默认值:undefined
- 作用:设置精度,小数点后的位数。传参数为数字或数字字符串,例: "0" 或 0 - 作用:设置精度,小数点后的位数。传参数为数字或数字字符串,例: "0" 或 0
------------ ------------
## allowCopy ### allowCopy
- 类型:Boolean - 类型:Boolean
- 默认值:true - 默认值:true
- 作用:是否允许拷贝 - 作用:是否允许拷贝
------------ ------------
## showtoolbar ### showtoolbar
- 类型:Boolean - 类型:Boolean
- 默认值:true - 默认值:true
- 作用:是否第二列显示工具栏 - 作用:是否第二列显示工具栏
------------ ------------
## showinfobar ### showinfobar
- 类型:Boolean - 类型:Boolean
- 默认值:true - 默认值:true
- 作用:是否显示顶部名称栏 - 作用:是否显示顶部名称栏
------------ ------------
## showsheetbar ### showsheetbar
- 类型:Boolean - 类型:Boolean
- 默认值:true - 默认值:true
- 作用:是否显示底部表格名称区域 - 作用:是否显示底部表格名称区域
------------ ------------
### showstatisticBar
## showstatisticBar
- 类型:Boolean - 类型:Boolean
- 默认值:true - 默认值:true
- 作用:是否显示底部计数栏 - 作用:是否显示底部计数栏
------------ ------------
## allowEdit ### allowEdit
- 类型:Boolean - 类型:Boolean
- 默认值:true - 默认值:true
- 作用:是否允许前台编辑 - 作用:是否允许前台编辑
------------ ------------
## enableAddRow ### enableAddRow
- 类型:Boolean - 类型:Boolean
- 默认值:true - 默认值:true
- 作用:允许增加行 - 作用:允许增加行
------------ ------------
## enableAddCol ### enableAddCol
- 类型:Boolean - 类型:Boolean
- 默认值:true - 默认值:true
- 作用:允许增加列 - 作用:允许增加列
------------ ------------
## pointEdit ### userInfo
- 类型:Boolean
- 默认值:false
- 作用:是否是编辑器插入表格模式
------------
## pointEditUpdate
- 类型:Function
- 默认值:null
- 作用:编辑器表格更新函数
------------
## pointEditZoom
- 类型:Number
- 默认值:1
- 作用:编辑器表格编辑时缩放比例
------------
## userInfo
- 类型:String - 类型:String
- 默认值:`'<i style="font-size:16px;color:#ff6a00;" class="fa fa-taxi" aria-hidden="true"></i> rabbit'` - 默认值:`'<i style="font-size:16px;color:#ff6a00;" class="fa fa-taxi" aria-hidden="true"></i> rabbit'`
- 作用:右上角的用户信息展示样式 - 作用:右上角的用户信息展示样式
------------ ------------
## userMenuItem ### userMenuItem
- 类型:Array - 类型:Array
- 默认值:`[{url:"www.baidu.com", "icon":'<i class="fa fa-folder" aria-hidden="true"></i>', "name":"我的表格"}, {url:"www.baidu.com", "icon":'<i class="fa fa-sign-out" aria-hidden="true"></i>', "name":"退出登陆"}]` - 默认值:`[{url:"www.baidu.com", "icon":'<i class="fa fa-folder" aria-hidden="true"></i>', "name":"我的表格"}, {url:"www.baidu.com", "icon":'<i class="fa fa-sign-out" aria-hidden="true"></i>', "name":"退出登陆"}]`
- 作用:点击右上角的用户信息弹出的菜单 - 作用:点击右上角的用户信息弹出的菜单
------------ ------------
## myFolderUrl ### myFolderUrl
- 类型:String - 类型:String
- 默认值:"www.baidu.com" - 默认值:"www.baidu.com"
- 作用:左上角<返回按钮的链接 - 作用:左上角<返回按钮的链接
------------ ------------
## devicePixelRatio ### devicePixelRatio
- 类型:Number - 类型:Number
- 默认值:window.devicePixelRatio - 默认值:window.devicePixelRatio
- 作用:设备比例,比例越大表格分辨率越高 - 作用:设备比例,比例越大表格分辨率越高
------------ ------------
## gridKey ### functionButton
- 类型: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
- 类型:String - 类型:String
- 默认值:"" - 默认值:""
- 作用:右上角功能按钮,例如`'<button id="" class="btn btn-primary" style="padding:3px 6px;font-size: 12px;margin-right: 10px;">下载</button> <button id="" class="btn btn-primary btn-danger" style=" padding:3px 6px; font-size: 12px; margin-right: 10px;">分享</button> <button id="luckysheet-share-btn-title" class="btn btn-primary btn-danger" style=" padding:3px 6px; font-size: 12px; margin-right: 10px;">秀数据</button>'` - 作用:右上角功能按钮,例如`'<button id="" class="btn btn-primary" style="padding:3px 6px;font-size: 12px;margin-right: 10px;">下载</button> <button id="" class="btn btn-primary btn-danger" style=" padding:3px 6px; font-size: 12px; margin-right: 10px;">分享</button> <button id="luckysheet-share-btn-title" class="btn btn-primary btn-danger" style=" padding:3px 6px; font-size: 12px; margin-right: 10px;">秀数据</button>'`
------------ ------------
## showConfigWindowResize ### showConfigWindowResize
- 类型:Boolean - 类型:Boolean
- 默认值:true - 默认值:true
- 作用:图表或数据透视表的配置会在右侧弹出,设置弹出后表格是否会自动缩进 - 作用:图表或数据透视表的配置会在右侧弹出,设置弹出后表格是否会自动缩进
------------ ------------
## enablePage ### enablePage
- 类型:Boolean - 类型:Boolean
- 默认值:false - 默认值:false
- 作用:允许加载下一页 - 作用:允许加载下一页
------------ ------------
## chartConfigChange ### fullscreenmode
- 类型:Function - 类型:Boolean
- 默认值:null - 默认值:true
- 作用:图表插件中图表更新触发的自定义方法 - 作用:是否全屏模式。非全屏模式下,标记框不会强制选中
------------ ------------
## beforeCreateDom ### beforeCreateDom
- 类型:Function - 类型:Function
- 默认值:null - 默认值:null
- 作用:表格创建之前自定义方法 - 作用:表格创建之前自定义方法
------------ ------------
## fireMousedown ### fireMousedown
- 类型:Function - 类型:Function
- 默认值:null - 默认值:null
- 作用:单元格数据下钻自定义方法 - 作用:单元格数据下钻自定义方法
------------ ------------
### forceCalculation
- 类型:Boolean
- 默认值:false
- 作用:强制刷新公式。
默认情况下,为提高加载性能,表格初始化的时候,含有公式的单元格会默认直接取得`v`和`m`作为数据结果,而不做实时计算。
如果公式关联到的单元格数据已经变化,或者公式所在的单元格数据结果改变了,则会导致关联单元格应该计算得出的结果和实际显示结果不一致,这是就需要开启公式刷新,保证数据实时计算的准确性。
⚠️提醒,公式较多时会有性能问题,慎用!
------------

760
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`字段外的所有字段。 配置 `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数据 ## 获取sheet数据

10
docs/zh/guide/operate.md

@ -6,7 +6,7 @@
通常,共享编辑(或者叫协同编辑)是需要和账户系统配合来控制权限的,开发者可以根据已有功能,配合自己的账户管理功能自行实现权限控制。 通常,共享编辑(或者叫协同编辑)是需要和账户系统配合来控制权限的,开发者可以根据已有功能,配合自己的账户管理功能自行实现权限控制。
以下为所有的支持传输到后台的操作类型。 以下为所有的支持传输到后台的操作类型,并且以MongoDB做存储示例,讲解如何做前后端交互
## 单元格刷新 ## 单元格刷新
@ -16,7 +16,7 @@
{ {
"t": "v", "t": "v",
"i": 3, "i": 3,
"v": "asdf", "v": "good",
"r": 5, "r": 5,
"c": 7 "c": 7
} }
@ -28,13 +28,13 @@
| ------------ | ------------ | | ------------ | ------------ |
|t|操作类型表示符号| |t|操作类型表示符号|
|i|当前sheet的索引值| |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|单元格的行号| |r|单元格的行号|
|c|单元格的列号| |c|单元格的列号|
- **后台更新** - **后台更新**
单元格更新主要是更新 `luckysheetfile[i].celldata` 参数,该参数是一个数组: 前端维护luckysheetfile[i].data,而单元格更新到后台,继续维护`luckysheetfile[i].celldata` 参数,该参数是一个一维数组:
```json ```json
[ [
{r:0, c:1, v: "值1"}, {r:0, c:1, v: "值1"},
@ -42,8 +42,6 @@
{r:10, c:11, v:{f:"=sum", v:"100"}} {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则删除该单元格。 后台在保存前台推送的数据时,首先需要把参数转换为 `{r:0, c:1:v:100}` 的格式,然后更新 `luckysheetfile[i].celldata` 字段,如果存在该单元格则更新,如果没有则添加,如果存在该单元格但是`v`为null则删除该单元格。
- **前台查看** - **前台查看**

764
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
- 作用: 整个工作表区域的高度(包含边界的灰色区域),初始化无需设置
------------

1
src/config.js

@ -47,7 +47,6 @@ export default {
"pageUrl":"", "pageUrl":"",
}, },
editMode: false, //是否为编辑模式 editMode: false, //是否为编辑模式
chartConfigChange: null,//图表插件中图表更新触发的自定义方法
beforeCreateDom: null,//表格创建之前的方法 beforeCreateDom: null,//表格创建之前的方法
fireMousedown: null, //单元格数据下钻 fireMousedown: null, //单元格数据下钻
lang: 'en', //language lang: 'en', //language

2
src/controllers/handler.js

@ -4081,7 +4081,7 @@ export default function luckysheetHandler() {
let totalPage = luckysheetConfigsetting.pageInfo.totalPage; let totalPage = luckysheetConfigsetting.pageInfo.totalPage;
let pageUrl = luckysheetConfigsetting.pageInfo.pageUrl; let pageUrl = luckysheetConfigsetting.pageInfo.pageUrl;
// rptapp
method.addDataAjax({ method.addDataAjax({
"queryExps": queryExps, "queryExps": queryExps,
"reportId": reportId, "reportId": reportId,

1
src/controllers/luckysheetConfigsetting.js

@ -25,7 +25,6 @@ const luckysheetConfigsetting = {
editMode: false, editMode: false,
chartConfigChange: null,
beforeCreateDom: null, beforeCreateDom: null,
fireMousedown: null, fireMousedown: null,
plugins:[], plugins:[],

1
src/core.js

@ -82,7 +82,6 @@ luckysheet.create = function (setting) {
luckysheetConfigsetting.pageInfo = extendsetting.pageInfo; luckysheetConfigsetting.pageInfo = extendsetting.pageInfo;
luckysheetConfigsetting.editMode = extendsetting.editMode; luckysheetConfigsetting.editMode = extendsetting.editMode;
luckysheetConfigsetting.chartConfigChange = extendsetting.chartConfigChange;
luckysheetConfigsetting.beforeCreateDom = extendsetting.beforeCreateDom; luckysheetConfigsetting.beforeCreateDom = extendsetting.beforeCreateDom;
luckysheetConfigsetting.fireMousedown = extendsetting.fireMousedown; luckysheetConfigsetting.fireMousedown = extendsetting.fireMousedown;

Loading…
Cancel
Save