node實(shí)現(xiàn)將json轉(zhuǎn)為excel
說在前面
平時我們寫代碼處理的數(shù)據(jù)格式一般都是json格式的數(shù)據(jù),有時候我們也需要將數(shù)據(jù)轉(zhuǎn)為excel格式進(jìn)行保存或分享,那么我們要怎么將json數(shù)據(jù)轉(zhuǎn)為Excel呢?
比如我們現(xiàn)在有這么一個地市的JSON數(shù)據(jù):
我們需要將其轉(zhuǎn)為Excel:
1、導(dǎo)入模塊
- 首先,通過
require
導(dǎo)入了json2xls
、fs
和一個自定義的 JSON 文件./file/地市區(qū)縣.json
。 json2xls
模塊用于將 JSON 數(shù)據(jù)轉(zhuǎn)換為 Excel 文件格式。fs
模塊用于文件系統(tǒng)操作,如讀取和寫入文件。
const json2xls = require("json2xls"); const fs = require("fs"); const json = require("./file/地市區(qū)縣.json");
2、數(shù)據(jù)分析
首先我們要先設(shè)計(jì)好excel表格的列名,我們現(xiàn)在json數(shù)據(jù)的鍵名是地市
,鍵值是一個區(qū)縣
列表,所以我們可以以地市和區(qū)縣為列名。
3、數(shù)據(jù)處理
- 創(chuàng)建一個空數(shù)組
jsonData
,用于存儲最終要轉(zhuǎn)換為 Excel 的數(shù)據(jù)。 - 使用
for...in
循環(huán)遍歷導(dǎo)入的 JSON 對象(假設(shè)這個 JSON 對象的結(jié)構(gòu)是以地市為鍵,對應(yīng)區(qū)縣的數(shù)組為值)。 - 對于每個地市,獲取其對應(yīng)的區(qū)縣列表
list
。 - 使用
map
方法將區(qū)縣列表轉(zhuǎn)換為一個新的對象數(shù)組objList
,其中每個對象包含地市
和區(qū)縣
兩個屬性。 - 使用擴(kuò)展運(yùn)算符
push(...objList)
將這個新的對象數(shù)組添加到jsonData
數(shù)組中。
const jsonData = []; for (const key in json) { const list = json[key]; const objList = list.map((item) => { return { 地市: key, 區(qū)縣: item, }; }); jsonData.push(...objList); }
4、轉(zhuǎn)換并寫入文件
- 使用
json2xls
函數(shù)將處理后的jsonData
數(shù)組轉(zhuǎn)換為 Excel 文件格式的數(shù)據(jù),并存儲在xlsData
變量中。 - 使用
fs.writeFileSync
將xlsData
寫入名為output.xlsx
的文件中,指定文件寫入模式為binary
(二進(jìn)制模式)。
const xlsData = json2xls(jsonData); fs.writeFileSync("output.xlsx", xlsData, "binary");
總體來說,就是讀取一個包含地市區(qū)縣信息的 JSON 文件,將其數(shù)據(jù)進(jìn)行處理,轉(zhuǎn)換為特定的格式(每個對象包含地市和區(qū)縣屬性),然后使用json2xls
庫將處理后的 JSON 數(shù)據(jù)轉(zhuǎn)換為 Excel 文件并保存。
完整代碼
const json2xls = require("json2xls"); const fs = require("fs"); const json = require("./file/地市區(qū)縣.json"); const jsonData = []; for (const key in json) { const list = json[key]; const objList = list.map((item) => { return { 地市: key, 區(qū)縣: item, }; }); jsonData.push(...objList); } const xlsData = json2xls(jsonData); fs.writeFileSync("output.xlsx", xlsData, "binary");
到此這篇關(guān)于node實(shí)現(xiàn)將json轉(zhuǎn)為excel的文章就介紹到這了,更多相關(guān)node json轉(zhuǎn)excel內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Node使用koa2實(shí)現(xiàn)一個簡單JWT鑒權(quán)的方法
這篇文章主要介紹了Node使用koa2實(shí)現(xiàn)一個簡單JWT鑒權(quán)的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01Node事件的監(jiān)聽與觸發(fā)的實(shí)現(xiàn)
Node.js是由事件驅(qū)動的,每個任務(wù)都可以當(dāng)作一個事件來處理,本文主要介紹了Node事件的監(jiān)聽與觸發(fā)的實(shí)現(xiàn),具有一定的參考價值,感興趣的可以了解一下2024-04-04Node.js Continuation Passing Style( CPS與
這篇文章主要介紹了Node.js Continuation Passing Style,將回調(diào)函數(shù)作為參數(shù)傳遞,這種書寫方式通常被稱為Continuation Passing Style(CPS),它的本質(zhì)仍然是一個高階函數(shù),CPS最初是各大語言中對排序算法的實(shí)現(xiàn)2022-06-06基于docker搭建node環(huán)境開發(fā)服務(wù)器全過程
這篇文章主要給大家介紹了關(guān)于如何基于docker搭建node環(huán)境開發(fā)服務(wù)器的相關(guān)資料,本文將采用docker技術(shù)部署一個簡單的nodejs應(yīng)用,文中通過圖文以及代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-11-11關(guān)于Sequelize連接查詢時inlude中model和association的區(qū)別詳解
這篇文章主要介紹了關(guān)于Sequelize連接查詢時inlude中model與association的區(qū)別,文中介紹的很詳細(xì),需要的朋友可以參考借鑒,下面來一起看看吧。2017-02-02node 標(biāo)準(zhǔn)輸入流和輸出流代碼實(shí)例
這篇文章主要介紹了node 標(biāo)準(zhǔn)輸入流和輸出流代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-09-09