nodejs+express使用ejsexcel做复杂导出Excel-创新互联
- 注意:使用时需要了解模板接受的数据格式,并不是直接搞上去就可以了,凡是不是要有个吻合度吗。
- 从数据库中取出数据
- 大致处理后的数据格式为:
- 这些都准备好了你还得需要样东西,模板;
<%forRBegin rs,i in data[0]%>:开始循环;因为数据封装为
[
[{},{},{},{}.....]
];所以通过data[0],
即可取出所有数据,数组中套用数组;
<%forREnd%>:结束循环;
<%=rs.issue_name%>:通过你封装的key来取值; - 现在是代码部分
- 加入ejsexcel
var ejsexcel = require('ejsexcel');
var fs = require('fs');
当然,使用之前需要你添加这个模块(npm install ejsexcel)
- ./ GET export excel test. 导出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 {
//导出前判断要导出的文件是否存在,自己根据需求
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) {
//查询数据
if (result.rows.length < 1) {
//没有数据返回0页面获取判断返回值做出相应的提示
res.send("0");
} else {
fs.ensureDir(filedir, function (err) {});
(async function () {
var datas = [];
var data = [];
for (var i = 0; i < result.rows.length; i++) {
/*
处理数据为上述格式
/
data.push(result.rows[i]);
}
datas.push(data);
//获得Excel模板的buffer对象
const exlBuf = await readFileAsync('./public/uploadFile/template/issue.xlsx');
//用数据源(对象)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");
}
});
注:在任何时候,代码出现问题不要捉急,看一下错误提示是否是哪个模块没加,或者是引号问题等等,总之
新中越毛躁,解决问题所花费的时间越多
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
成都创新互联公司长期为1000多家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为西湖企业提供专业的网站建设、
成都网站建设,
西湖网站改版等技术服务。拥有十载丰富建站经验和众多成功案例,为您定制开发。
网页标题:nodejs+express使用ejsexcel做复杂导出Excel-创新互联
本文路径:
http://dzwzjz.com/article/cedeid.html