实现思路

  1. 使用json2csv将后台json数据转化为csv格式数据

  2. 采用创建Blob(二进制大对象)的方式来存放缓存数据; 生成下载链接;
  3. 创建一个a标签,设置href和download属性

  4. 触发a标签的点击事件实现下载

实现如下:

表格为 <Table :columns="columns" :data="listdata"></Table>

假设数据格式如下: (实现子集数据也可导出成一条数据)

  1. listdata [{AreaName: '区域1',ProjectManager: '小丽',ProjectName:'区域1项目',money: 6666
    children:{AreaName: '区域1',ProjectManager: '小1',ProjectName:'项目1',money: 1236,}}, // 当存在子集数据时
    {AreaName: '区域2',ProjectManager: '小红',ProjectName:'区域2项目',money: 8866}],
  1. columns: [{title: '所属区域',key: 'AreaName'},{title: '负责人',key: 'ProjectManager'},{title: '项目名称',key: 'ProjectName'},{title: '金额',key: 'money'}],

实现代码:

  1. // 先将子集数据处理为第一层级数据
  2. ListDataSplit (listData, newData) {
  3. listData.map((item, index) => {
  4. if (item.children && item.children.length) {
  5. newData.push(item)
  6. this.ListDataSplit(item.children, newData)
  7. } else {
  8. newData.push(item)
  9. }
  10. })
  11. },

    // 导出
    export () {
  if (this.listData.length < 0) {
    this.$Message.warning('数据为空')
    return
  }
  let newData = []
  this.ListDataSplit(this.listData, newData)
    // 处理完数据后, 调用导出的方法
  this.exportFn(newData, this.columns)    
  },
  1. // 导出方法
  2. exportFn (listdata, columns) {
  3. let Parser = require('json2csv').Parser
  4. let fields = []
  5. columns.map(col => {
  6. if (col.title && col.key) {
  7. let obj = {
  8. label: col.title, // 表头名称
  9. value: col.key // 表取值字段key
  10. }
  11. fields.push(obj)
  12. }
  13. })
  14. let fileName = '表格数据导出_' + new Date().toLocaleString('zh-CN')
  15. let json2csvParser = new Parser({fields})
  16. let result = json2csvParser.parse(listdata)
  17. let blob = new Blob(['\ufeff' + result], {type: 'text/csv'})
  18. let a = document.createElement('a')
  19. a.setAttribute('href', URL.createObjectURL(blob))
  20. a.setAttribute('download', `${fileName}.csv`)
  21. a.click()
  22. },

