node express如何實(shí)現(xiàn)json轉(zhuǎn)Excel
node express實(shí)現(xiàn)json轉(zhuǎn)Excel
有些場(chǎng)景我們需要將json或js中的數(shù)據(jù)對(duì)象轉(zhuǎn)換成Excel文檔,作為一個(gè)前端,服務(wù)框架最應(yīng)該熟悉的就是node了,以下是基于多語(yǔ)言轉(zhuǎn)換實(shí)現(xiàn)代碼,看明白原理自己改一改就能用了
1.安裝node環(huán)境
2.創(chuàng)建一個(gè)文件夾,文件夾中創(chuàng)建 package.json內(nèi)容如下
{
"dependencies": {
"express": "^4.18.2",
"fs": "^0.0.1-security",
"node-xlsx": "^0.23.0"
}
}
3.命令行切至文件夾內(nèi),執(zhí)行命令 npm i
4.文件夾內(nèi)創(chuàng)建 JsonToExcel.js,與package.json同級(jí)
var xlsx = require('node-xlsx');
const fs = require('fs');
var jsonPs = require('./json_zh/zh.json');
const dataList = []
// json轉(zhuǎn)excel
for (k in jsonPs) {
// 組合每一行的key value 列
dataList.push([k, jsonPs[k]])
}
console.log('dataList:', dataList)
const list = [
{
name: "sheet", // 工作薄的名稱
data: [
// ["第1行第1列", "第1行第2列", "第1行第3列"],
// ["第2行第1列", "第2行第2列", "第2行第3列"]
...dataList
],
},
// 如果多個(gè)工作薄, 就是多個(gè)對(duì)象。格式如上
];
// 使用提供的構(gòu)建 xlsx 文件的方法
const buffer = xlsx.build(list);
fs.writeFile('fileList/zh.xls', buffer, (err) => {
if (err) {
console.log(err, "導(dǎo)出excel失敗");
} else {
console.log("導(dǎo)出excel成功!");
}
});5.導(dǎo)入來源和導(dǎo)出生成文件路徑根據(jù)自己實(shí)際情況定義
6.執(zhí)行命令 node JsonToExcel.js
nodeJS把json數(shù)據(jù)轉(zhuǎn)成excel(xlsx文件)輸出
最近做網(wǎng)站爬蟲,爬取到的數(shù)據(jù)保存到一個(gè)name.json文件中
數(shù)據(jù)結(jié)構(gòu)大概是這樣的:

可以利用nodeJS把這個(gè)json文件轉(zhuǎn)成xlsx文件輸出,當(dāng)然瀏覽器環(huán)境也可以做到,網(wǎng)上有相關(guān)的方法。
我這里使用了fs模塊和第三方模塊json2xls,所以要先安裝json2xls:
npm install json2xls -D
// 在jsonToExcel.js中先引入核心模塊
const fs = require('fs')
const json2xls = require('json2xls');
然后利用readFile讀取json文件,在回調(diào)函數(shù)中遍歷數(shù)組,在對(duì)象temp中定義表格需要展示的字段,再把temp添加到一個(gè)新的數(shù)組jsonArray。
接著把jsonArray作為參數(shù)去調(diào)用json2xls方法,最后使用writeFileSync輸出xlsx文件。
fs.readFile('name.json','utf8',(err,data)=>{
if (err) throw err;
const json = JSON.parse(data);
const jsonArray = [];
json.forEach(function(item){
let temp = {
'類型' : item.type,
'問題' : item.question,
'答案' : item.trueAnswer
}
jsonArray.push(temp);
});
let xls = json2xls(jsonArray);
fs.writeFileSync('name.xlsx', xls, 'binary');
})
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
nodejs環(huán)境快速操作mysql數(shù)據(jù)庫(kù)的方法詳解
這篇文章主要介紹了nodejs環(huán)境快速操作mysql數(shù)據(jù)庫(kù)的方法詳解,需要的朋友可以參考下2021-03-03
Nodejs訪問網(wǎng)絡(luò)并解析返回的json的實(shí)現(xiàn)方法
本文主要介紹了Nodejs訪問網(wǎng)絡(luò)并解析返回的json的實(shí)現(xiàn)方法,文中根據(jù)實(shí)例編碼詳細(xì)介紹的十分詳盡,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03
module.exports和exports使用誤區(qū)案例分析
module.exports和exports使用誤區(qū),使用require()模塊時(shí),得到的永遠(yuǎn)都是module.exports指向的對(duì)象2023-04-04
使用Phantomjs和Node完成網(wǎng)頁(yè)的截屏快照的方法
這篇文章主要介紹了使用Phantomjs和Node完成網(wǎng)頁(yè)的截屏快照的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07
Nodejs實(shí)現(xiàn)多人同時(shí)在線移動(dòng)鼠標(biāo)的小游戲分享
這篇文章主要介紹了Nodejs實(shí)現(xiàn)多人同時(shí)在線移動(dòng)鼠標(biāo)的小游戲分享,本文給出了服務(wù)器端和客戶端代碼以及運(yùn)行方法,需要的朋友可以參考下2014-12-12

