vue + element 表格数据导出为excel表格

由于业务内容的需要,我们有时候需要将表格中的数据做导出,生成一个excel表格,以下操作主要实现将element中的table数据生成一个excel表格并做下载操作。

效果图如下:

 点击图中导出按钮时,将表格中的数据导出为一个excel文件并下载。

如下

 操作步骤如下:

1.下载相应的依赖 (命令如下)

npm install --save xlsx file-saver

2.下载完成后引入相应的插件

        1.import FileSaver from "file-saver";

        2.import * as XLSX from "xlsx";

3.在相关页面引入代码后定义方法

exportExcel() {
    //转换成excel时,使用原始的格式
    var xlsxParam = { raw: true };
    let fix = document.querySelector(".el-table__fixed");
    let wb;
    //判断有无fixed定位,如果有的话去掉,后面再加上,不然数据会重复
    if (fix) {
        wb = XLSX.utils.table_to_book(
        document.querySelector("#tableId").removeChild(fix),xlsxParam);
        document.querySelector("#tableId").appendChild(fix);
    } else {
        wb = XLSX.utils.table_to_book(document.querySelector("#tableId"),xlsxParam);
    }
    var wbout = XLSX.write(wb, {
        bookType: "xlsx",
        bookSST: true,
        type: "array",
    });
    try {
        FileSaver.saveAs(new Blob([wbout], { type: "application/octet-stream" }),"导出详情单.xlsx"); 
    } catch (e) {
        if (typeof console !== "undefined") console.log(e, wbout);
        }
    return wbout;
},

4.给el-table中定义一个id

<el-table
    :data="tableData"
    id="tableId"
    style="width: 100%">
</el-table>
步骤基本完成,运行项目后点击导出按钮便可实现表格数据下载导出为excel表。

完整代码如下

<template>
    <div class="administrativeCase-container">
        <div class="content-box">
            <div class="box-btn">
                <div class="btn">
                    <div>
                        <el-button type="primary">导入</el-button>
                        <el-button @click="exportExcel()">导出</el-button>
                    </div>
                </div>
            </div>
            <div class="box-content">
                <el-table
                      :data="tableData"
                      id="tableId"
                      style="width: 100%">
                      <el-table-column
                        prop="date"
                        label="日期"
                        fixed
                        width="180">
                      </el-table-column>
                      <el-table-column
                        prop="name"
                        label="姓名"
                        fixed
                        width="180">
                      </el-table-column>
                      <el-table-column
                        prop="address"
                        label="地址">
                      </el-table-column>
                      <el-table-column
                        prop="date"
                        label="日期"
                                              
                        width="180">
                      </el-table-column>
                      <el-table-column
                        prop="name"
                        label="姓名"
                        width="180">
                      </el-table-column>
                      <el-table-column
                        prop="address"
                        label="地址">
                      </el-table-column>
                      <el-table-column
                        prop="date"
                        label="日期"
                                              
                        width="180">
                      </el-table-column>
                      <el-table-column
                        prop="name"
                        label="姓名"
                        width="180">
                      </el-table-column>
                      <el-table-column
                        prop="address"
                        label="地址">
                      </el-table-column>
                 </el-table>
            </div>
        </div>
    </div>
</template>
 
<script>
    import FileSaver from "file-saver";
    import * as XLSX from "xlsx";
    export default {
        data () {
            return {
                tableData: [{
                    date: '2016-05-02',
                    name: '王小虎',
                    address: '上海市普陀区金沙江路 1518 弄'
                }, {
                    date: '2016-05-04',
                    name: '王小虎',
                    address: '上海市普陀区金沙江路 1517 弄'
                }, {
                    date: '2016-05-01',
                    name: '王小虎',
                    address: '上海市普陀区金沙江路 1519 弄'
                }, {
                    date: '2016-05-03',
                    name: '王小虎',
                    address: '上海市普陀区金沙江路 1516 弄'
                }],
            }
        },
        methods:{
            // 导出
            exportExcel() {
                //转换成excel时,使用原始的格式
                var xlsxParam = { raw: true };
                let fix = document.querySelector(".el-table__fixed");
                let wb;
                //判断有无fixed定位,如果有的话去掉,后面再加上,不然数据会重复
                if (fix) {
                  wb = XLSX.utils.table_to_book(
                  document.querySelector("#tableId").removeChild(fix),xlsxParam
                  );
                  document.querySelector("#tableId").appendChild(fix);
                } else {
                  wb = XLSX.utils.table_to_book(document.querySelector("#tableId"),xlsxParam);
                }
                var wbout = XLSX.write(wb, {
                bookType: "xlsx",
                bookSST: true,
                type: "array",
                });
                try {
                FileSaver.saveAs(
                    new Blob([wbout], { type: "application/octet-stream" }),
                    "导出详情单.xlsx"
                ); //文件名
                } catch (e) {
                if (typeof console !== "undefined") console.log(e, wbout);
                }
                return wbout;
            },
        }
    }
</script>
 
<style>
 
</style>

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
要在Vue 2.x中使用Element UI来导入和导出Excel,你需要安装element-ui和file-saver插件。 首先,在Vue项目中使用npm或yarn安装Element UI和file-saver插件: ``` npm install element-ui file-saver --save ``` 然后,在Vue组件中引入所需的文件: ```javascript import { Button, Table } from 'element-ui' import XLSX from 'xlsx' import FileSaver from 'file-saver' ``` 在组件中,你需要定义导入和导出Excel的方法。下面是一个简单的示例: ```javascript methods: { // 导入Excel handleImportExcel(file) { const reader = new FileReader() reader.onload = (e) => { const data = new Uint8Array(e.target.result) const workbook = XLSX.read(data, { type: 'array' }) const worksheet = workbook.Sheets[workbook.SheetNames[0]] const jsonData = XLSX.utils.sheet_to_json(worksheet, { header: 1 }) // 处理导入的Excel数据 console.log(jsonData) } reader.readAsArrayBuffer(file.raw) }, // 导出Excel handleExportExcel() { const jsonData = [ ['姓名', '年龄', '性别'], ['张三', 18, '男'], ['李四', 20, '女'] ] const worksheet = XLSX.utils.aoa_to_sheet(jsonData) const workbook = XLSX.utils.book_new() XLSX.utils.book_append_sheet(workbook, worksheet, 'Sheet1') const excelBuffer = XLSX.write(workbook, { bookType: 'xlsx', type: 'array' }) const excelData = new Blob([excelBuffer], { type: 'application/octet-stream' }) FileSaver.saveAs(excelData, 'example.xlsx') } } ``` 最后,在模板中使用Element UI的Button和Table组件,分别绑定导入和导出Excel的方法: ```html <template> <div> <el-button type="primary" @change="handleImportExcel">导入Excel</el-button> <el-table :data="tableData"> <!-- 表格内容 --> </el-table> <el-button type="success" @click="handleExportExcel">导出Excel</el-button> </div> </template> ``` 这样,你就可以在Vue项目中使用Element UI来导入和导出Excel了。当用户选择一个Excel文件时,`handleImportExcel`方法将会被触发,并将Excel数据转换为JSON数据进行处理。而`handleExportExcel`方法则会将JSON数据转换为Excel文件并进行下载。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值