前端 vue表格数据导出Excel 文件实现的更多相关文章

  1. 将页面中表格数据导出excel格式的文件(vue)

    近期由于项目需要,需要将页面中的表格数据导出excel格式的文件,折腾了许久,在网上各种百度,虽然资料不少,但是大都不全,踩了许多坑,总算是皇天不负有心人,最后圆满解决了. 1.安装相关依赖(npm安 ...

  2. JavaScript 上万条数据 导出Excel文件(改装版)

    最近项目要js实现将数据导出excel文件,网上很多插件实现~~那个开心呀,谁知道后面数据量达到上万条时出问题:浏览器不仅卡死,导出的excel文件一直提示网络失败.... debug调试发现var  ...

  3. JavaScript 上万条数据 导出Excel文件 页面卡死

    最近项目要js实现将数据导出excel文件,网上很多插件实现~~那个开心呀,谁知道后面数据量达到上万条时出问题:浏览器不仅卡死,导出的excel文件一直提示网络失败.... debug调试发现var  ...

  4. 导出网页表格数据为Excel文件的前端解决方案

    在工作中,我们有时会遇到这样的需求,比如:要把页面的表格数据导出为Excel文件.在此记录下自己用的解决方法.代码如下: function tableToExcel(data){ //要导出的数据,t ...

  5. Vue+element UI实现表格数据导出Excel组件

    介绍 这是一个可以将页面中的表格数据导出为Excel文件的功能组件,该组件一般与表格一起使用,将表格数据传给组件,然后通过点击组件按钮可将表格中的数据导出成Excel文件. 使用方法 由于封装该组件内 ...

  6. 纯前端实现数据导出excel文件

    一  安装依赖 npm install -S file-saver xlsx npm install -D script-loader 二 新建文件夹 在网上百度引入即可 三 在main.js中引入 ...

  7. 导出jqgrid表格数据为EXCEL文件,通过tableExport.js插件。

    今天公司项目需要做个导出功能,将jqgrid查询出的数据导出为EXCEL表格文件,期间遇到两个问题: 1.导出报错 uncaught exception: INVALID_CHARACTER_ERR: ...

  8. 前端表格数据导出excel

    使用tableExport.js导出bootstrap-table表格成excel并且支持中文 1. 下载tableExport.js https://github.com/hhurz/tableEx ...

  9. MVC 实现表格数据导出Excel(NPOI方式)

    前端View(@ViewBag为查询条件): <span id="exprobtn" class="btn_blue" style="dispa ...

随机推荐

  1. Spring Boot 知识点总结

    现在仅总结重要和实用的知识点,更加全面的请见链接:1.:2.. 微服务:架构风格(服务微化):一个应用应该是一组小型服务:可以通过HTTP的方式进行互通:微服务:每一个功能元素终都是一个可独立替换和独 ...

  2. 基于MATLAB静态目标分割的药板胶囊检测

    一.目标 1 将药板从黑色背景中分离(药板部分显示为白色,背景显示为黑色): 2 根据分割结果将药板旋转至水平: 3 提取药板中的药丸的位置信息: 二.方法描述 处理图像如下: (1)首先将图像转为灰 ...

  3. API概述,使用步骤和Scanner概述及其API文档的使用

    API概述 API(Application Programming Interface),应用程序编程接口.Java API是一本程序员的 字典 ,是JDK中提供给 我们使用的类的说明文档.这些类将底 ...

  4. 不是第七代的 Win 7

    贡献者:历史上的今天 Windows 7 是由微软公司(Microsoft)2009 年 10 月 22 日发布的桌面端操作系统,它影响了每个行业的方方面面,以至于很多人仍然在日常生活和工作中使用它. ...

  5. 简单使用 MySQL 索引

    MySQL 索引 1 什么是索引 在数据库表中,对字段建立索引可以大大提高查询速度.通过善用这些索引,可以令 MySQL 的查询和 运行更加高效. 如果合理的设计且使用索引的 MySQL 是一辆兰博基 ...

  6. 对象数组的foreach循环操作和集合容器

    ForEach标签可以循环数组,list,map集合 采用 foreach循环遍历 ,并每次循环允许执行一次回调函数 for (容器中元素类型 临时变量: 容器变量) { System.out.pri ...

  7. el-form 每行显示两列,底部按钮居中

    需求: el-form 每行显示两列,底部按钮居中 问题: 以前的解决办法是: el-col, el-row.但是这里只有一个 el-form-item 的 label 数据是已知的,其余项都是循环得 ...

  8. 循环结构——while、do-while、for循环

    1.while循环 语法格式: while(条件判断){ 循环体 } 解释: (1)关键字while后的小括号中的内容时循环条件. (2)循环条件是一个布尔表达式,它的值为布尔类型 "真&q ...

  9. 为什么企业不愿意升级ERP系统

    前段时间看到一篇文章讲企业为何不愿意升级内部系统的文章,觉得有意思,也想聊聊为何大部分企业不愿意升级ERP的事情. 老东家用的ERP是QAD系统,92年版本,没有图形界面,用户都是通过NetTerm等 ...

  10. webSocket的基本使用与socket.io库使用

    前言: 传统的客户端与服务器进行通信,都是客户端向服务端发送请求,服务端进行响应,否则一般不会自动进行响应.单向,如果要持续获取服务端资源,则需要持续发送请求 初解决方案:轮询:客户端让http请求保 ...