安装依赖

npm install --save xlsx file-saver

新建excelHelper.js

  • \src\utils\目录下新建excelHelper.js文件
import Vue from 'vue'
import FileSaver from "file-saver";
import XLSX from "xlsx"; export default {
/**
* @param tableId 要导出的表格ID
* @param fileName 文件导出名称
* @param fileType 文件类型
* @param rawFlag - true 导出的内容只做解析,不进行格式转换
* @returns {*}
*/
exportExcel(tableId,fileName,fileType,rawFlag) {
let fix = document.querySelector('.el-table__fixed');
let wb;
/* 判断要导出的节点中是否有fixed的表格,如果有,转换excel时先将该dom移除,然后append回去 */
if(fix){
wb = XLSX.utils.table_to_book(document.querySelector("#"+tableId).removeChild(fix),{raw:rawFlag});
document.querySelector("#"+tableId).appendChild(fix);
}else{
wb = XLSX.utils.table_to_book(document.querySelector("#"+tableId),{raw:rawFlag});
}
/* 获取二进制字符串作为输出 */
let wbout = XLSX.write(wb, {
bookType: "xlsx",
bookSST: true,
type: "array"
});
try {
FileSaver.saveAs(
//Blob 对象表示一个不可变、原始数据的类文件对象。
//Blob 表示的不一定是JavaScript原生格式的数据。
//File 接口基于Blob,继承了 blob 的功能并将其扩展使其支持用户系统上的文件。
//返回一个新创建的 Blob 对象,其内容由参数中给定的数组串联组成。
new Blob([wbout], { type: "application/octet-stream" }),
//设置导出文件名称
fileName + fileType
);
} catch (e) {
if (typeof console !== "undefined") console.log(e, wbout);
}
return wbout;
}
}

调用

  • 在需要使用导出的页面中引用excelHelper.js
import excelHelper from "@/utils/excelHelper";
  • 按钮调用
excelHelper.exportExcel("table","fileName",".xls",true);
  • 其中,table是为表格绑定的id,fileName是导出的文件名称,.xls是导出的文件类型,true指明导出的内容只做解析不进行格式转换

填坑指南

el-table数据导出Excel数据重复两遍
  • 原因:el-table的fixed属性来让某一列固定,但elementui的实现方式是:创建了两个tabledom,通过一个隐藏一个显示来实现交互效果,当导出整个el-table 就会将两个div内的table都导出,导致数据重复
  • 解决方式:
  let fix = document.querySelector('.el-table__fixed');
let wb;
//判断要导出的节点中是否有fixed的表格,如果有,转换excel时先将该dom移除,然后append回去
if(fix){
wb = XLSX.utils.table_to_book(document.querySelector('#table').removeChild(fix));
document.querySelector('#table').appendChild(fix);
}else{
wb = XLSX.utils.table_to_book(document.querySelector('#table'));
}

推荐博客:https://blog.csdn.net/qq_40614207/article/details/94003793

vue2.5 + element UI el-table 导出Excel的更多相关文章

  1. element ui table 导出excel表格

    https://blog.csdn.net/u010427666/article/details/79208145 vue2.0 + element UI 中 el-table 数据导出Excel1. ...

  2. vue2.0 + Element UI + axios实现表格分页

    注:本文分页组件用原生 html + css 实现,element-ui里有专门的分页组件可以不用自己写,详情见另一篇博客:https://www.cnblogs.com/zdd2017/p/1115 ...

  3. 支持IE,FireFox,Chrome三大主流浏览器,通过js+Flash方式将table导出Excel文件

    今天在做项目的时候,遇到了前端下载Excel的功能,结果原先的代码,如下: function generate_excel(tableid) {        var table = document ...

  4. js实现table导出Excel,保留table样式

    浏览器环境:谷歌浏览器 1.在导出Excel的时候,保存table的样式,有2种方法,①是在table的行内写style样式,②是在模板里面添加样式 2.第一种方式:行内添加样式 <td sty ...

  5. html table表格导出excel的方法 html5 table导出Excel HTML用JS导出Excel的五种方法 html中table导出Excel 前端开发 将table内容导出到excel HTML table导出到Excel中的解决办法 js实现table导出Excel,保留table样式

    先上代码   <script type="text/javascript" language="javascript">   var idTmr; ...

  6. ASP如何将table导出EXCEL表格

    网页导出excel表格非常常用,对于一些加载<table>的数据网页,经常会用到这种功能,下面和大家分享一下ASP如何导出EXCEL表格 工具/原料   ASP编辑器 方法/步骤     ...

  7. (Element UI 组件 Table)去除单元格底部的横线

    Element UI 组件 Table 有一个属性 border,添加它可以增加纵向边框,但是无法控制横线边框,因此即使是最简单的 el-table,也会包含一个底部横线. 这个底部横线其实是一个 b ...

  8. html中的table导出Excel

    演示地址: http://www.jq22.com/yanshi3312 具体代码: <!DOCTYPE html> <html lang="zh-CN"> ...

  9. javascript 将 table 导出 Excel ,可跨行跨列

    <script language="JavaScript" type="text/javascript"> //jQuery HTML导出Excel ...

随机推荐

  1. Java描述设计模式(22):策略模式

    本文源码:GitHub·点这里 || GitEE·点这里 一.生活场景 每年双十一,各大电商平台会推出不同的满减策略,当用户的消费金额满一定额度后,会进行减去一定的优惠额度,从而来一波清仓甩卖,使用策 ...

  2. GentOS 7 安装步骤

    附上原作者的博客网址: https://blog.csdn.net/qq_42570879/article/details/82853708 1.CentOS下载CentOS是免费版,推荐在官网上直接 ...

  3. ES6扩展运算符...

    对象的扩展运算符理解对象的扩展运算符其实很简单,只要记住一句话就可以: 对象中的扩展运算符(...)用于取出参数对象中的所有可遍历属性,拷贝到当前对象之中 let bar = { a: 1, b: 2 ...

  4. /etc/security/limits.conf 详解与配置

    目录 一. /etc/security/limits.conf 详解 /etc/security/limits.conf 配置解析 /etc/security/limits.d/ 目录 二. ulim ...

  5. es5设置属性不能修改

    /*es5*/ { var Person ={ name:'es5', age:19 } Object.defineProperty(Person,'sex',{ writable:false, va ...

  6. Appium自动获取 Android 设备 id 和包名等信息(python)

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/zhusongziye/article/d ...

  7. 2019 牛客网 第七场 H pair

     题目链接:https://ac.nowcoder.com/acm/contest/887/H  题意: 给定A,B,C问在[1,A]和[1,B]中有多少对x,y满足x&y>C或者x^y ...

  8. Java NIO 三大组件之 Channel

    Java NIO 之 Channel 一.什么是Channel Channel用于源节点(例如磁盘)与目的节点的连接,它可以进行读取,写入,映射和读/写文件等操作. 在Java NIO中负责缓冲区中数 ...

  9. JS的引用顺序真的灰常重要

    JS的引用一定要记得顺序,不然常常会被小小的问题卡住很久.

  10. 高并发编程-AQS深入解析

    要点解说 AbstractQueuedSynchronizer简称AQS,它是java.util.concurrent包下CountDownLatch/FutureTask/ReentrantLock ...