前端导出EXCEL表格#记录

记录以下工作中用过的前端导出方法: 

<el-button size="small" type="primary" @click="handleAddEditTable('获取export列表')"  :loading="buttoing">导出</el-button>

<a :href="downUrl" :download="(params.name || '') + params.time + '.xls'" ref="down_url"></a>

<div id="exportIdTable">
    <el-table :data="exportTableData" style="width: 100%" :header-cell-style="{ 'text-align': 'center' }" :cell-style="{ 'text-align': 'center' }">
    ...
    ...
    ...
    </el-table>
</div>
import moment from 'moment'
export default {
  data(){
    return {
        downUrl: '',
        buttoing: false,
        exportTableData:[],
        params:{
           name:'xxxx表',//打印名称
           time:moment().format('YYYY-MM-DD'),
        },   
    }
  },
  methods:{
    handleAddEditTable(type, value) {
      switch(type) {
        case '获取export列表':
            ...//获取需要导出的数据
            this.buttoing = true
            setTimeout(() => {
               this.handleAddEditTable('导出')
            }, 500)
        break
        case '导出' :
            this.buttoing = true
            let linkName
            let worksheet = linkName ? linkName : 'sheet'
            let uri = 'data:application/vnd.ms-excel;base64,'
            let template = `
                <html xmlns:o="urn:schemas-microsoft-com:office:office" 
                 xmlns:x="urn:schemas-microsoft-com:office:excel" 
                 xmlns="http://www.w3.org/TR/REC-html40">
                 <head><meta charset="UTF-8"><!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet>
                 <x:Name>${worksheet}</x:Name>
                 <x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet>
                 </x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]-->
                 </head><body>${document.getElementById('exportIdTable').innerHTML}</body></html>`
             let base64 = function (s) { return window.btoa(unescape(encodeURIComponent(s))) }
             this.downUrl = uri + base64(template)
             setTimeout(() => {
                this.$refs['down_url'].click()
                this.buttoing = false
              }, 500)
        break
      }
    }
  }
}

以下是导出成功的样子:

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值