node將Excel數(shù)據(jù)轉(zhuǎn)為JSON的示例代碼
說(shuō)在前面
比如我們現(xiàn)在有這么一個(gè)Excel數(shù)據(jù)表:

我們需要將其轉(zhuǎn)為JSON數(shù)據(jù),并按地市進(jìn)行分組:

1、導(dǎo)入模塊
- 首先,通過(guò)
require導(dǎo)入了xlsx和fs模塊。xlsx模塊用于操作Excel文件,fs模塊用于文件系統(tǒng)操作(如讀取和寫(xiě)入文件)。
2、讀取Excel文件
- 使用
xlsx.readFile函數(shù)讀取指定路徑("./file/地市區(qū)縣.xlsx")下的Excel文件,并將結(jié)果存儲(chǔ)在workBook變量中。
const workBook = xlsx.readFile("./file/地市區(qū)縣.xlsx");
3、獲取工作表數(shù)據(jù)并轉(zhuǎn)換為JSON
- 從
workBook中獲取名為Sheet1的工作表,并將其存儲(chǔ)在變量sheet中。 - 然后使用
xlsx.utils.sheet_to_json函數(shù)將工作表數(shù)據(jù)轉(zhuǎn)換為JSON格式,并存儲(chǔ)在sheetJson變量中。
const sheet = workBook.Sheets["Sheet1"]; const sheetJson = xlsx.utils.sheet_to_json(sheet);
獲取到的JSON數(shù)據(jù)如下:

4、構(gòu)建地區(qū)映射對(duì)象
- 獲取到Excel的JSON數(shù)據(jù)之后,我們還需要對(duì)數(shù)據(jù)進(jìn)行處理,將同一地市的區(qū)縣歸并起來(lái)。
- 遍歷
sheetJson中的每一項(xiàng)。對(duì)于每一項(xiàng),檢查respoolMap對(duì)象中是否已經(jīng)存在對(duì)應(yīng)的地市鍵。如果不存在,則創(chuàng)建一個(gè)空數(shù)組作為該地市的值;如果存在,則獲取該數(shù)組。 - 將當(dāng)前項(xiàng)的區(qū)縣值添加到對(duì)應(yīng)地市的數(shù)組中,并更新
respoolMap對(duì)象。
const respoolMap = {};
sheetJson.forEach((item) => {
const list = respoolMap[item.地市] || [];
list.push(item.區(qū)縣);
respoolMap[item.地市] = list;
});
5、寫(xiě)入JSON文件
- 使用
fs.writeFileSync函數(shù)將respoolMap對(duì)象轉(zhuǎn)換為格式化的JSON字符串(通過(guò)JSON.stringify(respoolMap,null, 2)),并寫(xiě)入到"./file/地市區(qū)縣.json"文件中。
fs.writeFileSync(`./file/地市區(qū)縣.json`, JSON.stringify(respoolMap,null, 2));

總體來(lái)說(shuō),就是通過(guò)xlsx讀取一個(gè)Excel文件中的數(shù)據(jù)。然后將數(shù)據(jù)重新組織,以地市為鍵,其下屬的區(qū)縣列表為值,構(gòu)建一個(gè)對(duì)象。最后將這個(gè)對(duì)象保存為一個(gè)JSON文件。
完整代碼
const xlsx = require("xlsx");
const fs = require("fs");
const workBook = xlsx.readFile("./file/地市區(qū)縣.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.區(qū)縣);
respoolMap[item.地市] = list;
});
fs.writeFileSync(`./file/地市區(qū)縣.json`, JSON.stringify(respoolMap, null, 2));
這是一個(gè)讀取Excel數(shù)據(jù)并轉(zhuǎn)換為JSON的簡(jiǎn)單腳本,大家可以根據(jù)自己的需求進(jìn)行微調(diào)使用
到此這篇關(guān)于node將Excel數(shù)據(jù)轉(zhuǎn)為JSON的示例代碼的文章就介紹到這了,更多相關(guān)node Excel數(shù)據(jù)轉(zhuǎn)JSON內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
詳解在node.js中require方法的加載規(guī)則
這篇文章主要介紹了詳解在node.js中require方法的加載規(guī)則,本文一步步解析了require加載規(guī)則,講述了核心的模塊,路徑形式的模塊,第三方模塊等,需要的朋友可以參考下2021-06-06
Node.js 使用 Express-Jwt和JsonWebToken 進(jìn)行Token身份
這篇文章主要介紹了Node.js 使用 Express-Jwt和JsonWebToken 進(jìn)行Token身份驗(yàn)證的操作方法,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧2024-08-08
npm?install報(bào)錯(cuò)unable?to?resolve?dependency?tree的解決辦法
在開(kāi)發(fā)過(guò)程中經(jīng)常會(huì)使用npm安裝依賴(lài)包來(lái)加速開(kāi)發(fā),但是在執(zhí)行npm install命令時(shí),有時(shí)會(huì)遇到各種錯(cuò)誤,下面這篇文章主要給大家介紹了關(guān)于npm?install報(bào)錯(cuò)unable?to?resolve?dependency?tree的解決辦法,需要的朋友可以參考下2023-05-05
Node.js+ES6+dropload.js實(shí)現(xiàn)移動(dòng)端下拉加載實(shí)例
這個(gè)demo服務(wù)由Node搭建服務(wù)、下拉加載使用插件dropload,數(shù)據(jù)渲染應(yīng)用了ES6中的模板字符串。有興趣的小伙伴可以自己嘗試下2017-06-06
nodejs+mongodb aggregate級(jí)聯(lián)查詢(xún)操作示例
這篇文章主要介紹了nodejs+mongodb aggregate級(jí)聯(lián)查詢(xún)操作,結(jié)合實(shí)例形式分析了基于nodejs的mongodb數(shù)據(jù)庫(kù)級(jí)聯(lián)查詢(xún)相關(guān)操作技巧,需要的朋友可以參考下2018-03-03
如何解決安裝websocket還是報(bào)錯(cuò)Cannot find module'ws&apos
這篇文章主要介紹了如何解決安裝websocket還是報(bào)Cannot find module'ws'問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-02-02
Koa從零搭建到Api實(shí)現(xiàn)項(xiàng)目的搭建方法
這篇文章主要介紹了Koa從零搭建到Api實(shí)現(xiàn)項(xiàng)目的搭建方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07
詳解node如何讓一個(gè)端口同時(shí)支持https與http
眾所周知node是一個(gè)高性能的web服務(wù)器,使用它可以很簡(jiǎn)單的創(chuàng)建一個(gè)http或https的服務(wù)器。這篇文章主要介紹了詳解node如何讓一個(gè)端口同時(shí)支持https與http2017-07-07
node.js中的fs.chmodSync方法使用說(shuō)明
這篇文章主要介紹了node.js中的fs.chmodSync方法使用說(shuō)明,本文介紹了fs.chmodSync方法說(shuō)明、語(yǔ)法、接收參數(shù)、使用實(shí)例和實(shí)現(xiàn)源碼,需要的朋友可以參考下2014-12-12

