公司项目需要导出excel报表,封装nodejs一个方法,
查找数据库后直接调用这个方法,传入查到的数据和herder表头,th数据
/* 下载excel
* data = [{name:'aa',age:'22'},{name:'bb',age:'60岁'}];
//数据
* header = [{name:'姓名'},{age:'年龄'}];
//th
* downloadExcel(res,header, arr, 'demo');
* */
function
downloadExcel(res,
header, data,
fileName) {
let
content =
'<style>tr,td{border:1px solid gray;text-align: left;}</style><table><tr>';
//可以修饰样式
let field = {},
keys = [];
fileName =
fileName || 'download';
for (let
i = 0,
len = header.length;
i < len; i++) {
for (let
key in header[i]) {
field[key] =
header[i][key];
keys.push(key);
}
}
for (let
key in field) {
content +=
'<td>'+field[key]+'</td>';
}
content +=
'</tr>';
for (var
i = 0,
len = data.length;
i < len; i++) {
content +=
'<tr>';
for (var
j = 0,
len2 = keys.length;
j < len2; j++) {
// if(keys[j] == 'Birth_Date'){
// console.log(data[i][keys[j]])
// }
//这里可以处理数据
content +=
'<td>'+data[i][keys[j]]+'</td>';
}
content +=
'</tr>';
}
content +=
'</table>';
let
buffer = new
Buffer(content);
let
iconv = require('iconv-lite');
let
str = iconv.encode(buffer,
'utf8');
res.set({
'Content-Type':
'application/vnd.ms-execl',
'Content-Disposition':
"attachment;filename=" +
encodeURIComponent(fileName +
'.xls'),
'Pragma':
'no-cache',
'Expires':
0
});
res.send(str);
}