Node导出excel小窍门
程序员文章站
2022-05-30 15:04:11
...
这边介绍两种方式
下载在项目中
通过浏览器下载(重点)
在项目中
第一步: 引入
const fs = require("fs");
const path = require("path");
const nodeExcel = require('excel-export');
let conf = {};
var fileName = “xxxx”+ ".xlsx";
conf.name = “xxx”;//表格名
var alldata = [];
alldata.push("数据库查询的值");
//决定列名和类型
conf.cols = [{
caption: 'Id',
type: 'string',
width: 20
}, {
caption: '累计流量(m³)',
type: 'string',
width: 20
}];
conf.rows = alldata;//填充数据
var result = nodeExcel.execute(conf); //数据格式转换
第一种基本上没什么问题 也没什么需要注意的事项
fs.access(path.join(__dirname, fileName), err => {
if (err) {
//文件不存在
//将buffer文件生成excel表格
//生成表格
fs.writeFile(path.join(__dirname, fileName), result, 'binary', function (err) {
if (err) {
console.log('写入错误');
}
resolve(result)
})
} else {
//文件存在,删除文件
fs.unlink(path.join(__dirname, fileName), err => {
//生成表格
fs.writeFile(path.join(__dirname, fileName), result, 'binary', function (err) {
if (err) {
console.log('写入错误');
}
resolve(result)
})
})
}
})
第二种浏览器下载
注意点1 文件名称如果带中文一定要转码
注意点2 重中之重 只能用get请求 用ajax访问不管你是get 或者 post请求 调试你会怀疑人生没有任何的报错
let res =new Buffer(result,'binary');
ctx.response.set('Content-Type', 'application/octet-stream');
name = urlencode(station[0].station_name + " " + station[0].identifier + " " + Year + "-" + Month + "-" + Day + '.xlsx', "utf-8");
ctx.response.set("Content-Disposition", "attachment; filename* = UTF-8''"+ name);
ctx.body = res;
前端访问
var url = '';
window.location.replace(url);