美文网首页
前端生成Excel解决方案

前端生成Excel解决方案

作者: Mr无愧于心 | 来源:发表于2023-06-12 11:10 被阅读0次
// 代码示例
const xlsx = require('node-xlsx')
 async createExcel(ctx) {
    const postData = ctx.request.body;
    const { data, fileName, start_day, end_day, screenName } = postData;
    const sheetTitMap = {
      'status_type': ['来源', 15],
      'title': ['帖子标题', 50],
      'text': ['帖子正文', 50],
      'created_at': ['帖子日期', 20],
      'user': ['发帖账号', 20],
      'retweet_count': ['转发', 10],
      'reply_count': ['评论', 10],
      'like_count': ['点赞', 15],
      'fav_count': ['收藏', 10],
    }
    const sheetTit = exportField.map(item => {
      return sheetTitMap[item]
    })

    let temp = JSON.parse(JSON.stringify(data));

    const worksheets = [
      {
        name: '表格1', //表哥标题
        data: [
          [`${screenName}简报 ${start_day}-${end_day})`],   //第一行数据
          [`报告生成时间 ${moment().format('YYYY年MM月DD日 HH:mm:ss')}`],  //第二行数据
          ['简介'], // //第三行数据
          sheetTit.map(item => item[0]), ...temp],// 以后的数据包括字段标题及真实数据
        options: { // 表格配置项
          "!cols": sheetTit.map(item => ({ wch: item[1] })), // 设置表格宽度
          '!merges': [ // 合并前三行单元格
            { s: { c: 0, r: 0 }, e: { c: temp.length - 1, r: 0 } }, 
            { s: { c: 0, r: 1 }, e: { c: temp.length - 1, r: 1 } }, 
            { s: { c: 0, r: 2 }, e: { c: temp.length - 1, r: 2 } }
          ],
        }
      }
    ];
    const res = xlsx.build(worksheets); // 生成表格数据

    const upStream = fs.createWriteStream(fileName + '.xlsx'); // 写入表格数据
    upStream.write(res);
    upStream.end();
    upStream.on('close', () => {
      console.log('写入的文件路径是' + upStream.path)
    })
    ctx.body = { // 返回
      result_code: 0,
      url: upStream.path,
      state: 'success',
    };
  }
async downloadFild(ctx) { // 下载并删除原文件
    const fileName = ctx.query.path;
    console.log(fileName)
    ctx.attachment(fileName);
    await send(ctx, fileName);
    setTimeout(() => {
      // 删除文件
      fs.unlink(fileName, (err) => {
        console.log('文件已被删除');
      });
    }, 15000);
  }

附上文档: https://www.npmjs.com/package/node-xlsx

相关文章

网友评论

      本文标题:前端生成Excel解决方案

      本文链接:https://www.haomeiwen.com/subject/cyobedtx.html