前端 vue表格数据导出Excel 文件实现

摘要:
实现思路使用json2csv将后台json数据转化为csv格式数据采用创建Blob(二进制大对象)的方式来存放缓存数据;生成下载链接;创建一个a标签,设置href和download属性触发a标签的点击事件实现下载实现如下:表格为假设数据格式如下:(实现子集数据也可导出成一条数据)listdata:[{
实现思路
  1. 使用json2csv将后台json数据转化为csv格式数据

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

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

实现如下:

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

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

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

实现代码:

//先将子集数据处理为第一层级数据
ListDataSplit (listData, newData) {
      listData.map((item, index) =>{
        if (item.children &&item.children.length) {
          newData.push(item)
          this.ListDataSplit(item.children, newData)
        } else{
          newData.push(item)
        }
      })
    },
// 导出
export () {
if (this.listData.length < 0) {
this.$Message.warning('数据为空')
return
}
let newData = []
this.ListDataSplit(this.listData, newData)
//处理完数据后,调用导出的方法
this.exportFn(newData, this.columns)
},
//导出方法
exportFn (listdata, columns) {
      let Parser = require('json2csv').Parser
      let fields =[]
      columns.map(col =>{
        if (col.title &&col.key) {
          let obj ={
            label: col.title,  //表头名称
            value: col.key     //表取值字段key
}
          fields.push(obj)
        }
      })
      let fileName = '表格数据导出_' + new Date().toLocaleString('zh-CN')
      let json2csvParser = newParser({fields})
      let result =json2csvParser.parse(listdata)
      let blob = new Blob(['ufeff' + result], {type: 'text/csv'})
      let a = document.createElement('a')
      a.setAttribute('href', URL.createObjectURL(blob))
      a.setAttribute('download', `${fileName}.csv`)
      a.click()
    },

免责声明:文章转载自《前端 vue表格数据导出Excel 文件实现》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇为什么我要学习qt quick使用密码记录工具keepass来保存密码下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

一步步带你做vue后台管理框架(一)——介绍框架

系列教程《一步步带你做vue后台管理框架》第一课 github地址:vue-framework-wz 线上体验地址:立即体验 《一步步带你做vue后台管理框架》第一课:介绍框架 《一步步带你做vue后台管理框架》第二课:上手使用 《一步步带你做vue后台管理框架》第三课:登录功能 Features 特性 ?wz脚手架?(脚手架助你安装/卸载组件更方便...

实验1:基于Weka的典型数据挖掘应用

一、实验目标 理解数据挖掘的基本概念,掌握基于Weka工具的基本数据挖掘(分类、回归、聚类、关联规则分析)过程。 二、实验内容 下载并安装Java环境(JDK 7.0 64位)。 下载并安装Weka 3.7版。 基于Weka的数据分类。 基于Weka的数据回归。 基于Weka的数据聚类。 基于Weka的关联规则分析。 三、实验步骤 1.下载并安装Jav...

# vue 使用 cesium 接入 gltf 模型

vue 使用 cesium 接入 gltf 模型 这个其实说简单也简单,但是说复杂也不容易搞。尤其是转化成vue语法或者是在vue项目接入的时候会有些许的坑,我在接入的时候也是有很多问题,好在最后把模型加进去了,在这里稍微整理一下,然后这篇博文的代码都是我自己实现成功的,如果需要的话可以相互学习一下。第一次整,也许不是最优编程,交流嘛。 cesium中文文...

【唠叨两句】如何将一张树型结构的Excel表格中的数据导入到多张数据库表中

         小弟昨天遇到一个相对比较棘手的问题,就像标题说的那样、如何将一张树型结构的Excel表格中的数据导入到多张数据库表中,在现实中实际是七张数据库表,这七张表之间有着有着相对比较复杂的主外键关系,对于我这么洼的水平,刚遇到时确实愣了一下。不过还好、等冷静下来之后,慢慢的找到的了解决的办法。现在与大家分享一下处理思路及方法。先说一下这里用到的一...

微软自带报表rdlc操作(合并同数据项)

一.使用table合并数据项(隐藏相同数据项)。 1.添加table,添加各数据项目和表头。 2.添加分组,选中table1右键属性->组->添加。 3.右键需要隐藏数据项的列->属性->常规->勾选隐藏重复项->选中你的分组。 4.设置隐藏的数据列的textbox的边框样式,隐藏重复项的上边框。 上边框隐藏表达式为...

hadoop不同版本有哪些

一、Hadoop是什么? 首次听到hadoop这次单词,相信很多人跟我当时是一样,不免心中画上一个大大的问号——这是什么东西?Hadoop是什么?百度百科的解释是:Hadoop是一个由Apache基金会所开发的分布式系统基础架构。换句话说就是hadoop是一个能够对大量数据进行分布式处理的软件框架。 Hadoopd之所谓会诞生,主要是由于进入到大数据时代,...