iview table导出功能

因为感觉从服务端导出表格太繁琐了,所以想直接从客户端导出,接下来介绍一下iview table如何导出,本文引用了https://blog.csdn.net/zcfzfc123456789/article/details/99569513的代码,只是感觉这个作者写的有点难懂,所以在他的基础上修改了一下(如有侵权,可以联系我删除该文章)

  1 <!DOCTYPE html>
  2 <html lang="en">
  3 <head>
  4     <meta charset="UTF-8">
  5     <title>Title</title>
  6     <link rel="stylesheet" href="../resources/iview.css">
  7 </head>
  8 <body>
  9 
 10 <div id="app">
 11     <div>
 12         <i-button type="primary" @click="exportTable(false)">导出选中</i-button>
 13         <i-button type="primary" @click="exportTable(true)">导出全部</i-button>
 14     </div>
 15     <i-table border stripe ref="tables" :columns="tableColumns" :data="tableData" @on-selection-change='selectChange'></i-table>
 16 </div>
 17 
 18 <script src="../resources/vue.min.js"></script>
 19 <script src="../resources/iview.min.js"></script>
 20 <script>
 21     const app = new Vue({
 22         el: "#app",
 23         data: {
 24             selectList:[],
 25             tableColumns: [
 26                 {
 27                     type: 'selection',
 28                      60,
 29                     align: 'center'
 30                 },
 31                 {
 32                     title: '姓名',
 33                     key: 'name'
 34                 },
 35                 {
 36                     title: '年龄',
 37                     key: 'age'
 38                 },
 39                 {
 40                     title: '地址',
 41                     key: 'address'
 42                 },
 43                 {
 44                     title: '日期',
 45                     key: 'date'
 46                 }
 47             ],
 48             tableData: [
 49                 {
 50                     name: 'John Brown',
 51                     age: 18,
 52                     address: 'New York No. 1 Lake Park',
 53                     date: '2016-10-03'
 54                 },
 55                 {
 56                     name: 'Jim Green',
 57                     age: 24,
 58                     address: 'London No. 1 Lake Park',
 59                     date: '2016-10-01'
 60                 },
 61                 {
 62                     name: 'Joe Black',
 63                     age: 30,
 64                     address: 'Sydney No. 1 Lake Park',
 65                     date: '2016-10-02'
 66                 },
 67                 {
 68                     name: 'Jon Snow',
 69                     age: 26,
 70                     address: 'Ottawa No. 2 Lake Park',
 71                     date: '2016-10-04'
 72                 }
 73             ]
 74         },
 75         methods: {
 76             exportTable(status){
 77                 if(status){
 78                     this.$refs.tables.selectAll(status);
 79                 }
 80                 this.$refs.tables.exportCsv({
 81                     filename: `二手业绩报表.csv`,
 82                     columns: this.tableColumns.filter((col, index) => index > 0),
 83                     data: this.tableData.filter((data, index) => {
 84                         for (let i = 0; i < this.selectList.length; i++) {
 85                             if (this.compareObject(data, (this.selectList)[i])) {
 86                                 return true
 87                             }
 88                         }
 89                         return false
 90                     })
 91                 })
 92             },
 93             compareObject(obj1, obj2) {
 94                 var attrs1 = Object.keys(obj1)
 95                 var attrs2 = Object.keys(obj2)
 96                 if (attrs1.length !== attrs2.length) {
 97                     return false
 98                 }
 99                 for (var j = 0; j < attrs1.length; j++) {
100                     var attrNames = attrs1[j]
101                     if (obj1[attrNames] !== obj2[attrNames]) {
102                         return false
103                     }
104                 }
105                 return true
106             },
107             selectChange() {
108                 //  选中的项
109                 this.selectList = []
110                 this.selectList = this.$refs.tables.getSelection()
111             }
112         }
113     })
114 </script>
115 </body>
116 </html> 
原文地址:https://www.cnblogs.com/CodeBunny/p/14301356.html