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');       }) }

登录后复制

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

推荐阅读:

json对象如何实现数组键值大小写转换功能

全局搜索时结果高亮如何实现

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

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

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

(0)
上一篇 2025年3月8日 10:49:32
下一篇 2025年3月8日 10:49:42

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

相关推荐

  • Angular服务端渲染方法详解

    这次给大家带来Angular服务端渲染方法详解,Angular服务端渲染的注意事项有哪些,下面就是实战案例,一起来看一下。 Angular Universal Angular在服务端渲染方面提供一套前后端同构解决方案,它就是Angular …

    2025年3月8日 编程技术
    200
  • Vue watch使用详解

    这次给大家带来Vue watch使用详解,Vue watch使用的注意事项有哪些,下面就是实战案例,一起来看一下。 watch本身很容易理解, watch负责将视图中的数据与某个函数关联起来 当Vue视图中的数据变化时, 关联的函数会被执行…

    2025年3月8日
    200
  • vue-cli配置文件步骤详解

    本文章适合初学者学习,如有错请提出。近期对vue比较感兴趣,所以准备用vue写一个blog。早期先对vue脚手架了解一下,对于新手官网建议先不用vue-cli,但我觉得如果没有任何的依据凭自己写一个项目(包括webpack的配置等)这无疑是…

    2025年3月8日
    200
  • Vue中component组件使用步骤详解

    这次给大家带来Vue中component组件使用步骤详解,Vue中component组件使用的注意事项有哪些,下面就是实战案例,一起来看一下。 官方的说明 渲染一个“元组件”为动态组件。依 is 的值,来决定哪个组件被渲染。 登录后复制 具…

    2025年3月8日
    200
  • better-scroll插件使用详解(附代码)

    这次给大家带来better-scroll插件使用详解(附代码),better-scroll插件使用的注意事项有哪些,下面就是实战案例,一起来看一下。 better-scroll的使用 由于需要在一个固定的的高度做无限滚动,本来css的ove…

    编程技术 2025年3月8日
    200
  • js构建二叉树数组去重与优化步骤详解

    这次给大家带来js构建二叉树数组去重与优化步骤详解,js构建二叉树数组去重与优化的注意事项有哪些,下面就是实战案例,一起来看一下。 前言 本文主要介绍了关于js构建二叉树进行数值数组的去重与优化的相关内容,分享出来供大家参考学习,下面话不多…

    编程技术 2025年3月8日
    200
  • 非数组对象转数组步骤详解(附代码)

    这次给大家带来非数组对象转数组步骤详解(附代码),非数组对象转数组的注意事项有哪些,下面就是实战案例,一起来看一下。 前言 本文主要汇总了一些JS从非数组对象转数组的方法,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。 A…

    编程技术 2025年3月8日
    200
  • Node module模块使用详解(附代码)

    这次给大家带来Node module模块使用详解(附代码),Node module模块使用的注意事项有哪些,下面就是实战案例,一起来看一下。 在开发复杂Web应用的时候,通常需要把各个功能进行拆分、封装到不同的文件并在需要的时候引用该文件,…

    编程技术 2025年3月8日
    200
  • v-show添加表达式步骤详解

    这次给大家带来v-show添加表达式步骤详解,v-show添加表达式的注意事项有哪些,下面就是实战案例,一起来看一下。 一、需求场景 1、先来说说我的需求,有数据来源和标签类型两行选项,如下图所示: 2、根据需求,我需要在点击上面的某个数据…

    2025年3月8日
    200
  • jQuery+Ajax验证用户名步骤详解

    这次给大家带来jQuery+Ajax验证用户名步骤详解,jQuery+Ajax验证用户名的注意事项有哪些,下面就是实战案例,一起来看一下。 HTML Insert title here //页面加载完成后 $(function() { //…

    编程技术 2025年3月8日
    200

发表回复

登录后才能评论