博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Vue实现导出excel表格
阅读量:6690 次
发布时间:2019-06-25

本文共 2569 字,大约阅读时间需要 8 分钟。

引言:

最近使用vue在做一个后台系统,技术栈 vue + iView,在页面中生成表格后, iView可以实现表格的导出,不过只能导出csv格式的,并不适合项目需求。

如果想要导出Excel

  • 在src目录下创建一个文件(vendor)进入Blob.jsExport2Excel.js
  • npm install -S file-saver 用来生成文件的web应用程序
  • npm install -S xlsx 电子表格格式的解析器
  • npm install -D script-loader 将js挂在在全局下

表结构

  • 渲染页面中的表结构是由columns列 和tableData 行,来渲染的 columns为表头数据tableData为表实体内容
columns1: [          {            title: '序号',            key: 'serNum'          },          {            title: '选择',            key: 'choose',            align: 'center',            render: (h, params) => {              if (params.row.status !== '1' && params.row.status !== '2') {                return h('div', [                  h('checkbox', {                    props: {                      type: 'selection'                    },                    on: {                      'input': (val) => {                        console.log(val)                      }                    }                  })                ])              } else {                return h('span', {                  style: {                    color: '#587dde',                    cursor: 'pointer'                  },                  on: {                    click: () => {                      // this.$router.push({name: '', query: { id: params.row.id }})                    }                  }                }, '查看订单')              }            }          },          ...        ],复制代码

tableData 就不写了,具体数据结构查看

在build 目录下webpack.base.conf.js配置 我们要加载时的路径

alias: {      'src': path.resolve(__dirname, '../src'),    }复制代码

在当前页面中引入依赖

require('script-loader!file-saver')  // 转二进制用  require('script-loader!src/vendor/Blob')  // xlsx核心  require('script-loader!xlsx/dist/xlsx.core.min')复制代码

当我们要导出表格执行@click事件调用handleDownload函数

handleDownload() {        this.downloadLoading = true        require.ensure([], () => {          const {export_json_to_excel} = require('src/vendor/Export2Excel')          const tHeader = Util.cutValue(this.columns1, 'title')          const filterVal = Util.cutValue(this.columns1, 'key')          const list = this.tableData1          const data = this.formatJson(filterVal, list)          export_json_to_excel(tHeader, data, '列表excel')          this.downloadLoading = false        })      },      formatJson(filterVal, jsonData) {        return jsonData.map(v => filterVal.map(j => v[j]))      }复制代码

Util.cutValue是公共方法,目的是为了将,tHeader 和filterVal 的值转成数组从而生成表格

### Util module// 截取value值utils.cutValue = function (target, name) {  let arr = []  for (let i = 0; i < target.length; i++) {    arr.push(target[i][name])  }  return arr}复制代码

转载地址:http://hkeao.baihongyu.com/

你可能感兴趣的文章
【Zabbix】如何搭建memcached?并使用Zabbix监控memcached?
查看>>
完爆 Best Fit,看阿里如何优化 Sigma 在线调度策略节约亿级成本
查看>>
spring事务
查看>>
NoSQL最新现状和趋势:云NoSQL数据库将成重要增长引擎
查看>>
python系统监控--转载
查看>>
2019年我国云计算行业存在的问题和发展趋势
查看>>
DXF图纸打开后怎么改变保存其格式为DWG?
查看>>
zabbix 监控 介绍
查看>>
SVN使用
查看>>
针对代码类测试的要点总结
查看>>
oracle 10g 启动 停止服务 批处理
查看>>
Docker部署私有仓库
查看>>
SQL Mirror配置手册
查看>>
linux bash bc awk 浮点 计算 比较
查看>>
laravel安装intervention/image图像处理扩展 报错fileinfo is missing
查看>>
Jenkins(2)
查看>>
满血回归
查看>>
利用ARP欺骗另一台电脑并偷窥
查看>>
第一周作业
查看>>
Web应用的工作原理
查看>>