调用后台接口实现Excel导出功能以及导出乱码问题解决
实现效果

在导出表格数据的时候,通常分为两种情况
- 页面列表数据导出
- 接口返回数据导出
这里主要介绍接口返回数据导出,关于页面的列表数据导出,请看另一篇:vue3+element表格数据导出
接口返回数据导出,通常需要请求后端接口获取数据,接口返回的数据基本上是乱码的,需要先处理乱码的数据,否则导出来的文件是损坏的,如下

看到这种返回信息,表格数据基本上是已经拿到了,现在只需要做一下数据的处理即可导出表格。
解决方法步骤拆解:
步骤一:解码
在请求接口的位置添加 { responseType: 'blob' } 将信息转码,此处有两种写法:
写法1:
// 导出
export function userTable(params) {
return request({
url: '/users/table',
method: 'get',
params,
responseType: 'blob' // 添加 blob 解决乱码问题,或者 arraybuffer
})
}
写法2:
export const userTable = (params) => axios.get('/users/table',{params},{ responseType: 'blob' })
// 在请求的后面加一行 { responseType: 'blob' }
// 或者 { responseType: 'arraybuffer' }
步骤二:请求数据
// 导出
const getTable = async () => {
// 请求导出接口 获取到后端返回的数据
let list = await getTableInfo(PageInfo);
console.log(list)
};
此处得到的返回结果已经成功编译,打印的结果如图所示:

步骤三:导出表格
步骤一配置完后这里可以直接复制,替换一下请求的接口即可
// 导出完整语法
const getTable = async () => {
// 请求导出接口 获取到后端返回的数据
let list = await getTableInfo(PageInfo);
// content = 导出返回的数据
let content = list;
let data = new Blob([content], {
type: "application/vnd.ms-excel;charset=utf-8"
});
let downloadUrl = window.URL.createObjectURL(data);
let anchor = document.createElement("a");
anchor.href = downloadUrl;
anchor.download = "表格名称.xlsx"; // 表格名称.文件类型
anchor.click();
window.URL.revokeObjectURL(list); // 消除请求接口返回的list数据
};
};
调用后台接口实现Excel导出功能以及导出乱码问题解决的更多相关文章
- thinkjs学习-this.assign传递数据和ajax调用后台接口
在页面加载时,就需要显示在页面上的数据,可以在后台使用this.assign赋值,在前台通过ejs等模板获取:用户点击按钮,或者触发某些事件和后台进行交互时,就需要用到ajax调用后台接口.本文通过一 ...
- Utils--前台调用后台接口工具类
Utils--前台调用后台接口工具类 package com.taotao.manage.httpclient; import java.io.IOException; import java.net ...
- js调用后台接口进行下载
js调用后台接口一定不能用ajax location.href=$$pageContextPath +'downfile/down.do?filname='+row.fileUrl;
- 【Axios】前端页面使用axios调用后台接口
项目基本情况 前端项目是用vue.js做的,前端起的服务URL:http://localhost:8080/ 后端项目是用Node.js做的,后端起的服务URL:http://localhost:30 ...
- 微信小程序 带参调用后台接口 循环渲染页面 wx.request wx:for
test.js 文件里的onLoad function getarticles(p,order,mythis) { wx.request({ url: 'https://ganggouo.cn/ind ...
- 前端调用后端接口下载excel文件的几种方式
今天有一个导出相应数据为excel表的需求.后端的接口返回一个数据流,一开始我用axios(ajax类库)调用接口,返回成功状态200,但是!但是浏览器没有自动下载excel表,当时觉得可能是ajax ...
- 微信小程序调用后台接口+热点新闻滚动展示
1.微信JS文件,发送请求调用: //将返回接口数据,写入Page({data})里面 //获取热点新闻,这个也是写在onload:function(){//code)里面的 wx.request( ...
- (一)微信小程序之模拟调用后台接口踩过的坑
如下图标记的三个点 在调试过程中出现问题,特此记录. 1. 之前在浏览器测试接口习惯省略 http:// ,是因为浏览器默认有一个检测,在你输入的网址前面加http://,如果有就不加. 然而在微信小 ...
- PHP调用API接口实现天气查询功能
天气预报查询接口API,在这里我使用的是国家气象局天气预报接口 使用较多的还有:新浪天气预报接口.百度天气预报接口.google天气接口.Yahoo天气接口等等. 1.查询方式 根据地名查询各城市天气 ...
- 前端调用后台接口下载word文档的两种方法
1传统的ajax虽然能提交到后台,但是返回的数据被解析成json,html,text等字符串,无法响应浏览器下载.就算使用bob模拟下载,数据量大时也不方便 废话不多说:上代码(此处是Layui监听提 ...
随机推荐
- C# Math 中的常用的数学运算
〇.动态库 System.Math.dll 引入动态库 using System.Math; Math 为通用数学函数.对数函数.三角函数等提供常数和静态方法,使用起来非常方便,下边简单列一下常用 ...
- ArcObjects SDK开发 004 如何学习好ArcObjects SDK开发
1.基于Arcobjects SDK可以做什么 基于Arcobjects SDK开发,大部分情况下就是做桌面GIS应用程序.AO写的代码是不能直接在Web服务上运行的,但如果你前端是JS,需要后端处理 ...
- 【大数据-课程】高途-天翼云侯圣文-Day3-实时计算原理解析
〇.老师及课程介绍 一.今日内容 二.实时计算理论解析 1.什么是实时计算 微批处理.流式处理.实时计算 水流和车流的例子 spark streaming就是一种微批处理,水满了才处理,进入下一个地方 ...
- 【Day01】Spring Cloud入门-架构演进、注册中心Nacos、负载均衡Ribbon、服务调用RestTemplate与OpenFeign
〇.课程内容 课程规划 Day1 介绍及应用场景 Day2 组件介绍及 广度 Day3 设计思想.原理和源码 Day4 与容器化的容器(服务迁移.容器编排) 一.业务架构的演进 1.单体架构时代 缺陷 ...
- linux-微服务-jar包部署指令
1 orderservice docker build -t orderservice . docker run -d -p 8084:8084 --name orderservice orderse ...
- Linux 下使用Docker 安装 LNMP环境 超详细
首先在阿里云购买了一台服务器 选择了华南-深圳地区 操作系统选用了 CentOS8.0 64位 1. 初始化账号密码 登陆xshell,开始装Docker 一.安装docker 1.Docker 要求 ...
- Redis基本操作(2)
一.list类型 列表的元素类型为string 按照插⼊顺序排序 增加.修改 例1:在左侧插⼊数据 lpush key value1 value2 ... 例2:在右侧插⼊数据 rpush key v ...
- Hive详解(06) - Hive调优实战
Hive详解(06) - Hive调优实战 执行计划(Explain) 基本语法 EXPLAIN [EXTENDED | DEPENDENCY | AUTHORIZATION] query 案例实操 ...
- 内网渗透-at&schtasks&impacket的使用
内网机器结构 机器账号密码如下: 2008 r2 webserver 域内 web 服务器 本地管理员账号密码 : .\administraotr:admin!@#45 当前机器域用户密码 : god ...
- 传播问卷调查数据不够?自己生成假数据!Python编程一对一教学
问卷调查 Excel 样式 原文件下载 生成代码 序号 直接 range 生成即可. 提交答卷时间 import time time_str = time.strftime('%Y/%m/%d %H: ...