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

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

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


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


资料相关


vue-element-admin

推荐指数:star:55k

一个基于 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文件名称。

相关文章
|
2天前
|
JavaScript
vue消息订阅与发布
vue消息订阅与发布
|
1天前
|
JavaScript
vue尚品汇商城项目-day07【vue插件-50.(了解)表单校验插件】
vue尚品汇商城项目-day07【vue插件-50.(了解)表单校验插件】
10 4
|
1天前
|
JavaScript
vue尚品汇商城项目-day07【51.路由懒加载】
vue尚品汇商城项目-day07【51.路由懒加载】
11 4
|
1天前
|
JavaScript
vue尚品汇商城项目-day07【vue插件-54.(了解)生成二维码插件】
vue尚品汇商城项目-day07【vue插件-54.(了解)生成二维码插件】
7 2
|
5月前
|
JavaScript API
【vue实战项目】通用管理系统:api封装、404页
【vue实战项目】通用管理系统:api封装、404页
68 3
|
5月前
|
人工智能 JavaScript 前端开发
毕设项目-基于Springboot和Vue实现蛋糕商城系统(三)
毕设项目-基于Springboot和Vue实现蛋糕商城系统
|
5月前
|
JavaScript Java 关系型数据库
毕设项目-基于Springboot和Vue实现蛋糕商城系统(一)
毕设项目-基于Springboot和Vue实现蛋糕商城系统
153 0
|
5月前
|
JavaScript 前端开发 API
Vue3+Vite+TypeScript常用项目模块详解
现在无论gitee还是github,越来越多的前端开源项目采用Vue3+Vite+TypeScript+Pinia+Elementplus+axios+Sass(css预编译语言等),其中还有各种项目配置比如eslint 校验代码工具配置等等,而我们想要进行前端项目的二次开发,就必须了解会使用这些东西,所以作者写了这篇文章进行简单的介绍。
131 0
Vue3+Vite+TypeScript常用项目模块详解
|
5月前
|
设计模式 JavaScript
探索 Vue Mixin 的世界:如何轻松复用代码并提高项目性能(上)
探索 Vue Mixin 的世界:如何轻松复用代码并提高项目性能(上)
探索 Vue Mixin 的世界:如何轻松复用代码并提高项目性能(上)
|
5月前
|
前端开发 JavaScript Java
毕业设计|基于SpringBoot+Vue的科研课题项目管理系统
毕业设计|基于SpringBoot+Vue的科研课题项目管理系统
173 1