• 之前写过文件流导出excel,这次直接把上次的代码拿过来复制粘贴,但是导出的表格里面没有数据,只显示undefined。
  • 这是之前的代码
// api接口页面

// excel导出接口
export function exportList(query) {
return request({
url: '/api/xxx/xxx',
method: 'get',
params: query,
responseType:'blob' // 重点代码
})
}
// vue页面

 methods: {
// 导出excel表格
exportExcel() {
exportList()
.then(res => {
let data = res.data; // 这里后端对文件流做了一层封装,将data指向res.data即可
if (!data) {
return;
}
let url = window.URL.createObjectURL(new Blob([data]));
let a = document.createElement("a");
a.style.display = "none";
a.href = url;
a.setAttribute("download", "excel.xls");
document.body.appendChild(a);
a.click(); //执行下载
window.URL.revokeObjectURL(a.href); //释放url
document.body.removeChild(a); //释放标签
})
.catch(error => {
console.log(error);
});
}
}
  • 后来打印发现了问题

  • 上图是打印的结果,发现是blob的size不一样
  • 解决办法,里面添加'charset=utf-8'
  • 上代码
 // 导出excel表格
exportExcel() {
exportList()
.then((res) => {
var content = res;
var data = new Blob([content],{type:"application/vnd.ms-excel;charset=utf-8"}); // 重点代码
var downloadUrl = window.URL.createObjectURL(data);
var a = document.createElement("a");
a.href = downloadUrl;
a.setAttribute("download", "excel.xls");
a.click();
window.URL.revokeObjectURL(data);
})
.catch((error) => {
console.log(error);
});
},
  • 其实我还在 exportList()里面传了参数,为了能简单易懂,传参部分就删掉了-

vue 项目中,后端返回文件流,导出excel的更多相关文章

  1. vue-cli构建的vue项目中引入stylus文件

    在写基于vue-cli的vue项目时,如果直接引入styl文件,会报错,需要安装stylus.stylus-loader依赖以及别名配置. 1.下载安装stylus.stylus-loader,推荐使 ...

  2. 在vue项目中的js文件里使用vue实例

    参考的网址:https://blog.csdn.net/weixin_34353714/article/details/86958742 不为其他,就为了记录一下,方便以后查看: 第一种方法: 1.首 ...

  3. Vue——项目中接口返回值为函数回调,回调函数定义方法(Vue的方法给原生调用)

    在接口调用中,有时会返回给我们一个函数回调,来自动执行我们在前端定义好的某个函数(多出现于通过回调的方式传递某个数值).在原生项目中,我们只要提供一下这个方法就好了,通过函数回调会自动执行.问题就出现 ...

  4. vue项目中操作PDF文件

    以前从来没接触过前端要求显示PDF文件,一时之间有点懵逼,不知从哪下手啊... 无奈之下,去找度娘,方法还不少,iframe  embed  object这些标签就可以, 可是拿过来做个demo一试, ...

  5. 前端接收后端文件流导出excel文档遇到的问题

    先上代码: Vue.prototype.download = function(oUrl, filename) { this.axios .get(oUrl, { responseType: 'arr ...

  6. Vue项目中引入外部文件(css、js、less)

    例子中css文件采用bootstrap.css,js文件采用jQuery,less文件用less.less(自定义文件) 步骤一:安装webpack cnpm install webpack -g 步 ...

  7. Vue 项目中对路由文件进行拆分(解构的方法)

    项目需求场景: 在开发项目过程中,在项目过于庞大,路由信息非常多的情况下,如果将路由配置信息都放在一个文件里面,那么这个JS是不方便维护的, 那么,这个时候需要我们把这个庞大的路由文件,根据项目功能分 ...

  8. vue 后台获取文件流导出excel文件

    let params = { compStartTm: Date.parse(this.searchForm.compStartTm) / 1000, compEndTm: Date.parse(th ...

  9. asp.net MVC 文件流导出Excel

    <form id="FormEsExcel" action="/**/ExportEsExcelData" method="post" ...

  10. Ajax异步请求返回文件流(eg:导出文件时,直接将导出数据用文件流的形式返回客户端供客户下载)

    在异步请求中要返回文件流,不能使用JQuery,因为$.ajax,$.post 不支持返回二进制文件流的类型,可以看到下图,dataType只支持xml,json,script,html这几种格式,没 ...

随机推荐

  1. KingbaseES 开启事务提交跟踪

    KingbaseESV8R6有个参数 track_commit_timestamp,用来开启跟踪事务提交的时间戳. 配置 编辑kingbase.conf,添加配置如下: track_commit_ti ...

  2. CentOS7_K8S安装指南

    https://www.cnblogs.com/liu-shuai/articles/12177298.html 不能完全按照他来装,因为他装的是15.5的,15.5 有部分组件在阿里云镜像上没有,导 ...

  3. 【读书笔记】C#高级编程 第十三章 异步编程

    (一)异步编程的重要性 使用异步编程,方法调用是在后台运行(通常在线程或任务的帮助下),并不会阻塞调用线程.有3中不同的异步编程模式:异步模式.基于事件的异步模式和新增加的基于任务的异步模式(TAP, ...

  4. Go语言学习的坑爹历程

    鄙人暑期实习,需要用Go语言进行编程 在go语言中,结构体的定义只支持变量的声明,成员函数是采用"接口方法"来实现的 留一个成员定义的模板在此 package main impor ...

  5. 水晶报表导出pdf文件

    /// <summary> /// 导出pdf文件 /// </summary> /// <param name="mjsReport">报表文 ...

  6. python自动更新pom文件

    前言 项目越来越多,版本管理越来越麻烦,在项目上我使用 maven version 来进行版本管理.主要还是在分布式项目中模块众多的场景中使用,毕竟各个模块对外的版本需要保持统一. 关于这个插件如何使 ...

  7. sql 中HAVING函数

    select * from <表名> group by<过滤的数据> having <晒选的列名>=<条件> 例 select * from villa ...

  8. 使用EF Core更新与修改生产数据库

    使用EF Core的Code First,在设计阶段,直接使用Database.EnsureCreated()和EnsureDeleted()可以快速删除.更新最新的数据结构.由于没有什么数据,删除的 ...

  9. doecker---制作DockerFile并上传Hub

    一.DockerFile基础知识 FROM #基础镜像,一切从这里开始构建 MAINTAINER #镜像是谁写的,姓名+邮箱 RUN #镜像构建的时候需要运行的命令 ADD #添加内容,步骤,tomc ...

  10. 一键上手时下最火AI作画工具

    摘要:在华为云ModelArts上, 无需考虑计算资源.环境的搭建,就算不懂代码,也能按照教程案例,通过Stable Diffusion成为艺术大师. 本文分享自华为云社区<跟着华为云Model ...