var fs = require('fs');
var express = require('express');
var multer = require('multer');
var path = require('path');
var router = express.Router();
var xlsx = require('node-xlsx');
var axios = require('axios');
/*临时文件*/
var upload = multer({
dest: 'upload_tmp/'
});
/*文件上传*/
router.post('/upload', upload.any(), function (req, res, next) {
var des_file = path.resolve('./file', req.files[0].originalname);
fs.readFile(req.files[0].path, function (err, data) {
fs.writeFile(des_file, data, function (err) {
if (err) {
console.log(err);
} else {
response = {
message: 'File uploaded successfully',
filename: 'file/' + req.files[0].originalname
};
res.end(JSON.stringify(response));
}
});
});
});
/*导出excel*/
//导出execl表
/*测试*/
router.get('/getlist', async function (req, res) {
//res.header("Access-Control-Allow-Origin", "*");
let data = []
let url = "***"
await axios({
url: url,
method: 'get',
headers: {
'access-token': '***',
'user-id': '***'
},
// data: {
// page: 1,
// pageSize: 99999
// }
}).then(ress => {
console.log(ress.data.data.items)
data = ress.data.data
});
var datas = [];
var title = ['名称', 'ID', 'itemValue'] //这是第一行 俗称列名
// datas.push(title);
data.items.forEach((element) => {
var arrInner = [];
arrInner.push(element.itemName);
arrInner.push(element.id);
arrInner.push(element.itemValue);
//arrInner.push(element.remark);
datas.push(arrInner); //data中添加的要是数组,可以将对象的值分解添加进数组,例如:['1','name','上海']
});
const options = {
'!cols': [{
wpx: 241
}, //1-变更名称
{
wpx: 300
}, //2-变更描述
{
wpx: 275
}, //3-计划上线测试时间
// {
// wpx: 300
// }, //4-计划上线时间
],
}
var name = data.name;
var buffer = xlsx.build([{
name: '表1',
data: [title, ...datas]
}], options);
/*本地写入xlsx文件以便于下载*/
await fs.writeFileSync('./web/' + name + '.xlsx', buffer, {
'flag': 'w'
});
/*下载xlsx文件,成功后删除缓存文件*/
await res.download('./web/' + name + '.xlsx', function (err) {
if (err) {
console.log(err)
} else {
fs.unlink('./web/' + name + '.xlsx', function (err) {
if (err) {
return console.error(err);
}
console.log("文件删除成功!");
});
}
})
})
module.exports = router;
node文件系统以及导出excel模块
最新推荐文章于 2024-06-26 22:07:25 发布