vue中将table导出为excel文件

文章介绍了两种在前端实现Excel导出的方法。一种是使用XLSX插件,通过json_to_sheet将数据转换为工作表,并使用writeFile生成Excel文件。另一种方法需要后端配合,后端返回二进制数据,前端通过Blob对象创建URL并下载。
摘要由CSDN通过智能技术生成

目前实行这个功能的方案有很多,我这里主要介绍两种方法,

第一种 方法,纯前端实现,不需要后端配合,使用xlsx插件来实现

首先安装 xlsx 插件

npm install xlsx
或
yarn add xlsx

在需要使用的地方引入

import XLSX from 'xlsx' 

注意这里可能会遇到一个坑,如何引入完 XLSX运行项目是报这个错误

 报错代码 :

SntaxError: The requested module ‘/node_modules/.vite/deps/xlsx.js?v=3067d777’ does not provide an export named ‘default’

报错原因:

引入的库没有使用export default来导出,而是直接使用export导出一些属性和方法,自然无法使用【import XLSX from 'xxx’】 而只能通过【import {} from 'xxx’】

如何解决:

只需要在引入时改成下面这种引入方式即可

import * as XLSX from 'xlsx'

完整代码:

<template>
<el-button @click="exportToExcel">导出</el-button>
</template>
<script>
import * as XLSX from 'xlsx'  //引入XLSX
//定义方法
const exportToExcel=()=>{
       const worksheet = XLSX.utils.json_to_sheet(props.list);  //table中的数据
    // 可以解决数据在excel中被转换成科学计数法
    const range = XLSX.utils.decode_range(worksheet['!ref']);
    for (let row = range.s.r; row <= range.e.r; row++) {
        for (let col = range.s.c; col <= range.e.c; col++) {
        const cell = worksheet[XLSX.utils.encode_cell({ r: row, c: col })];
        if (cell && cell.t === 'n') {
            cell.t = 's';
        }
        }
    }
    const workbook = XLSX.utils.book_new();
    XLSX.utils.book_append_sheet(workbook, worksheet, 'Sheet1');
      /*生成文件*/
    XLSX.writeFile(workbook, '数据测试表.xlsx');
}
</script>

第二种方法使用 Bold()方法,需要后端来配合实现

首先要调用后端的接口  ,然后使用 Bold()实现现在

注意:responseType要设置为"blod"  将数据转换成二进制格式

 /*导出*/
exportLoansHistory(){
axios.get('/tsinghuasearch/primo/exportLoansHistory'{responseType:'blod'}).then((res)=>{
        if(res.status===200){
          let data = res.data;
             this.download(data)
        }
    })
},

/*下载*/
download(data) {
if (!data) {
return
}
let url = window.URL.createObjectURL(new Blob([data],{type:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"}))
let link = document.createElement('a')
link.style.display = 'none'
link.href = url
link.setAttribute('download', '测试.xlsx')
document.body.appendChild(link)
link.click()
URL.revokeObjectURL(link.href);
document.body.removeChild(link);
},


                
要将Vue 3中的el-table导出Excel,你可以使用以下步骤: 1. 首先,你需要安装`xlsx`和`file-saver`包。在终端中运行以下命令: ``` npm install xlsx file-saver ``` 2. 在你的Vue组件中,导入所需的库: ```javascript import XLSX from 'xlsx'; import { saveAs } from 'file-saver'; ``` 3. 创建一个方法来导出表格数据为Excel文件: ```javascript exportData() { // 获取表格数据 const tableData = this.$refs.table.data; // 创建一个工作簿 const workbook = XLSX.utils.book_new(); // 创建一个工作表 const worksheet = XLSX.utils.json_to_sheet(tableData); // 将工作表添加到工作簿中 XLSX.utils.book_append_sheet(workbook, worksheet, 'Sheet1'); // 将工作簿转换为Excel文件的二进制数据 const excelData = XLSX.write(workbook, { bookType: 'xlsx', type: 'array' }); // 创建一个Blob对象,并保存为Excel文件 const blob = new Blob([excelData], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' }); saveAs(blob, 'table_data.xlsx'); } ``` 4. 在el-table组件上添加一个导出按钮,并调用`exportData`方法: ```html <el-table ref="table"> <!-- 表格内容 --> </el-table> <el-button @click="exportData">导出Excel</el-button> ``` 以上代码将会将el-table中的数据导出为名为`table_data.xlsx`的Excel文件。请确保在`<el-table>`标签上设置了ref属性,以便在`exportData`方法中引用表格数据。 这是使用Vue 3和Element Plus的示例,如果你在项目中使用了其他UI库或版本,请相应地调整代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值