美文网首页
vue+element实现一个excel表格下载的功能

vue+element实现一个excel表格下载的功能

作者: 祈澈菇凉 | 来源:发表于2020-08-31 15:20 被阅读0次

    最近在使用vue-element-admin这个后台管理框架开源模板在做一个管理后台,使用起来其实还挺方便的,大部分的组件源码里面都已经写好了,用的时候只需要把源码拿出来修改修改,也就成了。

    这里记录一下开发过程中遇到的一些功能。


    资料相关

    vue-element-admin

    推荐指数:star:55k
    Github 地址:https://github.com/PanJiaChen/vue-element-admin
    Demo体验:https://panjiachen.github.io/vue-element-admin/#/dashboard

    一个基于 vue2.0 和 Eelement 的控制面板 UI 框架,这是使用vue技术栈开发的前端程序员的首选管理系统模板,模板以及非常的成熟了,并且有相关的社区和维护人员,开发时候遇到问题也不要慌。


    今天记录一个表格下载的功能

    在demo给到的源码里面,可以看到也是有表格下载的功能的,在这个基础上进行一些修改,大概是这个样子,点击下载按钮,将页面上显示的表格下载出来即可。即调用后端给到的接口,直接从后端服务器上下载表格。后端会返回一个二进制文件给到我这边。

    参考代码:
    index.vue

    <template>
      <div class="app-container">
       <el-button  type="primary"  icon="el-icon-download" @click="handleDownload">
            导出基础表格
       </el-button>
      </div>
    </template>
    <script>
    import { exportBaseInfoVIP} from '@/api/exportExcel'
    export default {
      data() {
        return { 
          filename: '',
          bookType: 'xlsx'
        };
      },
      computed: {
    
      },
      methods: {
        downloadExcel(res, fileName = '未命名.xls') {
          debugger;
          const a = document.createElement('a')
          const blob = new Blob([res.data], { type: 'application/vnd.ms-excel' })
          const url = URL.createObjectURL(blob)
          a.setAttribute('href', url)
          a.setAttribute('download', fileName)
          a.click()
        },
        async handleDownload() {
          const res = await exportBaseInfoVIP()
          this.downloadExcel(res, '会员基础信息.xls')
        },
      }
    };
    </script>
    
    
    

    api

    import request from '@/utils/request'
    //基础信息
    export const exportBaseInfoVIP = () => {
      return request({
        url: '/statistics/childrenUser/export',
        responseType:"blob",
        method: 'get'
      })
    }
    
    

    request.js


     if (response.headers['content-type'] === "application/x-msdownload") {
          let disposition = decodeURI(response.headers['content-disposition']);
          let fileName = disposition.split('=')[1];
          const a = document.createElement('a')
          const blob = new Blob([res], { type: 'application/vnd.ms-excel' })
          const url = URL.createObjectURL(blob)
          a.setAttribute('href', url)
          a.setAttribute('download', fileName)
          a.click()
          return
        }
    

    效果如下:
    点击按钮,即可下载excel表格


    注意:本地可能会出现下载文件名称为undefined的问题,部署在服务器上,即可获得excel文件名称。

    相关文章

      网友评论

          本文标题:vue+element实现一个excel表格下载的功能

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