node文件系统以及导出excel模块

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;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

卤鸽子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值