Vue实现导出excel表格功能

前端之家收集整理的这篇文章主要介绍了Vue实现导出excel表格功能前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

引言:

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

如果想要导出Excel

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

表结构

渲染页面中的表结构是由 columns 列 和 tableData 行,来渲染的 columns 为表头数据 tableData 为表实体内容

{ 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 配置 我们要加载时的路径

在当前页面中引入依赖

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

{ 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 的值转成数组从而生成表格

下面再看下vue中excel表格的导入和导出

注意:vue中要实现表格的导入与导出,首先要install两个依赖,

npm install -S file-saver xlsx npm install -D script-loader。其次,在项目src目录下新建一个文件夹vendor(名字随意),在此文件夹下放置两个文件Blob.js和Export2Excal.js(下载地址:)。之后就可以愉快的导入导出了微笑。

1、导入

importfxx(obj) {
let _this = this;
console.log("xxxxxxxxxxxxxxxxxxxxxxxxxxx1");
let inputDOM = this.$refs.inputer;
// 通过DOM取
文件数据
this.file = event.currentTarget.files[0];
var rABS = false; //是否将文件读取为二进制字符串
var f = this.file;
var reader = new FileReader();
//if (!FileReader.prototype.readAsBinaryString) {
FileReader.prototype.readAsBinaryString = function(f) {
var binary = "";
var rABS = false; //是否将文件读取为二进制字符串
var pt = this;
var wb; //读取完成的数据
var outdata;
var reader = new FileReader();
reader.onload = function(e) {
var bytes = new Uint8Array(reader.result);
var length = bytes.byteLength;
for(var i = 0; i < length; i++) {
binary += String.fromCharCode(bytes[i]);
}
var XLSX = require('xlsx');
if(rABS) {
wb = XLSX.read(btoa(fixdata(binary)),{ //手动转化
type: 'base64'
});
} else {
wb = XLSX.read(binary,{
type: 'binary'
});
}
outdata = XLSX.utils.sheet_to_json(wb.Sheets[wb.SheetNames[0]]);//outdata就是你想要的东西
}
reader.readAsArrayBuffer(f);
}
if(rABS) {
reader.readAsArrayBuffer(f);
} else {
reader.readAsBinaryString(f);
}
}

2.导出

{         const { export_json_to_excel } = require('../../vendor/Export2Excel');  //引入文件       const tHeader = ['用户名','姓名','部门','职位','邮箱','充值']; //将对应的属性名转换成中文 // const tHeader = [];          const filterVal = ['userName','realName','department','position','email','money'];//table表格中对应的属性名          const list = this.sels;         const data = this.formatJson(filterVal,list);         export_json_to_excel(tHeader,'列表excel');       }) }

总结

以上所述是小编给大家介绍的Vue实现导出excel表格功能。编程之家 jb51.cc 收集整理的教程希望能对你有所帮助,如果觉得编程之家不错,可分享给好友!感谢支持

原文链接:https://www.f2er.com/vue/32954.html

猜你在找的Vue相关文章