node express如何實現(xiàn)json轉(zhuǎn)Excel
node express實現(xiàn)json轉(zhuǎn)Excel
有些場景我們需要將json或js中的數(shù)據(jù)對象轉(zhuǎn)換成Excel文檔,作為一個前端,服務(wù)框架最應(yīng)該熟悉的就是node了,以下是基于多語言轉(zhuǎn)換實現(xiàn)代碼,看明白原理自己改一改就能用了
1.安裝node環(huán)境
2.創(chuàng)建一個文件夾,文件夾中創(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同級
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ò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ù)自己實際情況定義
6.執(zhí)行命令 node JsonToExcel.js
nodeJS把json數(shù)據(jù)轉(zhuǎn)成excel(xlsx文件)輸出
最近做網(wǎng)站爬蟲,爬取到的數(shù)據(jù)保存到一個name.json文件中
數(shù)據(jù)結(jié)構(gòu)大概是這樣的:
可以利用nodeJS把這個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ù)組,在對象temp
中定義表格需要展示的字段,再把temp
添加到一個新的數(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é)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Node.js、Socket.IO和GPT-4構(gòu)建AI聊天機(jī)器人的項目實踐
本文主要介紹了Node.js、Socket.IO和GPT-4構(gòu)建AI聊天機(jī)器人的項目實踐,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-05-05提升node.js中使用redis的性能遇到的問題及解決方法
本文中提到的node redis client采用的基于node-redis封裝的二方包,因此問題排查也基于node-redis這個模塊。接下來通過本文給大家分享提升node.js中使用redis的性能2018-10-10