vue使用axios导出后台返回的文件流为excel表格详解

 更新时间:2022年08月11日 14:22:21   作者:求大牛的小李  
这篇文章主要介绍了vue使用axios导出后台返回的文件流为excel表格方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

使用axios导出后台返回的文件流为excel

之前有一个需求是要使用post请求,导出后台返回的文件流并在表格中使用,大概思路为使用axios请求回数据,定义数据为blob格式,再创建一个a标签自调就可以完成了

<button @click="download">导出</button>
data() {
    return {
      isClick: true,
    };
  },
download() {
      // 简单的一个小节流
      if (!this.isClick) {
        return;
      }
      this.isClick = false;
      axios({
        method: "POST",
        url: "",
        data: {},
        responseType: "blob", //定义为blob
      }).then((res) => {
        const file = new Blob([res.data], { type: "application/vnd.ms-excel" });
        const url = URL.createObjectURL(file);
        const a = document.createElement("a");
        a.href = url;
        a.click();
        this.isClick = true;
      });
    },

vue axios导出excel乱码解决

最近,公司让我写一个导出excel的功能,由于已经有了前人写好的代码,我就直接拿着他的代码改了一下,结果在前端下载好之后直接出现了乱码问题。

开始我怀疑自己哪里写错了,经过仔细的检查,并没有问题。而且在后台生成的excel并没有任何问题。

后来我以为是读入字节流出现了问题,经过调试对比也是正常的。唯一的问题就是通过后台返回的res出现了乱码。

上网搜索,都说这样写就行了。

和我写的一样。在经过了一天的检查还是无果后,我问了问前辈,原来问题出在这里。

  .post("/TasksTable/ExportData",{
          item: {          
            //传入项目id,根据项目id来 搜素任务
            project_id: this.tasksinfo,
          },
          //页的索引和页的长度。
          PageSize: this.pageSize,
          PageIndex: this.currentPage,
          //定义类型
          headers: {
            "Content-Type": "application/x-www-form-urlencoded",
          },     
          responseType:'blob',         
        })

如图所示,我用一个花括号把我传入的数据和 headers、responseType放在了一起,所以headers和responseType无效了。

.post("/TasksTable/ExportData",{
          item: {          
            //传入项目id,根据项目id来 搜素任务
            project_id: this.tasksinfo,
          },
          //页的索引和页的长度。
          PageSize: this.pageSize,
          PageIndex: this.currentPage,
        },
        {    
          //定义类型
          headers: {
            "Content-Type": "application/x-www-form-urlencoded",
          },     
          responseType:'blob',         
        })

把他们用两个花括号隔开就可以了。最终成功导出!

找不到原因的感觉真头疼啊,看了一天没找到原因,最终通过求助才解决了。哎,这编码之路啊~

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • vue+spring boot实现校验码功能

    vue+spring boot实现校验码功能

    这篇文章主要为大家详细介绍了vue+spring boot实现校验码功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-05-05
  • Vue发送ajax请求方法介绍

    Vue发送ajax请求方法介绍

    这篇文章介绍了Vue发送ajax请求的方法,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-01-01
  • Vue3系列教程之插槽slot详解

    Vue3系列教程之插槽slot详解

    插槽(slot)可以说在一个 Vue 项目里面处处都有它的身影,比如我们使用一些UI 组件库的时候,我们通常可以使用插槽来自定义我们的内容,今天通过本文给大家介绍vue3插槽slot的相关知识,感兴趣的朋友一起看看吧
    2022-08-08
  • vue-mounted中如何处理data数据

    vue-mounted中如何处理data数据

    这篇文章主要介绍了vue-mounted中如何处理data数据方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-03-03
  • Vue无限滑动周选择日期的组件的示例代码

    Vue无限滑动周选择日期的组件的示例代码

    这篇文章主要介绍了Vue无限滑动周选择日期的组件的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-07-07
  • 使用Vue生成动态表单

    使用Vue生成动态表单

    这篇文章主要介绍了Vue生成动态表单功能,这是小编第一次接这个需求,作为前端开发的我真的不知如何下手,今天小编通过一段代码给大家分享vue生成动态表单效果,需要的朋友可以参考下
    2019-11-11
  • vue vant Area组件使用详解

    vue vant Area组件使用详解

    这篇文章主要介绍了vue vant Area组件使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12
  • vue自定义封装指令以及实际使用

    vue自定义封装指令以及实际使用

    市面上大多数关于Vue.js自定义指令的文章都在讲语法,很少讲实际的应用场景和用例,下面这篇文章主要给大家介绍了关于vue自定义封装指令以及实际使用的相关资料,需要的朋友可以参考下
    2022-01-01
  • Vue官方文档梳理之全局配置

    Vue官方文档梳理之全局配置

    这篇文章主要介绍了Vue官方文档梳理之全局配置,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-11-11
  • 详解Vue中数据可视化词云展示与词云的生成

    详解Vue中数据可视化词云展示与词云的生成

    数据可视化是现代Web应用程序中的一个重要组成部分,词云是一种非常流行的数据可视化形式,可以用来展示文本数据中的主题和关键字,本文我们将介绍如何在Vue中使用词云库进行数据可视化词云展示和词云生成,需要的可以参考一下
    2023-06-06

最新评论