vue element 导出 分页数据的excel表格

1.安装相关依赖

npm install --save xlsx file-saver

2.导入相关插件

  在组建头部导入相关插件

const FileSaver  = require("file-saver")
const XLSX   = require("xlsx")

3.调用相关的方法

var wb = XLSX.utils.table_to_book(document.querySelector("#tableBox"))
var wbout = XLSX.write(wb, { bookType: 'xlsx', bookSST: true, type: 'array' })
try {
  FileSaver.saveAs(new Blob([wbout], { type: 'application/octet-stream' }), 'sheetjs.xlsx')
} catch (e) { if (typeof console !== 'undefined') console.log(e, wbout) }

4.分页的数据导出(方法比较基础, 不知道有没有大神知道更好的办法的,请一定要告诉我哦)

4.1点击下载之后先设置,一个参数ableExportOut为true, 保存好当前页面的数据, 赋值新的数据

4.2单数据赋值成功后,会执行updated这个生命周, 在里面判断ableExportOut是否为true, 然后执行下载表格相关的函数

4.3执行完下载表格之后, 吧就数据赋值回去, 把ableExportOut设为false

  updated() {
    if(this.ableExportOut){
      this.exportOut()
    }
  },
  methods: {
      // 执行下载
      activeExportOut(){
        this.ableExportOut = true //设置可以下载
        this.oldtableData = this.tableData //保存起就数据
        this.tableData = test //赋值新数据
      }, 
      //下载表格
      exportOut(){
         var wb = XLSX.utils.table_to_book(document.querySelector("#tableBox"))
         var wbout = XLSX.write(wb, { bookType: 'xlsx', bookSST: true, type: 'array' })
         try {
             FileSaver.saveAs(new Blob([wbout], { type: 'application/octet-stream' }), 'sheetjs.xlsx')
         } catch (e) { if (typeof console !== 'undefined') console.log(e, wbout) }
         
         this.ableExportOut = false //设置不可下载
         this.tableData = this.oldtableData //回复原来说的数据
         return wbout
      }   
  }

  

猜你喜欢

转载自www.cnblogs.com/lianxisheng/p/10802383.html