vue项目中的elementUI的table组件导出成excel表

1、安装依赖:npm install --save xlsx file-saver

2、在放置需要导出功能的组件中引入

import FileSaver from ‘file-saver‘

import XLSX from ‘xlsx‘

3、HTML中的设置,简单来说就是给需要导出的table标签el-table上加一个id:如exportTab,对应下面的exportExcel方法中的 document.querySelector(‘#exportTab‘)

4、在methods中设置真正实现导出转换excel表格的方法,如下

exportExcel () {
      /* generate workbook object from table */
      var xlsxParam = { raw: true } // 导出的内容只做解析,不进行格式转换
      var wb = XLSX.utils.table_to_book(document.querySelector(‘#exportTab‘), xlsxParam)

      /* get binary string as output */
      var wbout = XLSX.write(wb, { bookType: ‘xlsx‘, bookSST: true, type: ‘array‘ })
      try {
        FileSaver.saveAs(new Blob([wbout], { type: ‘application/octet-stream‘ }), ‘审核情况表.xlsx‘)
      } catch (e) {
        if (typeof console !== ‘undefined‘) {
          console.log(e, wbout)
        }
      }
      return wbout
}

可能还会遇到以下问题

(一)如果存在分页,导出时却只导出当前table绑定的数据,假如我们设置的table每页只有10条数据,导出时只导出了10条,并非所有符合条件的数据

  原因:此插件只导出当前table中所有的数据

  解决办法:在HTML代码中再加一个el-table标签,这个table专门用来导出数据,且此table一直隐藏着,当查询条件发生变化时,根据后台返回的所有符合条件的数据总量total值,然后重新设置获取后台数据方法的参数,拉取到所有符合条件的数据绑定进来,这样导出的就是想要的数据了。

(二)第一次导出时,导出的excel表格只有表头,没有数据内容

  解决方法:给导出到excel表格的函数exportExcel()设置一个延时执行即可,因为刚开始我没有设置延时执行,拉取到数据后直接赋值给了绑定到table上的exportData上,然后就立即调用exportExcel()导致,我猜测exportData渲染到table是需要一定时间的,这段时间内我们立即调用exportExcel()时,数据还没被渲染进去,此时exportExcel()拿不到数据,故此第一次导出的表格中没有数据

(三)导出的数据出现两份的情况

  原因:因为element ui下的el-table被渲染出来后有两个table标签,目的是方便进行数据交互使用,所以如果el-column存在fixed属性时,导出时会出现两份数据的情况

  解决方法:我是参照上面大佬的文章,直接将隐藏table中的el-table-column上的fixed属性去掉,毕竟这个table是隐藏起来的,直接去掉el-table-column上的fixed属性最便捷

(四)导出的excel表格,如果出现数字字符比较长的,在导出表格中会变成科学计数那样的情况

  解决方法:即上面exportExcel()方法中的前面第二和第三行,已经做了说明

var xlsxParam = { raw: true }; // 导出的内容只做解析,不进行格式转换
var wb = XLSX.utils.table_to_book(document.querySelector(‘#exportTab‘), xlsxParam);

原文地址:https://www.cnblogs.com/sloanlv/p/11218269.html

时间: 2024-10-30 12:41:48

vue项目中的elementUI的table组件导出成excel表的相关文章

vue项目中使用elementUI的el-tabs组件 浏览器卡死问题 解决办法

公司的项目都是以前做的,所以不管是vue还是element-ui版本都过于老旧,尤其是element-ui基本都是在2.8.2以前的,因此很多新的功能就无法使用,于是就想到升级 element 但是升级完就会发现,只要页面中用到el-tab就会出现卡死状态 网上找了很多办法,原因都是相同的,vue跟element版本不匹配 于是升级vue 发现不行,还报错 原来还要升级 vue-template-compiler 总结如下: 升级  element 升级  vue 升级   vue-templa

vue项目中引入elementUI

1.安装淘宝npm镜像 输入命令:npm install -g cnpm --registry=https://registry.npm.taobao.org 2.安装全局vue-cli脚手架 cnpm install --global vue-cli 3.初始化一个vue项目 vue init webpack itemname 4.安装 elementUI npm i element-ui -S快捷键ctrl+c,终止批处理操 作吗(Y/N),在输入命令npm i element-ui -S

解决vue项目中引入组件时出现的Module is not installed问题

如图,在vue项目中import自己定义的组件时,‘@api/table’出现下划线,ctrl+右键点击不会跳转到对应组件.鼠标移上去显示Module is not installed,多方查询后终于弄清楚了原因. 图中路径中有个@符号,这个符号是在build目录下的webpack.base.conf.js文件中定义的,代表当前项目的src目录. 之所以出现上述问题是因为在下图中的webpack中没有指定webpack 的配置文件,或者配置文件指定得不对.找到原因后解决方案就简单了,只需要将该配

Vue项目中如何使用Element-UI以及如何使用sass

当我们在开发Vue项目的时候通常会选择Element-UI作为我们的UI框架,其官方中文文档地址是http://element.eleme.io/#/zh-CN.(我在一次跟朋友聊天中得知他们公司前端在使用Element-UI),我在工作中一直在使用Extjs6.0前端框架,作为一个老牌重框架,它自带UI组件,需要什么组件拿来用就好.比如说一个日期插件,找到它的xtype,编写好配置项就好了.因为它的官方文档中也给出了一个较为完整的基础模板(ionic也如此),特别适合后台管理系统.我也想当然的

vue项目中遇到的那些事。

前言 有好几天没更新文章了.这段实际忙着做了一个vue的项目,从 19 天前开始,到今天刚好 20 天,独立完成. 做vue项目做这个项目一方面能为工作做一些准备,一方面也精进一下技术. 技术栈:vue2 + vuex + vue-router + webpack + ES6/7 + element-ui + vue-baidu-map + i18n + vue-awesome-swiper 做项目时总是有一些思考和踩过的坑,对以后有一定的帮助,今天就来写写做vue项目遇到的那些事. 假如你正准

在vue项目中的axios使用配置记录

默认vue项目中已经安装axios,基于element-ui开发,主要记录配置的相关. axiosConfig.js import Vue from 'vue' import axios from 'axios' import qs from 'qs' import { Message, Loading } from 'element-ui' // 响应时间 axios.defaults.timeout = 5 * 1000 // 配置cookie // axios.defaults.withC

Vue 项目中使用 jsPlumb

jsPlumb 介绍 jsPlumb 是一个强大的 JavaScript 连线库,它可以将 html中 的元素用箭头.曲线.直线等连接起来,适用于开发 Web 上的图表.建模工具.流程图.关系图等. jsPlumb 参考网站 博客园:http://www.cnblogs.com/leomYili/p/6346526.html?utm_source=itdadao&utm_medium=referral 官网:https://www.jsplumbtoolkit.com/ 安装 jsPlumb v

vue项目中使用阿里iconfont图标

在上一篇文章中介绍了如何在vue项目中使用vue-awesome,如果你想了解,请移步<vue项目中使用vue-awesome> 这里介绍一下vue项目中如何使用阿里的iconfont图标库,先看一下官网 可以看到有将近两百万的图标量,可以说我们想要的矢量图图标这里大部分都是有的,下面直接开始如何在vue项目中使用,方法有两种 方法一:简单粗暴法 1.打开 iconFont官网 选择自己喜欢的图标,并且添加购物车 例如我现在选择三个图标 点击购物车,添加至项目 为了方便可以给项目起一个名字 选

在vue项目中 如何定义全局变量 全局函数

如题,在项目中,经常有些函数和变量是需要复用,比如说网站服务器地址,从后台拿到的:用户的登录token,用户的地址信息等,这时候就需要设置一波全局变量和全局函数 定义全局变量 原理: 设置一个专用的的全局变量模块文件,模块里面定义一些变量初始状态,用export default 暴露出去,在main.js里面使用Vue.prototype挂载到vue实例上面或者在其它地方需要使用时,引入该模块便可. 全局变量模块文件: Global.vue文件: <script> const serverSr