安装依赖

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. MySql——使用where子句过滤数据

    示例使用的数据表在上一个博客中创建的https://www.cnblogs.com/lbhym/p/11895968.html 参考资料:<Mysql必知必会> 1.使用where子句 示 ...

  2. 判断DataGridView是否选中某行

    if (this.Drawing_GridView.SelectedColumns.Count == 0)//判断是否选中某行 { }

  3. nyoj 62-笨小熊(以对应数组中的ASC位 + 1)

    62-笨小熊 内存限制:64MB 时间限制:2000ms Special Judge: No accepted:15 submit:43 题目描述: 笨小熊的词汇量很小,所以每次做英语选择题的时候都很 ...

  4. Mybatis动态SQL(where元素、set元素、if元素)

    Mybatis动态SQL(where元素.set元素.if元素) - where 元素只会在至少有一个子元素的条件返回 SQL 子句的情况下才去插入“WHERE”子句.而且,若语句的开头为“AND”或 ...

  5. 如何在后台封装el-tree所需要的数据格式

    背景 最近遇到了一个分层级展示指标的需求,前端使用el-tree树形组件,要求按官方文档的格式提供数据. 数据格式: id: 1, label: '一级 1', children: id: 4, la ...

  6. 万恶之源-与python的初识

    1.计算机基础知识 ​ 1.cpu: 人类的大脑 运算和处理问题 ​ 2.内存: 临时存储数据 断电就消失了 ​ 3.硬盘: 永久 存储数据 ​ 4.操作系统:是一个软件 控制每个硬件之间数据交互 2 ...

  7. AE ArcEngine10.4+vs2012安装配置

    准备内容 安装环境:win10*64位专业版,ArcGIS_Desktop_1041_151727,C#语言环境,visual studio2012 安装文件:ArcGIS_Engine_1041_1 ...

  8. PHP抓取远程图片教程(包含不带后缀图片)

    之前做微信登录开发时候,发现微信头像图片没有后缀名,传统的图片抓取方式不奏效,需要特殊的抓取处理.所以,后来将各种情况结合起来,封装成一个类,分享出来. 创建项目 作为演示,我们在www根目录创建项目 ...

  9. Android开源项目和轮子

    推荐查看Github最全面的Android开源项目汇总 功能框架 数据库 ORMLite框架 greenDaoMaster框架 Xutils的DButils ORMLitehe和greenDaoMas ...

  10. PyQt5的安装及测试(pycharm)

    参考链接:https://www.cnblogs.com/pywjh/articles/9835931.html     https://blog.csdn.net/SeekAndFindYou/ar ...