excel转换json的强大工具
2018-01-26 本文已影响417人
瓜田猹
xlsx2json (English Document)
让excel支持表达复杂的json格式,将xlsx文件转成json。
使用说明
- 目前只支持.xlsx格式,不支持.xls格式。
- 本项目是基于nodejs的,所以需要先安装nodejs环境。
- 执行命令
# Clone this repository
git clone https://github.com/koalaylj/xlsx2json.git
# Go into the repository
cd xlsx2json
# Install dependencies
npm install
- 配置config.json
{
"xlsx": {
"head": 2,// 表头所在的行,第一行可以是注释,第二行是表头。
"src": "./excel/**/[^~$]*.xlsx", // xlsx文件 glob配置风格
"dest": "./json", // 导出的json存放的位置
"arraySeparator":"," // 数组的分隔符
}
}
注:
- excel导出json:
- windows: 双击export.bat 即可将 ./excel/*.xlsx 文件导出到 ./json 下。
- mac: 运行./export.sh 即可将 ./excel/*.xlsx 文件导出到 ./json 下。
- 还支持命令行传参导入导出特定excel,具体使用 node index.js --help 查看。
- json名字以excel的sheet名字命名。
示例1 test.xlsx
id | desc | flag | nums#[] | words#[] | map#[]/ | data#{} | hero#[{}] |
---|---|---|---|---|---|---|---|
123 | description | true | 1,2 | 哈哈,呵呵 | true/true | a:123;b:45 | id:2;level:30,id:3;level:80 |
456 | 描述 | false | 3,5,8 | shit,my god | false/true | a:11;b:22 | id:9;level:38,id:17;level:100 |
输出如下:
[{
"id": 123,
"desc": "description",
"flag": true,
"nums": [1, 2],
"words": ["哈哈", "呵呵"],
"map": [true, true],
"data": {
"a": 123,
"b": 45
},
"hero": [
{"id": 2,"level": 30},
{"id": 3,"level": 80}
]
}, {
"id": 456,
"desc": "描述",
"flag": false,
"nums": [3, 5, 8],
"words": ["shit", "my god"],
"map": [false, true],
"data": {
"a": 11,
"b": 22
},
"hero": [
{"id": 9, "level": 38 },
{"id": 17,"level": 100}
]
}]
支持以下数据类型
- number 数字类型。
- boolean 布尔。
- string 字符串。
- date 日期类型。
- object 简单对象,暂时不支持对象里面有对象或数组这种。
- number-array 数字数组。
- boolean-array 布尔数组。
- string-array 字符串数组。
- object-array 对象数组。
- id 主键类型(当表中有这个类型的时候,json会以map格式输出,否则以数组格式输出)。
表头规则
- 基本数据类型(string,number,bool)时候,一般不需要设置会自动判断,但是也可以明确声明数据类型。
- 字符串类型:命名形式
列名#string
。 - 数字类型:命名形式
列名#number
。 - 日期类型:
列名#date
。日期格式要符合标准日期格式。比如YYYY/M/D H:m:s
orYYYY/M/D
等等。 - 布尔类型:命名形式
列名#bool
。 - 基本类型数组:命名形式
列名#[]
,数组元素默认用逗号分隔(a,b,c),自定义数组元素分隔符列名#[]/
(a/b/c)。 - 对象:命名形式
列名#{}
。 - 对象数组:命名形式
列名#[{}]
。 - 主键:命名形式
列名#id
。
数据规则
- 关键符号都是半角符号。
- 对象属性使用分号
;
分割。
原理说明
- 依赖 node-xlsx 这个项目解析xlsx文件。
- xlsx就是个zip文件,解压出来都是xml。有一个xml存的string,有相应个xml存的sheet。通过解析xml解析出* excel数据(json格式),这个就是node-xlsx 做的工作。
- 本项目只需利用 node-xlsx 解析xlsx文件,然后拼装自己的json数据格式。
补充
- 实验环境:win7_x64 + nodejs_v0.10.25(可在linux上执行)
- 项目地址 xlsx2json master