在vue.js中导出Excel表格 几种方法(实测有用)

1、原来使用这个方法 (2020-10-23更新最近这个方法不知道为什么引入Blob.js报错,暂时我把这个方法废弃了,后面会添加其他方法可能跟自己配置的问题)

npm install -S file-saver xlsx
npm install -D script-loader

下载Blob.js和Export2Excel.js,在src目录下新建vendor文件夹,里面放入Blob.js和Export2Excel.js两个JS文件

 

这个两个js文件文章最后

 

 

<el-button
                    type="primary"
                    @click="downlaodHandler"
                    :loading="downloadLoading"
                  >导出Excel表</el-button>
//导出excel
    async downlaodHandler() {
      let listData = await this.getTabaleList(); //拿到后台返回的数据
      this.downloadLoading = true;
      require.ensure([], () => {
        const { export_json_to_excel } = require("@/vendor/Export2Excel");
        const tHeader = [
          "序号",
          "姓名",
          "性别",
          "上报类型",
          "上报时间",
          "职称",
          "手机号码",
          "学院",
          "规划表录入情况",
          "规划完成情况",
          "规划年份",
          "职业更新情况",
          "学院审核",
          "学校审核"
        ];
        const filterVal = [
          "id",
          "user_name",
          "gender",
          "ctype",
          "report_time",
          "job",
          "mobile",
          "org_name",
          "plan",
          "finished_rate",
          "plan_year",
          "updata",
          "college_re",
          "school_re"
        ];
        const data = this.formatJson(filterVal, listData);
        export_json_to_excel(tHeader, data, "职业规划统计表");
        this.downloadLoading = false;
      });
    },
    formatJson(filterVal, jsonData) {
      return jsonData.map(v =>
        filterVal.map(j => {
          if (j === "ctype") {
            return this.evaluation[v[j]].name;
          } else if (j === "finished_rate") {
            return v[j] + "%";
          } else if (j === "gender") {
            return v[j] === "1" ? "男" : "女";
          } else {
            return v[j];
          }
        })
      );
    },

 

2、使用a标签

<template>
  <section class="chart-container">
    <a
      href="javascript:;"
      id="download"
      style="background-color:#409EFF;color: #fff;padding: 12px 10px!important;margin-left: 10px!important;border-radius:4px "
      @click="download()"
      download="download.csv"
    >导出数据</a>
  </section>
</template>
<script>



export default {
  data() {
    return {
     
      tableData: [
        { date: "2011-10-02", name: "沈伟", address: "湖南省 邵阳市 邵东县" },
        { date: "1998-04-13", name: "萧娟", address: "吉林省 吉林市 舒兰市" },
        { date: "2011-03-01", name: "戴娜", address: "福建省 南平市 光泽县" },
        { date: "1980-09-16", name: "于洋", address: "台湾 宜兰县 三星乡" },
        { date: "2007-07-23", name: "陈秀兰", address: "陕西省 榆林市 靖边县" },
        { date: "2003-02-05", name: "汪秀英", address: "北京 北京市 昌平区" },
        { date: "2009-02-15", name: "袁敏", address: "贵州省 六盘水市 盘县" },
        { date: "2019-11-06", name: "黄艳", address: "山东省 聊城市 东昌府区" },
        { date: "1995-06-09", name: "万刚", address: "湖北省 咸宁市 通城县" },
        { date: "1980-10-23", name: "黎桂英", address: "广东省 珠海市 其它区" }
      ]
    };
  },
  
  created() {
    
  },
  methods: {
   
    // 导出
    download: function() {
      console.log("xiazai");
      var obj = document.getElementById("download");
      var str = "姓名,出生日期,地址\n";
      for (var i = 0; i < this.tableData.length; i++) {
        var item = this.tableData[i];
        str += item.name + "," + item.date + "," + item.address;
        str += "\n";
      }
      console.log(obj);
      str = encodeURIComponent(str);
      console.log(str);
      obj.href = "data:text/csv;charset=utf-8,\ufeff" + str;
      obj.download = "download.csv";
    }
  },
 
};
</script>
<style>

</style>

3.使用qf-export库导出表格excel

.1、安装 

npm install qf-export-excel

2、引入

const qee = require("qf-export-excel")
或者
import qee from "qf-export-excel"

3、绑定事件

<el-button type="primary"

                   @click="downlaodHandler">导出Excel表</el-button>

4、参数

这个库是个函数方法接收3个参数,分别是titleList dataSource fileName

titleList:这是标题的数据来源,是一个数组,每个值是个对象,对象中有两个属性,一个是title对应的是表格的表头文字,key是对应导出数据的key

 downlaodHandler () {
      var titleList = [
        { title: 'id', key: "id" },
        { title: '地址', key: "address" },
        { title: '日期', key: 'date' },
        { title: '金额', key: 'money' },
        { title: '状态', key: 'state' },
      ]
      var dataSource = this.tableData
      var fileName = "表格"
      qee(titleList, dataSource, fileName)
    },

fileName就是一个文件名 不传默认为'数据'文件名 

this.tableData= [
{address: "广东省东莞市长安镇"
date: "2019-11-1"
id: 1
money: 123
name: "张三"
state: "成功"},
]

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值