Vue+ElementUI实现选择指定行导出Excel

这里记录一下,今天写项目时 的一个需求,就是通过复选框选中指定行然后导出表格中选中行的Excel表格

然后这里介绍一个工具箱(模板):vue-element-admin

将它拉取后,运行就可以看到如下界面:

这里面的很多功能都已经实现了,比如上图我标记的导出Excel、Zip、PDF等。。。

然后这里我们实现的是导出Excel,我们拷贝所要实现功能的代码、文件。

拷贝这两个方法到你的项目中需要导出Excel的组件中,将handleDownload方法绑定到导出按钮上

拷贝这个js文件到你的项目中

然后需要安装这两个依赖

npm install xlsx@0.14.1

npm install file-saver@2.0.1

通过了解,xlsx和file-saver是通过将JSON数据转为Excel。那这个就好说了!!!

这里解释一下:

可以去Element官方文档查看多选表格: 组件 | Element

:key 很重要!!! 本人踩的坑

如果你的项目表格中,没有删除功能、修改功能的话,那就可以不写它(:key)!!!

因为设置reserve-selection为true:在数据更新之后保留之前选中的数据。如果你的项目需求只是要求当前页导出的话,那可以不设置它!

如果需求是:后端是一页一页的返回数据。当选中第一页的某些行,点击第二页再选中第二页的行,最后点击按钮将第一页和第二页选中的行都导出!这样的话就必须设置这个属性为true。将它设置为true之后表格中又有删除、修改操作,就必须为表格写上:key,然后在修改、删除方法内更新这个值,否则你先选中某行,然后对该行进行了修改操作,此时你导出Excel它的数据还是你修改前的数据。你先选中一些行,然后删除这些行中的其中一行,此时你导出Excel它的数据还是会保留已经删除的数据

val就是你当前选中行的数据

javascript 复制代码
handleDownload() {
      // console.log(this.list)
      this.downloadLoading = true
      import('@/vendor/Export2Excel').then(excel => {
        const tHeader = ['编号', '姓名', '性别', '联系电话', '在校教龄(单位:年)', '职位']
        const filterVal = ['teaId', 'teaName', 'teaSex', 'teaPhone', 'seniority', 'teaType']
        const list = this.list
        const data = this.formatJson(filterVal, list)
        // console.log(data)
        excel.export_json_to_excel({
          header: tHeader,
          data,
          filename: this.filename,
          autoWidth: this.autoWidth,
          bookType: this.bookType
        })
        this.downloadLoading = false
      })
    },
    formatJson(filterVal, jsonData) {
      return jsonData.map(v => filterVal.map(j => {
        if (j === 'teaSex') {
          if (v[j]) {
            return '女'
          }
          return '男'
        }
        if (j === 'teaType') {
          if (v[j]) {
            return '教员'
          }
          return '班主任'
        }
        return v[j]
      }))
    }

这里我的代码,由于性别和类型是Boolean类型所以加了一个if判断。

tHeader就是你导出去的列名称,filterVal就是你要导出的列名

效果

如有帮助到你,请点一个关注。相互学习!!!

相关推荐
ruleslol1 分钟前
VBA02-初识宏——EXCEL录像机
excel·vba
IT铺子1 分钟前
制定Excel使用规范和指导,提升数据处理的效率和准确性,减少错误和数据丢失的风险
excel
是萝卜干呀4 分钟前
Backend - Python 爬取网页数据并保存在Excel文件中
python·excel·table·xlwt·爬取网页数据
guai_guai_guai30 分钟前
uniapp
前端·javascript·vue.js·uni-app
王哲晓2 小时前
第三十章 章节练习商品列表组件封装
前端·javascript·vue.js
理想不理想v2 小时前
‌Vue 3相比Vue 2的主要改进‌?
前端·javascript·vue.js·面试
酷酷的阿云2 小时前
不用ECharts!从0到1徒手撸一个Vue3柱状图
前端·javascript·vue.js
GIS程序媛—椰子3 小时前
【Vue 全家桶】7、Vue UI组件库(更新中)
前端·vue.js
我血条子呢4 小时前
[Vue]防止路由重复跳转
前端·javascript·vue.js
半开半落4 小时前
nuxt3安装pinia报错500[vite-node] [ERR_LOAD_URL]问题解决
前端·javascript·vue.js·nuxt