node将Excel数据转为JSON的示例代码
作者:JYeontu
平时工作中我们基本都会接触到excel数据表,但是在代码中使用和处理数据的时候通常都要先将其转为json格式数据,json格式的数据可以更加方便我们进行处理,那么我们要怎么将Excel数据转为JSON数据呢,接下来本文给大家详细介绍一下
说在前面
比如我们现在有这么一个Excel数据表:
我们需要将其转为JSON数据,并按地市进行分组:
1、导入模块
- 首先,通过
require
导入了xlsx
和fs
模块。xlsx
模块用于操作Excel文件,fs
模块用于文件系统操作(如读取和写入文件)。
2、读取Excel文件
- 使用
xlsx.readFile
函数读取指定路径("./file/地市区县.xlsx"
)下的Excel文件,并将结果存储在workBook
变量中。
const workBook = xlsx.readFile("./file/地市区县.xlsx");
3、获取工作表数据并转换为JSON
- 从
workBook
中获取名为Sheet1
的工作表,并将其存储在变量sheet
中。 - 然后使用
xlsx.utils.sheet_to_json
函数将工作表数据转换为JSON格式,并存储在sheetJson
变量中。
const sheet = workBook.Sheets["Sheet1"]; const sheetJson = xlsx.utils.sheet_to_json(sheet);
获取到的JSON数据如下:
4、构建地区映射对象
- 获取到Excel的JSON数据之后,我们还需要对数据进行处理,将同一地市的区县归并起来。
- 遍历
sheetJson
中的每一项。对于每一项,检查respoolMap
对象中是否已经存在对应的地市键。如果不存在,则创建一个空数组作为该地市的值;如果存在,则获取该数组。 - 将当前项的区县值添加到对应地市的数组中,并更新
respoolMap
对象。
const respoolMap = {}; sheetJson.forEach((item) => { const list = respoolMap[item.地市] || []; list.push(item.区县); respoolMap[item.地市] = list; });
5、写入JSON文件
- 使用
fs.writeFileSync
函数将respoolMap
对象转换为格式化的JSON字符串(通过JSON.stringify(respoolMap,null, 2)
),并写入到"./file/地市区县.json"
文件中。
fs.writeFileSync(`./file/地市区县.json`, JSON.stringify(respoolMap,null, 2));
总体来说,就是通过xlsx读取一个Excel文件中的数据。然后将数据重新组织,以地市为键,其下属的区县列表为值,构建一个对象。最后将这个对象保存为一个JSON文件。
完整代码
const xlsx = require("xlsx"); const fs = require("fs"); const workBook = xlsx.readFile("./file/地市区县.xlsx"); const sheet = workBook.Sheets["Sheet1"]; const sheetJson = xlsx.utils.sheet_to_json(sheet); const respoolMap = {}; sheetJson.forEach((item) => { const list = respoolMap[item.地市] || []; list.push(item.区县); respoolMap[item.地市] = list; }); fs.writeFileSync(`./file/地市区县.json`, JSON.stringify(respoolMap, null, 2));
这是一个读取Excel数据并转换为JSON的简单脚本,大家可以根据自己的需求进行微调使用
到此这篇关于node将Excel数据转为JSON的示例代码的文章就介绍到这了,更多相关node Excel数据转JSON内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!