vue通过接口直接下载java生成好的Excel表格案例


Posted in Javascript onOctober 26, 2020

通过浏览器直接访问导出接口就会自动下载创建好的 Excel 表格。但是我们在vue里使用axios请求接口,一般是处理json数据,如果要处理文件流数据,需要做下特殊处理即可直接下载文件。

假如 下载Excel接口为:/apis/downExcel,则请求如下

import axios from 'axios'
 
export const exportFile = params => {
 var param = new URLSearchParams()
 param.append('beginTime', params.beginTime)
 param.append('endTime', params.endTime)
 return axios({
  method: 'post',
  data: param,
  url: '/apis/downExcel',
  responseType: 'blob'
 })
}

下载按钮触发下载方法如下:

downExcel() {
 var params = {
  beginTime: this.times[0],
  endTime: this.times[1]
 };
 exportFile(params).then(
  data => {
   /** 获取生成设置好的文件名 */
   var filename = data.headers["content-disposition"];
   filename = filename.split("=")[1];
   filename = decodeURIComponent(filename, "utf-8");
   /** 接收文件流 */
   const blob = new Blob([data.data]);
   let url = URL.createObjectURL(blob);
   /** 模拟浏览器操作Document,并模拟下载动作 */
   let link = document.createElement("a");
   link.style.display = "none";
   link.href = url;
   link.setAttribute("download", filename);
   document.body.appendChild(link);
   link.click();
  },
  error => {
   console.log(error);
   this.$message.error("下载异常,请稍后再试");
  });
}

这样就可以在vue项目中完整下载Excel接口,当然vue也有生成Excel的插件,接收后台的json数据然后在前端生成并下载。

补充知识:Vue实现通过后端接口导出Excel表格

需求:后端提供下载接口,返回二进制文件流,前端导出为xlsx格式的Excel表格

实现:

1、按钮调用下载接口

2、new Blob导出

vue通过接口直接下载java生成好的Excel表格案例

vue通过接口直接下载java生成好的Excel表格案例

PS:

1、第一步请求接口时,注意要设置请求responseType为blob类型,否则下载后,显示格式错误,无法打开

2、new Blob请求是,注意修改type类型为application/vnd.ms-excel

vue通过接口直接下载java生成好的Excel表格案例

vue通过接口直接下载java生成好的Excel表格案例

以上这篇vue通过接口直接下载java生成好的Excel表格案例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Ajax::prototype 源码解读
Jan 22 Javascript
JavaScript 组件之旅(三):用 Ant 构建组件
Oct 28 Javascript
jQuery 行背景颜色的交替显示(隔行变色)实现代码
Dec 13 Javascript
JS取得绝对路径的实现代码
Jan 16 Javascript
javascript获取select值的方法分析
Jul 02 Javascript
函数window.open实现关闭所有的子窗口
Aug 03 Javascript
浅谈JavaScript中面向对象的的深拷贝和浅拷贝
Aug 01 Javascript
Makefile/cmake/node-gyp中区分判断不同平台的方法
Dec 18 Javascript
JavaScript ES6箭头函数使用指南
Dec 30 Javascript
ES6常用小技巧总结【去重、交换、合并、反转、迭代、计算等】
Dec 21 Javascript
浅谈javascript如何获取文件后缀名
Aug 07 Javascript
JavaScript浅层克隆与深度克隆示例详解
Sep 01 Javascript
基于elementUI竖向表格、和并列的案例
Oct 26 #Javascript
原生js实现贪吃蛇游戏
Oct 26 #Javascript
JavaScript实现五子棋小游戏
Oct 26 #Javascript
详解vue3.0 的 Composition API 的一种使用方法
Oct 26 #Javascript
vue3.0 加载json的方法(非ajax)
Oct 26 #Javascript
Vue+Element自定义纵向表格表头教程
Oct 26 #Javascript
vue3.0 的 Composition API 的使用示例
Oct 26 #Javascript
You might like
PHP把小数转成整数3种方法
2014/06/30 PHP
php使用str_replace替换多维数组的实现方法分析
2017/06/15 PHP
PHP实现的折半查找算法示例
2017/12/19 PHP
PHP排序算法之希尔排序(Shell Sort)实例分析
2018/04/20 PHP
php使用event扩展的io复用测试的示例
2020/10/20 PHP
php中array_fill函数的实例用法
2021/03/02 PHP
抽出www.templatemonster.com的鼠标悬停加载大图模板的代码
2007/07/11 Javascript
jquery控制select的text/value值为选中状态
2014/06/03 Javascript
使用GruntJS构建Web程序之安装篇
2014/06/04 Javascript
javascript获取元素离文档各边距离的方法
2015/02/13 Javascript
最流行的Node.js精简型和全栈型开发框架介绍
2015/02/26 Javascript
JavaScript原生对象之String对象的属性和方法详解
2015/03/13 Javascript
jQuery中closest和parents的区别分析
2015/05/07 Javascript
JavaScript用select实现日期控件
2015/07/17 Javascript
JS+CSS实现鼠标滑过时动态翻滚的导航条效果
2015/09/24 Javascript
JS实现可自定义大小,可双击关闭的弹出层效果
2015/10/16 Javascript
js实现模拟银行卡账号输入显示效果
2015/11/18 Javascript
JavaScript中对象的不同创建方法
2016/08/12 Javascript
Javascript数组中push方法用法分析
2016/10/31 Javascript
Angular异步变同步处理方法
2018/08/13 Javascript
小程序组件之仿微信通讯录的实现代码
2018/09/12 Javascript
vue 解除鼠标的监听事件的方法
2019/11/13 Javascript
Node.js API详解之 readline模块用法详解
2020/05/22 Javascript
vue实现移动端返回顶部
2020/10/12 Javascript
jquery实现穿梭框功能
2021/01/19 jQuery
[25:45]2018DOTA2亚洲邀请赛4.5SOLO赛 Sylar vs Paparazi
2018/04/06 DOTA
Python实现同时兼容老版和新版Socket协议的一个简单WebSocket服务器
2014/06/04 Python
Django项目在pycharm新建的步骤方法
2021/03/02 Python
CSS3 网页下拉菜单代码解释 中文翻译
2010/02/27 HTML / CSS
Rowdy Gentleman服装和配饰:美好时光
2019/09/24 全球购物
联想智利官方网站:Lenovo Chile
2020/06/03 全球购物
设计总监岗位职责
2013/12/07 职场文书
师范学院美术系毕业生自我鉴定
2014/01/29 职场文书
群众路线党员个人整改措施
2014/10/27 职场文书
家长意见书
2015/06/04 职场文书
postgreSQL数据库基础知识介绍
2022/04/12 PostgreSQL