Vue+Element表格通过前端导出为Excel文件[通俗易懂]

Vue+Element表格通过前端导出为Excel文件[通俗易懂]注:此方法能够导出多级表格,默认已安装ElementUI。 注:表格导出实现解释,给展示表格添加选择功能,通过handleSelectionChange函数将选中数据与selectData绑定,在选中需要导出数据后点击导出按钮,展示el-dialog并将selectData数据…

注:此方法能够导出多级表格,默认已安装ElementUI。

  1. 安装xlsx库
npm install xlsx 

代码100分

  1. 安装file-saver库
代码100分npm install file-saver
  1. 编写保存函数,文件位置:src/utils/htmlToExcel.js
import FileSaver from "file-saver";
import XLSX from "xlsx";

const  htmlToExcel = {
    getExcel(dom,title='默认标题',){
        var excelTitle = title;
        var wb = XLSX.utils.table_to_book(document.querySelector(dom));
        /* 获取二进制字符串作为输出 */
        var wbout = XLSX.write(wb, {bookType: "xlsx",bookSST: true,type: "array"});
        try {
            FileSaver.saveAs(
                new Blob([wbout], { type: "application/octet-stream" }),
                excelTitle + ".xlsx"
            );
        } catch (e) {
            if (typeof console !== "undefined") console.log(e, wbout);
        }
        return wbout;
    }
};

export default  htmlToExcel;

  1. 使用函数,文件位置src/views/TablePage.vue

