基于Node.js的后臺管理系統(tǒng)的數(shù)據(jù)表格導出下載
今天在工作的時候接觸到一個需求,就是現(xiàn)在有一個簡單的后臺管理系統(tǒng)是基于node.js來實現(xiàn)的,現(xiàn)在需要將其中的一個表格數(shù)據(jù)下載下來。乍一聽還以為這個是一個簡單的需求,以為只要簡單的一個小時就能完成,沒有想到直接花了我將近兩個半小時并且還是在他人的幫助下實現(xiàn)的功能。下面就是具體的實現(xiàn)步驟
第一步引入依賴
最主要的是使用的node的庫node-xlsx。
npm環(huán)境下
node-xslxnpm install node-xlsx
node.js中的fs模塊npm install fs
具體的引入代碼let fs = require('fs'); let xlsx = require('node-xlsx');
第二步寫sql語句,查詢需要下載的數(shù)據(jù)
app.get('/export', (req, res) => {
//生成Excel依賴包
const xlsx = require("node-xlsx");
//寫入文件依賴包
var fs = require("fs");
const sql = `select * from student where delete_status=0`
db.query(sql, async (err, results) => {
if (err) {
return console.log(err.message)
}
// res.json(results);
const dataList = results.data;
console.log(results,"獲取的dataList數(shù)據(jù)")
let list = [
{
name: "sheet",
data: [
//第一列是作為表頭,先寫死;后面的數(shù)據(jù)通過循環(huán)push到這個數(shù)組中
["購買人名稱", "購買時間", "實際支付金額","兌換碼","兌換碼所屬渠道/商家名稱"],
],
},
];
for (let i = 0; i < results.length; i++){
console.log("++++++++++++++++++", results[i])
let name = results[i].name
let time = results[i].time
let money = results[i].money
let code = results[i].code
let business = results[i].business
let linshi = [name, time, money, code, businessName]
console.log('獲取的新數(shù)組 :>> ', linshi);
list[0].data.push(linshi)
console.log('寫入的數(shù)據(jù) :>> ', list[0].data);
}
const buffer = xlsx.build(list);
fs.writeFile("詳細數(shù)據(jù).xlsx", buffer, function (err) {
if (err) {
console.log(err, "保存excel出錯");
} else {
console.log("寫入excel成功!!!");
}
});
res.body = buffer;
//將返回的buffer作為一個流返回給前端
res.set('Content-disposition', 'attachment; filename='+encodeURIComponent('文娛卡售卡明細表')+'.xlsx');
res.set('Content-type', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
res.status(200).send(buffer)
})
})
這一步寫完基本的數(shù)據(jù)就會寫入到excel文件中,并且將excel文件作為一個流直接返回給前端
第三步前端接收數(shù)據(jù)下載
前端頁面添加一個按鈕,在按鈕的點擊事件中請求后臺返回的excel表格數(shù)據(jù)
通過 window.open直接連接后臺的接口數(shù)據(jù)訪問后臺返回過來的流,下載進行展示
async daochu() {
//這個
console.log(window.ip +":"+ window.port + '/export')
window.open(window.ip +":"+ window.port + '/export')
},
ip和port是主機id和請求端口,是在前端規(guī)定好的,可以選擇寫死也可以選擇動態(tài)寫入文章來源:http://www.zghlxwxcb.cn/news/detail-637195.html
以上就是基于node.js的后臺管理系統(tǒng)的數(shù)據(jù)表格導出下載的實現(xiàn)全過程,如果還有什么更好的方法,可以一起溝通溝通文章來源地址http://www.zghlxwxcb.cn/news/detail-637195.html
到了這里,關(guān)于基于Node.js的后臺管理系統(tǒng)的數(shù)據(jù)表格導出下載的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!