• 之前写过文件流导出excel,这次直接把上次的代码拿过来复制粘贴,但是导出的表格里面没有数据,只显示undefined。
  • 这是之前的代码
  1. // api接口页面
  2. // excel导出接口
  3. export function exportList(query) {
  4. return request({
  5. url: '/api/xxx/xxx',
  6. method: 'get',
  7. params: query,
  8. responseType:'blob' // 重点代码
  9. })
  10. }
  1. // vue页面
  2. methods: {
  3. // 导出excel表格
  4. exportExcel() {
  5. exportList()
  6. .then(res => {
  7. let data = res.data; // 这里后端对文件流做了一层封装,将data指向res.data即可
  8. if (!data) {
  9. return;
  10. }
  11. let url = window.URL.createObjectURL(new Blob([data]));
  12. let a = document.createElement("a");
  13. a.style.display = "none";
  14. a.href = url;
  15. a.setAttribute("download", "excel.xls");
  16. document.body.appendChild(a);
  17. a.click(); //执行下载
  18. window.URL.revokeObjectURL(a.href); //释放url
  19. document.body.removeChild(a); //释放标签
  20. })
  21. .catch(error => {
  22. console.log(error);
  23. });
  24. }
  25. }
  • 后来打印发现了问题

  • 上图是打印的结果,发现是blob的size不一样
  • 解决办法,里面添加'charset=utf-8'
  • 上代码
  1. // 导出excel表格
  2. exportExcel() {
  3. exportList()
  4. .then((res) => {
  5. var content = res;
  6. var data = new Blob([content],{type:"application/vnd.ms-excel;charset=utf-8"}); // 重点代码
  7. var downloadUrl = window.URL.createObjectURL(data);
  8. var a = document.createElement("a");
  9. a.href = downloadUrl;
  10. a.setAttribute("download", "excel.xls");
  11. a.click();
  12. window.URL.revokeObjectURL(data);
  13. })
  14. .catch((error) => {
  15. console.log(error);
  16. });
  17. },
  • 其实我还在 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. Nginx location总结

    最近操作Nginx.conf 的location部分,发现了一个巨坑,在这做个记录 当我用一下配置时 location = / { root /usr/share/nginx/html; index ...

  2. 理解virt、res、shr之间的关系(linux系统篇)

    前言 想必在linux上写过程序的同学都有分析进程占用多少内存的经历,或者被问到这样的问题--你的程序在运行时占用了多少内存(物理内存)? 通常我们可以通过top命令查看进程占用了多少内存.这里我们可 ...

  3. 累加和为 K 的最长子数组问题

    累加和为 K 的最长子数组问题 作者:Grey 原文地址: 博客园:累加和为 K 的最长子数组问题 CSDN:累加和为 K 的最长子数组问题 题目描述 给定一个整数组成的无序数组 arr,值可能正.可 ...

  4. SQL 时间范围和时间粒度

    前言 使用 SQL 进行业务数据计算时,经常会遇到两个概念:时间范围 和 时间粒度 .以 最近一天的每小时的用户访问人数 为例: 最近一天 是时间范围 每小时 是时间粒度 常见的时间范围:最近五分钟. ...

  5. Elasticsearch:正确使用regexp搜索

  6. 从应用访问Pod元数据-DownwardApi的应用

    对于某些需要调度之后才能知道的数据,比如 pod 的 ip,主机名,或者 pod 自身的名称等等,k8s 依旧很贴心的提供了 Downward API 的方式来获取此类数据,并且可以通过环境变量或者文 ...

  7. VMware安装Win11+WSA子系统和使用教程

    VMware安装Win11+WSA子系统和使用教程 作者:Sna1lGo 时间:2022/9/29 下载相关文件: Win11镜像:Download Windows 11 (microsoft.com ...

  8. 「国产系统」Tubian 0.1,兼容Windows和Android的GNU/Linux系统!

    Tubian 0.42已发布:https://www.cnblogs.com/tubentubentu/p/16745926.html Tubian是我的自用系统整理而成的Linux发行版,基于Deb ...

  9. PHP全栈开发(八):CSS Ⅹ 导航栏制作

    学习了这么久的CSS,我们现在也可以小试牛刀一下了,我们使用我们学会的CSS知识来制作一个导航栏. 我们都知道,在现代的导航栏里面,最普遍的就是使用无序列表来制作导航栏. 我们可以使用如下代码来制作一 ...

  10. Kafka之工作流程分析

    Kafka之工作流程分析 kafka核心组成 一.Kafka生产过程分析 1.1 写入方式 producer采用推(push)模式将消息发布到broker,每条消息都被追加(append)到分区(pa ...