注:表格导出实现解释,给展示表格添加选择功能,通过handleSelectionChange函数将选中数据与selectData绑定,在选中需要导出数据后点击导出按钮,展示el-dialog并将selectData数据展示在el-dialog中的表格,此表格为最后导出的表格,所以id赋值selectTable,最后确认打印调用exportExcel函数,通过htmlToExcel.getExcel(‘#selectTable’,’导出的自定义标题’)导出Excel文件。

代码100分<template>
    <div>
        <!--导出按钮-->
        <el-button type="primary" style="margin:20px;" @click="exportExcelSelect">导出Excel</el-button>
        <!--原始表格-->
        <el-table :data="tableData" @selection-change="handleSelectionChange" >
            <el-table-column type="selection" >
            </el-table-column>
            <el-table-column prop="date" label="日期" >
            </el-table-column>
            <el-table-column prop="name" label="姓名" >
            </el-table-column>
            <el-table-column label="详细地址">
                <el-table-column prop="province" label="省份" >
                </el-table-column>
                <el-table-column prop="city" label="市区" >
                </el-table-column>
                <el-table-column prop="address" label="地址" >
                </el-table-column>
                <el-table-column prop="zip" label="邮编" >
                </el-table-column>
            </el-table-column>
            <el-table-column fixed="right" label="操作" >
                <template>
                    <el-button type="text" size="small">查看</el-button>
                    <el-button type="text" size="small">编辑</el-button>
                </template>
            </el-table-column>
        </el-table>
        <!--预览弹窗表格-->
        <el-dialog title="表格保存预览" width="70%" :visible.sync="selectWindow">
            <el-table :data="selectData" id="selectTable" height="380px">
                <el-table-column prop="date" label="日期" >
                </el-table-column>
                <el-table-column prop="name" label="姓名" >
                </el-table-column>
                <el-table-column label="详细地址">
                    <el-table-column prop="province" label="省份" >
                    </el-table-column>
                    <el-table-column prop="city" label="市区" >
                    </el-table-column>
                    <el-table-column prop="address" label="地址" >
                    </el-table-column>
                    <el-table-column prop="zip" label="邮编" >
                    </el-table-column>
                </el-table-column>
            </el-table>
            <div slot="footer" class="dialog-footer">
                <el-button type="primary" @click="exportExcel">确定保存</el-button>
            </div>
        </el-dialog>
    </div>
</template>

<script> import htmlToExcel from '@/utils/htmlToExcel' export default { name: "ExcelPage", data(){ return{ //表格数据 tableData: [ { date: '2016-05-03', name: '王小天', province: '上海', city: '普陀区', address: '上海市普陀区金沙江路 1518 弄', zip: 200333 }, { date: '2016-05-02', name: '王小明', province: '上海', city: '普陀区', address: '上海市普陀区金沙江路 1518 弄', zip: 200333 }, { date: '2016-05-04', name: '王小智', province: '上海', city: '普陀区', address: '上海市普陀区金沙江路 1518 弄', zip: 200333 }, { date: '2016-05-01', name: '王小红', province: '上海', city: '普陀区', address: '上海市普陀区金沙江路 1518 弄', zip: 200333 }, { date: '2016-05-08', name: '王小华', province: '上海', city: '普陀区', address: '上海市普陀区金沙江路 1518 弄', zip: 200333 }, { date: '2016-05-06', name: '王小丽', province: '上海', city: '普陀区', address: '上海市普陀区金沙江路 1518 弄', zip: 200333 }, { date: '2016-05-07', name: '王小花', province: '上海', city: '普陀区', address: '上海市普陀区金沙江路 1518 弄', zip: 200333 } ], //表格中选中的数据 selectData:[], selectWindow:false, } }, methods:{ //导出 exportExcel() { htmlToExcel.getExcel('#selectTable','导出的自定义标题') }, //显示预览弹窗 exportExcelSelect(){ if (this.selectData.length < 1){ this.$message.error('请选择要导出的内容!'); return false; } this.selectWindow = true; }, //选中数据 handleSelectionChange(val) { this.selectData = val; } } } </script>

<style scoped>
</style>

本文演示视频:点击浏览

更多前端内容欢迎关注公众号:天小天个人网

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/11336.html

(0)
上一篇 2023-03-02
下一篇 2023-03-02

相关推荐

  • python计算需要最少数量,python计算最小值「建议收藏」

    python计算需要最少数量,python计算最小值「建议收藏」# 2021-05-11 Luke

    2023-08-25
    120
  • 如何使用 SQL ORDER BY 根据需要排序检索出的数据[亲测有效]

    如何使用 SQL ORDER BY 根据需要排序检索出的数据[亲测有效]本文介绍如何使用 SQL ORDER BY 子句,对检索出的数据进行排序。根据需要,可以利用它在一个或多个列上对数据进行排序。 一、排序数据 正如 如何使用 SQL 的 SELECT 语句从表中检索一

    2023-05-12
    136
  • Python Union

    Python UnionPython Union是一个新兴的Python社区组织,旨在为Python程序员打造一个活跃、创新和包容的社区。该组织由一群对Python有着共同兴趣和热情的程序员组成,致力于促进Python的发展和推广。

    2024-05-15
    62
  • SQL分库分表_分库分表 分页查询

    SQL分库分表_分库分表 分页查询历史背景 MySql性能瓶颈 1. 表数据量过大 2. Sql查询过于复杂 3. Sql没走索引 4. 数据库服务器性能低 解决方案 阿里开发手册:单表行数超过500W或者单表容量超过2G 数据库分库

    2023-05-03
    160
  • 如何安装virtualenv

    如何安装virtualenv在Python开发过程中,常常需要在同一台机器上同时使用多个项目,每个项目需要不同版本的Python解释器和依赖包,但不同版本之间有可能会产生冲突。这时,一个虚拟环境就派上了用场。其中,Virtualenv是Python中最常用的虚拟环境管理工具之一。

    2024-08-03
    27
  • 使用Python tkinter实现输入框

    使用Python tkinter实现输入框Tkinter是Python自带的GUI库,它是Tk GUI工具箱的Python接口,是Python编程语言的标准GUI库之一,具有跨平台性。Tkinter库用于Python图形用户界面编程,支持Windows、Linux、Mac OS X等操作系统。

    2024-03-02
    90
  • Python库安装目录

    Python库安装目录在Python编程中,库是经常使用的工具,为了使用它们,我们需要知道库的安装目录。本文将从多个方面对Python库安装目录进行详细的阐述。

    2024-09-21
    14
  • Redis系列(二)Redis的8种数据类型

    Redis系列(二)Redis的8种数据类型NoSQL 开发中或多或少都会用到,也是面试必问知识点。最近这几天的面试每一场都问到了。但是感觉回答的并不好,还有很多需要梳理的知识点。这里通过几篇 Redis 笔记整个梳理一遍,后面再加上面试题。

    2023-02-28
    158

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注