Nodejs如何让excel 表达复杂json格式,并导出json

Nodejs如何让excel 表达复杂json格式,并导出json

xlsx2json

项目地址 xlsx2json master

作用

  • 让excel表达复杂的json格式
  • 将excel转成json

示例1 test.xlsx

id desc flag otherid#[] 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,
    "otherid": [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,
    "otherid": [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 字符串
  • object 对象 {a:1,b:false} // 对象内暂时不能有数组,也不能对象嵌套对象,此功能正在加入。
  • number-array 数字数组
  • boolean-array 布尔数组
  • string-array 字符串数组
  • object-array 对象数组

表头规则

  • 字段是基本数据类型(string,number,boolean)时候,不需要特殊设置。
  • 字段是基本类型数组:此列表头的命名形式 列名#[]
  • 字段是对象:此列表头的命名形式 列名#{}
  • 字段是对象数组:此列表头的命名形式列名#[{}]

8 回复

Nodejs 如何让 excel 表达复杂 json 格式,并导出 json

xlsx2json

项目地址: xlsx2json master

作用

  • 让 Excel 表达复杂的 JSON 格式
  • 将 Excel 转换成 JSON

示例 1: test.xlsx

| id   | desc       | flag | otherid#[] | words#[]     | map#[] | data#{a:b} | hero#[{id:level}] |
|------|------------|------|------------|--------------|--------|------------|-------------------|
| 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 |

输出 JSON

[
    {
        "id": 123,
        "desc": "description",
        "flag": true,
        "otherid": [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,
        "otherid": [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: 字符串类型
  • Object: 对象类型 (当前不支持嵌套对象)
  • Number-array: 数字数组
  • Boolean-array: 布尔数组
  • String-array: 字符串数组
  • Object-array: 对象数组

表头规则

  • 如果字段是基本数据类型(如字符串、数字、布尔值),则不需要特殊设置。
  • 如果字段是基本类型的数组,表头应命名为 <列名>#[]
  • 如果字段是对象,表头应命名为 <列名>#{}
  • 如果字段是对象数组,表头应命名为 <列名>#[{}]

示例代码

以下是使用 xlsx2json 库将 Excel 文件转换为 JSON 的简单示例:

const xlsx2json = require('xlsx2json');

// 读取 Excel 文件并转换为 JSON
xlsx2json('./test.xlsx')
  .then(jsonData => {
    console.log(JSON.stringify(jsonData, null, 2));
  })
  .catch(err => {
    console.error('Error converting Excel to JSON:', err);
  });

解释

  • xlsx2json 是一个用于将 Excel 文件转换为 JSON 格式的库。
  • 通过调用 xlsx2json('./test.xlsx') 方法,可以读取指定路径的 Excel 文件并将其转换为 JSON 对象。
  • 最终结果是一个包含多个对象的数组,每个对象代表一行数据,并且数据类型根据表头规则自动解析。

这样,你就可以轻松地将复杂的 Excel 数据转换为易于处理的 JSON 格式。


熟悉markdown童鞋,能指导下table怎么写么。我那里不知道为什么空出来那么大一块空白??

Table 问题… 编译出来很多的 <p></p>, 不清楚具体原因, 不过原文用了 HTML 标签而不是 Markdown 的格式… 是有点怪, 我到晚上看下, 另外表格布局也要加强的 https://github.com/cnodejs/nodeclub/issues/319

我用github那种方式整table在这里显示不对,就看发帖页面右面那个 “Markdown 文档”的连接 看得table的用法,table还有别的写法么?

语法应该没什么问题了…应该就是解析器生成问题了…

对了…那个是标准md文档…table 得用 标签才行…那写起来多累啊… 其实这里支持GFM 的格式,表格 可以这样优雅的写

|表头1|表头2|
|:--|:--|
|内容1|内容2|
表头1 表头2
内容1 内容2

为了实现将Excel文件转换为复杂的JSON格式并导出JSON的功能,我们可以使用xlsx2json工具。以下是具体的步骤和示例代码来说明如何实现这一目标。

步骤

  1. 安装依赖:首先需要安装xlsx2json库。

    npm install xlsx2json
    
  2. 准备Excel文件:确保你的Excel文件具有正确的表头结构,以支持不同类型的数据,包括基础数据类型、数组和对象等。

  3. 编写转换脚本:使用xlsx2json将Excel文件中的数据转换为JSON格式。

示例代码

const xlsx2json = require('xlsx2json');

// 转换Excel文件到JSON
xlsx2json('test.xlsx', (err, json) => {
    if (err) {
        console.error(err);
        return;
    }
    console.log(JSON.stringify(json, null, 2));
});

输出示例

假设test.xlsx文件内容如题目所示,则运行上述脚本后,输出应如下:

[
  {
    "id": 123,
    "desc": "description",
    "flag": true,
    "otherid": [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,
    "otherid": [3, 5, 8],
    "words": ["shit", "my god"],
    "map": [false, true],
    "data": {
      "a": 11,
      "b": 22
    },
    "hero": [
      {"id": 9, "level": 38},
      {"id": 17, "level": 100}
    ]
  }
]

解释

  • 表头规则
    • 其他id#[]表示这是一个字符串数组。
    • words#[]同样表示一个字符串数组。
    • map#[]表示一个布尔数组。
    • data#{}表示一个对象。
    • hero#[{}]表示一个对象数组。

通过这些规则,xlsx2json可以正确解析Excel中的数据,并将其转换为相应的JSON格式。

以上就是如何使用xlsx2json将Excel文件中的复杂数据转换为JSON格式的基本流程和示例代码。

回到顶部