vue3+element表格调用后台接口实现Excel导出功能以及导出乱码问题解决

简介: vue3+element表格调用后台接口实现Excel导出功能以及导出乱码问题解决

实现效果

导出后的效果:

步骤

第一步:安装依赖

npm install --save xlsx file-saver

第二步:引入依赖

// 引入导出Excel表格依赖
import * as FileSaver from "file-saver";
import * as XLSX from "xlsx";

第三步:导出

// 导出事件
const exportClick = () => {
  axios({
    method: 'post',
    url: '/pcapi/Redeem/derive',
    data: qs.stringify({}),
  })
    .then((res) => {
      console.log(res.data)
      const data = new Blob([res.data], {
        type: 'application/vnd.ms-excel;charset=utf-8',
      })
      const downloadUrl = window.URL.createObjectURL(data)
      const anchor = document.createElement('a')
      anchor.href = downloadUrl
      anchor.download = '表格名称.xlsx' // 表格名称.文件类型
      anchor.click()
      window.URL.revokeObjectURL(res.data) // 消除请求接口返回的list数据
    })
    .catch((err) => {
      console.log(err)
    })
}

   接口返回数据导出,通常需要请求后端接口获取数据,接口返回的数据基本上是乱码的,需要先处理乱码的数据,否则导出来的文件是损坏的,如下

       看到这种返回信息,表格数据基本上是已经拿到了,现在只需要做一下数据的处理即可导出表格。

解决方法步骤拆解:解码

在请求接口的位置添加 { responseType: 'blob' } 将信息转码

  axios({
    method: 'post',
    url: '/pcapi/Redeem/derive',
    data: qs.stringify({}),
    responseType: 'blob', // 添加 blob 解决乱码问题,或者 arraybuffer
  })
    .then((res) => {
    })
    .catch((err) => {
    })
相关文章
|
5月前
|
开发工具 iOS开发 MacOS
基于Vite7.1+Vue3+Pinia3+ArcoDesign网页版webos后台模板
最新版研发vite7+vue3.5+pinia3+arco-design仿macos/windows风格网页版OS系统Vite-Vue3-WebOS。
564 11
|
11月前
|
JSON 自然语言处理 前端开发
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
582 72
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
|
10月前
|
存储 JavaScript 前端开发
基于 ant-design-vue 和 Vue 3 封装的功能强大的表格组件
VTable 是一个基于 ant-design-vue 和 Vue 3 的多功能表格组件,支持列自定义、排序、本地化存储、行选择等功能。它继承了 Ant-Design-Vue Table 的所有特性并加以扩展,提供开箱即用的高性能体验。示例包括基础表格、可选择表格和自定义列渲染等。
857 6
|
JavaScript 前端开发 API
|
JavaScript 前端开发
【Vue.js】监听器功能(EventListener)的实际应用【合集】
而此次问题的核心就在于,Vue实例化的时机过早,在其所依赖的DOM结构尚未完整构建完成时就已启动挂载流程,从而导致无法找到对应的DOM元素,最终致使计算器功能出现异常,输出框错误地显示“{{current}}”,并且按钮的交互功能也完全丧失响应。为了让代码结构更为清晰,便于后续的维护与管理工作,我打算把HTML文件中标签内的JavaScript代码迁移到外部的JS文件里,随后在HTML文件中对其进行引用。
201 8
|
存储 JavaScript 前端开发
介绍一下Vue的核心功能
介绍一下Vue的核心功能
489 17
|
资源调度 JavaScript UED
如何使用Vue.js实现单页应用的路由功能
【10月更文挑战第1天】如何使用Vue.js实现单页应用的路由功能
|
5月前
|
JavaScript
Vue中如何实现兄弟组件之间的通信
在Vue中,兄弟组件可通过父组件中转、事件总线、Vuex/Pinia或provide/inject实现通信。小型项目推荐父组件中转或事件总线,大型项目建议使用Pinia等状态管理工具,确保数据流清晰可控,避免内存泄漏。
486 2
|
4月前
|
缓存 JavaScript
vue中的keep-alive问题(2)
vue中的keep-alive问题(2)
409 137

热门文章

最新文章