node文件流excel导出
程序员文章站
2022-05-30 15:13:14
...
- 文件流导出excel
重点:Content-Disposition 文件名是中文显示
const nodeExcel = require('node-xlsx');
const urlencode = require('urlencode');
function exportList(ctx, config, listData, excelName) {
let excelConfig = [];
excelConfig.push(config.map(item => {
return item.title
}))
listData.forEach(list => {
excelConfig.push(config.map(item => {
const value = list[item.name];
// 不一定要有value, 因为可能是*组合的value
return item.format && item.format(value, list) || value;
}))
})
let buffer = nodeExcel.build([{name: excelName, data: excelConfig}]);
ctx.set('Content-Type', 'application/octet-stream');
// ctx.request.headers['user-agent']
let name = urlencode(excelName + '_' + (+new Date()) + '.xlsx', "utf-8");
ctx.set("Content-Disposition", "attachment; filename* = UTF-8''"+name);
// ctx.set("Content-Disposition", "attachment; filename="+ (+new Date()) + '.xlsx');
ctx.body = buffer;
}
module.exports = {
exportList: exportList
}
// config 格式
const config = [{
name: 'userid',
title: '用户ID',
},{
name: 'up_time',
title: '状态时间',
format: function(value) {
return value.replace(/\.\d+/, '');
}
},{
name: 'appl_status_byhand',
// name: 'appl_status_byhand_desc',
title: '人审状态',
format: function(value) {
return value && manualStatus[value] && manualStatus[value].text || '-'
}
},{
name: 'available_quota/credit_quota',
title: '剩余额度/授信额度',
format: function(value, item) {
return `¥${item.available_quota/100 || 0}/¥${item.credit_quota/100 || 0}`
}
},{
name: 'user_type_desc',
title: '名单类型',
format: function(value, item) {
if(item.user_type) {
item.user_type.forEach(user => {
userTypeText.push(user_type_define[user] || '-');
});
return userTypeText.join('|');
} else {
return '';
}
}
}]
推荐阅读
-
在WEB页面上将EXCEL文件导入、导出到数据库中_PHP
-
php导出数据到excel文件 php导出excel乱码问题
-
Python导出数据到Excel可读取的CSV文件的方法
-
phpexcel导出excel文件,用IE8无法下载,另存为对话框一闪而过
-
phpexcel导出excel文件输出求和问题
-
Node.js fs模块(文件模块)创建、删除目录(文件)读取写入文件流的方法
-
mysql 导出select语句结果到excel文件遇到问题及解决方法
-
C#导入导出EXCEL文件的代码实例
-
mysql 导出select语句结果到excel文件遇到问题及解决方法
-
C# Winform实现导入和导出Excel文件