前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >excel 树结构json_excel转换json的强大工具

excel 树结构json_excel转换json的强大工具

作者头像
全栈程序员站长
发布2022-07-01 10:49:48
发布2022-07-01 10:49:48
1.1K0
举报

大家好,又见面了,我是你们的朋友全栈君。

让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 or YYYY/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上执行)

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/131586.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档