前端生成Excel解決方案

// 代碼示例
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': ['帖子標(biāo)題', 50],
      'text': ['帖子正文', 50],
      'created_at': ['帖子日期', 20],
      'user': ['發(fā)帖賬號(hào)', 20],
      'retweet_count': ['轉(zhuǎn)發(fā)', 10],
      'reply_count': ['評(píng)論', 10],
      'like_count': ['點(diǎn)贊', 15],
      'fav_count': ['收藏', 10],
    }
    const sheetTit = exportField.map(item => {
      return sheetTitMap[item]
    })

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

    const worksheets = [
      {
        name: '表格1', //表哥標(biāo)題
        data: [
          [`${screenName}簡報(bào) ${start_day}-${end_day})`],   //第一行數(shù)據(jù)
          [`報(bào)告生成時(shí)間 ${moment().format('YYYY年MM月DD日 HH:mm:ss')}`],  //第二行數(shù)據(jù)
          ['簡介'], // //第三行數(shù)據(jù)
          sheetTit.map(item => item[0]), ...temp],// 以后的數(shù)據(jù)包括字段標(biāo)題及真實(shí)數(shù)據(jù)
        options: { // 表格配置項(xiàng)
          "!cols": sheetTit.map(item => ({ wch: item[1] })), // 設(shè)置表格寬度
          '!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); // 生成表格數(shù)據(jù)

    const upStream = fs.createWriteStream(fileName + '.xlsx'); // 寫入表格數(shù)據(jù)
    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

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容