一键下载XLSX文件

232 阅读1分钟

前言

如果觉得本文有帮助 记得点赞三连哦 十分感谢!

1.getDescription方法

注意:首先封装一个方法在Util.js文件中

import XLSX from 'xlsx'
export default {
  getIdFrom:function(o){
    let id = null;
    if(o != null && o.hasOwnProperty('description')){
      id = o.id
    } else {
      id = o
    }
    return id
  },
  getDescription:function(key,list){
    let id = this.getIdFrom(key);
    for(let key in list){
      if(list[key] != null && list[key].id == id){
        return list[key].description || list[key].name || '-'
      }
    }
    return ''
  },
  
}

2.使用方法

<template>
  <el-button @click="Download()">一键下载</el-button>
</template>
<script>
  import * as XLSX from 'xlsx'; //使用前先导入xlsx文件
  export default{
    methods:{
      toDownload(){
        this.downloadFilepro(res.data.header,res.data.list);
      },
      downloadFilepro(listHeader,data){
        let tableList = [];
        data.forEach((item)=>{
          const row = {};
          for(const key in listHeader){
            swith(key){
              case 'deal_user_id':
                row[listHeader[key]] = this.$util.getDescription(item[key],this.adminAll);
                breack;
              case 'tagging_user_id':
                row[listHeader[key]] = this.$util.getDescription(item[key], this.adminAll);
                breack;
              default:
                row[listHeader[key]] = item[key];
                breack;
            }
          }
          tableList.push(row);
        });
        let header = { header:[] };
        for(const key in listHeader){
          header.header.push(listHeader[key]);
        }
        let ws = XLSX.utils.json_to_sheet(tableList,header);
        ws['!cols']=[{ wpx: 100 },{ wpx: 100 },{ wpx: 100 },]; //设置xlsx表格宽度
        var sheetName = 'sheet1';
        var workbook = {
          SheetNames:[sheetName],
          Sheets:{},
        };
        workbook.Sheets[sheetName] = ws;
        var wopts = {
          bookType:'xlsx', // 要生成的文件类型
          bookSST:true,// 是否生成Shared String Table,官方解释是,如果开启生成速度会下降,但在低版本IOS设备上有更好的兼容性
          type:'binary',
        };
        XLSX.write(workbook,wopts);
        XLSX.writeFile(workbook,`下载.xlsx`);
      }
    }
  }
</script>