
让可视化的`Excel`表格,更好的管理你的`json`数据



[English](./README.md) | 简体中文
## Effect preview
模板`Excel`文件:

使用效果:

输出`json`数据:

## Introduction
> `ejc-cli`,前三个字母由`excel`、`json`、`cli`三个单词首字母组成。
### 现实问题
我们有时为了省去了后端的开发成本,会把一些数据直接用`json`存在本地,然后再用这些数据来做渲染。但是:
- 如果需要数据的页面或模块多了,会导致对应的json文件也增多。文件多了,数据太过碎片化,管理那么多文件也变得麻烦
- 数据量很大的时候,数据会变得很冗长,想直接找到特定的某条数据,是很困难的
- 有时我们的数据想共享给其他非开发人员时,`json`不是一个很好的传播方式
### 为什么选择 Excel 来管理数据
- 更方便的操作。Excel是专业的办公软件,在Excel中对数据进行增删改查,当然要比在我们的编辑器内修改要方便太多
- 更可视化。每一个表(sheet)可以当做我们某个页面或某个模块的数据;每个表(sheet)的名字,就是我们json的名字;表里每一行数据,就是我们`json`每一条的数据
- 更方便的管理。数据都集成在一个Excel文件中,更加方便我们管理所有模块或页面的数据
- 更适合传播。json不适合在非开发人员中传播,但是Excel适用于所有人员。不但非开发人员可以对这个Excel进行修改,如果你发现Excel里面有问题,你也一样可以修改,然后再同步给其他人。
### 工具诞生
因此,为了解决上述问题,并且结合 Excel 的功能全面的优势,`ejc-cli`孕育而生,这样你只需要专注管理好 Excel 这个文件就好了。s
## Quick start
### 1. 安装工具
````npm
npm i ejc-cli -g
````
### 2. 获取模板excel文件
你不需要自己做一个excel表格,这里已经做好了一个模板excel文件,你只需要执行:
````npm
ejc-cli gt
````
或者将模板文件保存到目录:
````npm
ejc-cli gt './xlsx_template/'
````
这样我们就能获取到一个excel模板文件了,然后把里面的数据换成你想要的就好了,对就这么简单。
### 3. 输出`json`文件
> 你可以去 [Explanation](#Explanation) 模块更好的了解`-k`、`-s`
- 使用全局方式设置`-k`、`-s`输出
如果你的excel文件中有多个`sheet`,并且它们的结构相似(像`template.xlsx`文件中的两个`sheet`),那么你可以直接设置:
````npm
ejc-cli -i './xlsx_template/template.xlsx' -k 'order, title, date, director, genre, cast, money' -s 3 -n 'movieData, songData'
````
这样的话,`ejc-cli`将会从所有`sheet`的`第3行`开始,读取数据,并且输出的所有`json`数据的`key`值都为`order, title, date, director, genre, cast, money`
- 单独设置`-k`、`-s`输出
如果你的excel文件中有多个`sheet`,每个`sheet`要开始读取数据的地方不一定都是`第3行`开始,每个`sheet`的`key`值也不一定一样,那么你可以用”`|`“分割符:
````npm
ejc-cli -i './xlsx_template/template.xlsx' -k 'order, title, date | num, song_title, artist' -s '3 | 4' -n 'movieData, songData'
````
这样的话,`ejc-cli`会从`第3行`开始读取第一个`sheet`的数据,第一个`sheet`的`json`数据key值是`order, title, date`;
`ejc-cli`会从`第4行`开始读取第二个`sheet`的数据,第二个`sheet`的`json`数据key值是`num, song_title, artist`
- 集成到您的项目中
- 在 `package.json` 中配置相关命令:
```json
{
"script": {
"get:data": "ejc-cli -i ./xlsx_template/template.xlsx -k \"order,title,date|num,song_title,artist\" -s \"2|3\" -n 'movieData,songData'"
}
}
````
- 运行相关`scrpit`命令输出数据:
```npm
npm run get:data
```
## Notice
在使用过程中,这里有以下注意事项:
- 生成`json`数据时,请确保`-s`的值是否正确。`-s`代表的是,数据从每个`sheet`第几行开始读取,默认是`第3行`
- 当设置`-k`值的个数小于`sheet`的列数时,会以`-k`值的个数做渲染
你可以试试执行以下命令,看看输出的数据有什么区别
````npm
ejc-cli -i './xlsx_template/template.xlsx' -k 'order,title' -n 'movieData,novelData'
````
这时输出的`json`数据只有`order`,`title`两个值
- 当你将 `ejc-cli` 集成到项目中时:
- 所有语句都可以不加 `'` 单引号
- **使用 `|` 分隔符时,请使用转义字符,以便与不同系统兼容(`2|3` => `\"2|3\"`)**
## Options and commands
````npm
Usage: ejc-cli [options] [command]
=> Manage your json data better with visual excel sheets
Options:
-v View current version
-i, --input [path] Path of excel to be converted
-o, --output [path] Path to the output json file
-n, --json-name [string] Name of the output json file
-k, --keys [string] The key value corresponding to each column of each sheet
-s, --start-row [number] Read data from what row of sheet
-h, --help View help
Commands:
gt [path] Get the excel template file
````
### 选项
| 参数 | 是否必须 | 默认值 | 说明 | 补充
| ---| --- | --- | --- | ---
| `-v` | 否 | | 查看当前版本 |
| `-i` | 是 | | 要转换的excel表格所在路径 |
| `-o` | 否 | 当前目录的`xlsx_json`文件夹下 | `json`文件输出路径 |
| `-n` | 否 | 默认`sheet`数量索引命名(`data_1.json, data_2.json,...`) | 输出的`json`文件名字 |
| `-k` | 否 | 默认会以当前每列的索引作为`key`(`[{key_1: ''}, {key_2: ''},...]`) | `excel`表格中每列对应要设置的`key`值名称 | 可以用