elementUI--关于导出功能(纯前端)

只能导出当前页:

第一步:npm安装依赖:npm install --save xlsx file-saver

第二步:页面引入:

1 import FileSaver from 'file-saver'
2 import XLSX from 'xlsx'

第三步:绑定导出事件,在methods写:

 1 exportA() {
 2       var xlsxParam = { raw: true }
 3       var wb = XLSX.utils.table_to_book(document.querySelector("#clientUserData"), xlsxParam)
 4       var wbout = XLSX.write(wb, {
 5         bookType: "xlsx",
 6         bookSST: true,
 7         type: "array"
 8       })
 9       try {
10         FileSaver.saveAs(
11           new Blob([wbout], { type: "application/octet-stream" }),
12           "fileName.xlsx"
13         )
14       } catch (e) {
15         if (typeof console !== "undefined") console.log(e, wbout)
16       }
17       return wbout
18 }

碰到有分页的情况:需要导出所有数据,上面的方法就不好用了。提供另一种解决方法,举个例子:

 1     exportA() {
 2       const form = {
 3         keyword: this.keyword,
 4         userType: "client"
 5       }
 6     //接口方法名
 7       fetchUserList({
 8         ...form
 9       }).then((res) => {
10         this.listLoading = false
11         if (res.data.status !== 0) {
12           this.$notify({ title: this.$t('elements.failed'), message: this.$t('elements.acqui') + this.$t('elements.failed'), type: 'error', duration: 2000 })
13           return
14         }
15     //后台获取的数据
16         this.exportExcelList = res.data.data.list
17         import('@/vendor/Export2Excel').then(excel => {
18     //表格的表头  自行修改
19           const tHeader = ['用户名', '昵称', '手机号', '注册时间', '状态', '子账号数量']
20     // 对应的数据字段名  自行修改
21           const filterVal = ['username', 'nick', 'phoneNumber', 'ctime', 'userStatus', 'subAccounts']
22     //后台获取的数据
23           let list = this.exportExcelList
24     //自定义导出文件名
25           const filename = 'fileName'
26           const data = this.formatJson(filterVal, list)
27           excel.export_json_to_excel(
28             tHeader,
29             data,
30             filename
31           )
32         })
33       })
34     },
35     formatJson(filterVal, jsonData) {
36       return jsonData.map(v => filterVal.map(j => {
37         if (j === 'timestamp') {
38           return parseTime(v[j])
39         } else {
40           return v[j]
41         }
42       }))
43     }

 

posted @ 2020-11-23 16:00  行走的蒲公英  阅读(165)  评论(0编辑  收藏  举报