操作Vue导出excel表格

这次给大家带来操作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 为表实体内容

columns1: [   {   title: '序号',   key: 'serNum'   },   {   title: '选择',   key: 'choose',   align: 'center',   render: (h, params) => {    if (params.row.status !== '1' && params.row.status !== '2') {    return h('p', [     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 就不写了,具体数据结构查看iViewAPI

在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}

登录后复制

Export2Excel.js/Blob.js 的代码

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

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

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

1、导入

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.导出

inportexcel: function() { //兼容ie10哦! require.ensure([], () => {         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, data, '列表excel');       }) }

登录后复制

相信看了本文案例你已经掌握了方法,更多精彩请关注【创想鸟】其它相关文章!

推荐阅读:

做出全局搜索代码并高亮

Angular4的router使用步奏

多个组件中进行数据通信angular4

立即学习“前端免费学习笔记(深入)”;

以上就是操作Vue导出excel表格的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2769808.html

(0)
上一篇 2025年3月8日 12:26:19
下一篇 2025年3月8日 12:26:28

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • js获取网页数据后存储为Excel格式

    这篇文章介绍的内容是关于js获取网页数据后存储为Excel格式,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 做项目的时候遇到了将网页中table表格的数据以excel形式存储的问题,自己将相关的代码分享给大家,希望对大家有…

    2025年3月8日 编程技术
    200
  • jquery动态操作表格行

    这次给大家带来jquery动态操作表格行,jquery动态操作表格行的注意事项有哪些,下面就是实战案例,一起来看一下。 具体代码如下: html代码: ID 起止时间 单位/部门 职位 登录后复制 js代码: $(function () {…

    2025年3月8日
    200
  • 高效率的使用jquery操作表格

    这次给大家带来高效率的使用jquery操作表格,高效率使用jquery操作表格的注意事项有哪些,下面就是实战案例,一起来看一下。 利用jquery给指定的table添加一行、删除一行 登录后复制123112233 123 //在id为tes…

    编程技术 2025年3月8日
    200
  • jQuery插件实现表格隔行变色并且与鼠标进行交互

    这次给大家带来jQuery插件实现表格隔行变色并且与鼠标进行交互,jQuery插件实现表格隔行变色并且与鼠标进行交互的注意事项有哪些,下面就是实战案例,一起来看一下。 表格隔行变色且鼠标滑过高亮显示table{border-collapse…

    编程技术 2025年3月8日
    200
  • jQuery LigerUI操作表格

    这次给大家带来jQuery LigerUI操作表格,jQuery LigerUI操作表格的注意事项有哪些,下面就是实战案例,一起来看一下。 简介  ligerGrid是ligerui系列插件的核心控件,用户可以快速地创建一个美观,而且功能强…

    2025年3月8日 编程技术
    200
  • jQuery插件实现表格隔行换色并且与鼠标事件实现互动

    这次给大家带来jQuery插件实现表格隔行换色并且与鼠标事件实现互动,jQuery插件实现表格隔行换色并且与鼠标事件实现互动的注意事项有哪些,下面就是实战案例,一起来看一下。 js代码:   css代码: tr.alt td { backg…

    2025年3月8日
    200
  • jquery隔行交替给表格添加样式

    这次给大家带来jquery隔行交替给表格添加样式,jquery隔行交替给表格添加样式的注意事项有哪些,下面就是实战案例,一起来看一下。 学习了jquery,发现其功能真的很令我惊讶,为表格添加背景色用css也可以实现,却不得不在 标签里一行…

    2025年3月8日
    200
  • jQuery做出可编辑表格(附代码)

    这次给大家带来jQuery做出可编辑表格(附代码),jQuery做出可编辑表格的注意事项有哪些,下面就是实战案例,一起来看一下。 <!DOCTYPE html jq2—可以编辑的表格 <%—-%> 鼠标点击表格项就可以…

    编程技术 2025年3月8日
    200
  • jquery动态操作表格行的方法(附代码)

    这次给大家带来jquery动态操作表格行的方法(附代码),jquery动态操作表格行的注意事项有哪些,下面就是实战案例,一起来看一下。 body{background:#FFFFFF;} $(function(){ var show_cou…

    编程技术 2025年3月8日
    200
  • jquery操作多功能表格

    这篇文章主要介绍了jquery拖拽排序简单实现方法,涉及jQuery响应鼠标事件动态操作页面元素的相关技巧,需要的朋友可以参考下 本文实例讲述了jquery拖拽排序简单实现方法。分享给大家供大家参考,具体如下: 运行效果截图如下: 原来没有…

    2025年3月8日
    200

发表回复

登录后才能评论