- 注意:使用時需要了解模板接受的數(shù)據(jù)格式,并不是直接搞上去就可以了,凡是不是要有個吻合度嗎。
- 從數(shù)據(jù)庫中取出數(shù)據(jù)
- 大致處理后的數(shù)據(jù)格式為:
- 這些都準(zhǔn)備好了你還得需要樣?xùn)|西,模板;
<%forRBegin rs,i in data[0]%>:開始循環(huán);因為數(shù)據(jù)封裝為
[
[{},{},{},{}.....]
];所以通過data[0],
即可取出所有數(shù)據(jù),數(shù)組中套用數(shù)組;
<%forREnd%>:結(jié)束循環(huán);
<%=rs.issue_name%>:通過你封裝的key來取值; - 現(xiàn)在是代碼部分
- 加入ejsexcel
var ejsexcel = require('ejsexcel');
var fs = require('fs');
當(dāng)然,使用之前需要你添加這個模塊(npm install ejsexcel)
- ./ GET export excel test. 導(dǎo)出excel議題/
router.get('/exportExcel', function (req, res, next) {
var filedir = './public/uploadFile/temporaryFile/';
fs.ensureDir(filedir, function (err) {
});
var meet_name = req.query.meet_name;
try {
//導(dǎo)出前判斷要導(dǎo)出的文件是否存在,自己根據(jù)需求
fs.exists('./public/uploadFile/temporaryFile/' + meet_name + '_xxx.xlsx', function (r) {
if (r) {
fs.unlink('./public/uploadFile/temporaryFile/' + meet_name + '_xxx.xlsx', function (err) {
if (err) throw err;
})
}
issueService.getIssueInfo(1, 10000, meet_name, function (result) {
//查詢數(shù)據(jù)
if (result.rows.length < 1) {
//沒有數(shù)據(jù)返回0頁面獲取判斷返回值做出相應(yīng)的提示
res.send("0");
} else {
fs.ensureDir(filedir, function (err) {});
(async function () {
var datas = [];
var data = [];
for (var i = 0; i < result.rows.length; i++) {
/*
處理數(shù)據(jù)為上述格式
/
data.push(result.rows[i]);
}
datas.push(data);
//獲得Excel模板的buffer對象
const exlBuf = await readFileAsync('./public/uploadFile/template/issue.xlsx');
//用數(shù)據(jù)源(對象)data渲染Excel模板
const exlBuf2 = await ejsexcel.renderExcel(exlBuf, datas);
await writeFileAsync('./public/uploadFile/temporaryFile/' + meet_name + '_議題報表.xlsx', exlBuf2);
setTimeout(() => {
console.info("刪除議題");
try {
fs.access('./public/uploadFile/temporaryFile/' + meet_name + '_xxx.xlsx', fs.constants.F_OK,
(err) => {
if (!err) {
fs.unlinkSync('./public/uploadFile/temporaryFile/' + meet_name + '_xxx.xlsx')
}
});
} catch (e) {
console.info("異常");
console.error(e);
}
}, 5 60 1000);
//返回生成的表格路徑提供下載
res.send('/uploadFile/temporaryFile/' + meet_name + '_xxx.xlsx');
})();
}
});
});
} catch (error) {
//返回異常
res.send("err");
}
});
注:在任何時候,代碼出現(xiàn)問題不要捉急,看一下錯誤提示是否是哪個模塊沒加,或者是引號問題等等,總之
新中越毛躁,解決問題所花費的時間越多
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。
成都創(chuàng)新互聯(lián)公司長期為1000多家客戶提供的網(wǎng)站建設(shè)服務(wù),團隊從業(yè)經(jīng)驗10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為西湖企業(yè)提供專業(yè)的網(wǎng)站建設(shè)、
成都網(wǎng)站建設(shè),
西湖網(wǎng)站改版等技術(shù)服務(wù)。擁有十載豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。
分享文章:nodejs+express使用ejsexcel做復(fù)雜導(dǎo)出Excel-創(chuàng)新互聯(lián)
本文網(wǎng)址:
http://weahome.cn/article/cedeid.html