基于vue2在前端实现导出功能(全部导出、查询导出)

1、下载xlsx插件

2、先查出所需导出表的全部数据,将recordsList换成自己的接口,query替换成自己接口的入参字段。

<el-button class="ml10" type="info" size="small" :loading="downloadLoading" icon="el-icon-printer" @click="exportAllExcel">导出</el-button>


//接口查询全部表数据
        exportAllExcel() {
            this.downloadLoading = true //加载状态,防抖处理
            const allData = []; //定义空数组用来装导出的数据
            let query = JSON.parse(JSON.stringify(this.listQuery))
            query.pageSize = this.total
            query.page = 0
//recordsList是list接口,使用方式和获取list一样,但如果有分页需要查出全部数据,通过接口的total进行全部查询
            recordsList(query).then(res => {
                this.downloadLoading = false
                if (res.code == 200) {
                    allData.push(...res.data.list);
//将查到的数据传给导出方法
                    this.exportExcel(allData);
                }
            });
        },

3、引入插件

import FileSaver from 'file-saver';
import XLSX from 'xlsx';

4、处理表格格式

        
//return自定义表头和表列数据,表列数据是所查询出来的表数据,一一对应字段
exportExcel(r) {
//将接收的list(参数r)进行遍历并将赋给data
            const data = r.map((item) => {
                return {
         "表头名称":item.xxxxx
                }
            })
            const worksheet = XLSX.utils.json_to_sheet(data);  // 将JSON数据(data 变量所代表的数据)转换为一个工作表
            const workbook = { Sheets: { data: worksheet }, SheetNames: ['data'] };  //创建了一个名为workbook的对象,用于表示整个Excel工作簿(也就是一个.xlsx文件的整体结构概念)。
            const excelBuffer = XLSX.write(workbook, { bookType: 'xlsx', type: 'array' });  //使用 XLSX 库的 write 方法来将工作簿对象(workbook)转换为特定格式的数据缓冲区(excelBuffer)
            const blob = new Blob([excelBuffer], { type: 'application/octet-stream' });  //创建了一个 Blob 对象,Blob(Binary Large Object,二进制大对象)在 JavaScript 中常用于表示不可变的、原始数据的类文件对象
            FileSaver.saveAs(blob, 'xxx表.xlsx');  //第一个参数 blob 就是要保存的 Blob 数据对象,第二个参数 'xxx表.xlsx' 则是指定了下载后文件在本地保存时的文件名
        },

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值