美文网首页
excel转换json的强大工具

excel转换json的强大工具

作者: 瓜田猹 | 来源:发表于2018-01-26 17:31 被阅读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 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上执行)
    • 项目地址 xlsx2json master

    相关文章

      网友评论

          本文标题:excel转换json的强大工具

          本文链接:https://www.haomeiwen.com/subject/azewaxtx.html