Element-ui Table表格导出功能的实现

简介: Element-ui Table表格导出功能的实现


1. 效果

image.png

2. 需要的库

我们这里需要用到两个库:

FileSaver:

  • FileSaver 是一个用于在浏览器中保存文件的 JavaScript 库。
  • 它提供了一种简单的方式来将数据保存为文件并下载到用户的计算机上。
  • FileSaver 支持保存各种类型的文件,包括文本文件、图像文件、PDF 文件等。
  • 它是一个独立的库,不依赖于其他第三方库。

XLSX:

  • XLSX 是一个用于读取、解析和生成 Excel 文件的 JavaScript 库。
  • 它可以处理各种 Excel 文件格式,包括 .xls 和 .xlsx 等。
  • XLSX 提供了一组功能强大的 API,使您能够读取和修改 Excel 文件的内容、样式和格式。
  • 它是一个独立的库,不依赖于其他第三方库。

3. 安装

shell

npm install file-saver xlsx

4. 导出表格

表格导出的主要代码

html

<el-button color="#4b5cc4" :icon="Download" @click="exportExcel">导出为Excel</el-button>
<!-- 表格 -->
<div class="table">
     <el-table :data="productManagerInfo" border style="width: 100%" id="productTable">
                <!-- 索引 -->
          <el-table-column type="index" label="id" />
          <el-table-column prop="account" label="账号" />
          <el-table-column prop="name" label="姓名" />
          <el-table-column prop="sex" label="性别" />
          <el-table-column prop="department" label="部门" />
          <el-table-column prop="identity" label="身份" />
          <el-table-column prop="email" label="邮箱" />
          <el-table-column label="操作" width="200">
          <!-- 编辑 -->
          <template #default="scope"> <!-- 作用域插槽 -->
                    <el-button size="small" type="primary" @click="handleEdit(scope.$index, scope.row)">编辑</el-button>
                        <!-- 删除 -->
                     <el-button size="small" type="danger" @click="handleDelete(scope.$index, scope.row)">删除</el-button>
          </template>
         </el-table-column>
         
     </el-table>
</div>

js

import * as FileSaver from "file-saver";
import * as XLSX from "xlsx";
// 导出表格按钮点击后触发的事件
const exportExcel = () => {
    /* 从表生成工作簿对象 */
    var wb = XLSX.utils.table_to_book(document.querySelector("#productTable"));
    /* 获取二进制字符串作为输出 */
    var wbout = XLSX.write(wb, {
        bookType: "xlsx",
        bookSST: true,
        type: "array"
    });
    try {
        // 使用 FileSaver 将二进制数据保存为文件
        FileSaver.saveAs(
            new Blob([wbout], { type: "application/octet-stream" }),
            // 设置导出文件名称
            "product.xlsx"
        );
    } catch (e) {
        // 处理异常,例如在不支持 Blob 或 FileSaver 的情况下
        if (typeof console !== "undefined") console.log(e, wbout);
    }
    // 返回二进制字符串(可选,根据实际需求)
    return wbout;
}

5. api说明

讲解一下代码里面用到的api:

  1. XLSX.utils.table_to_book 这个函数从一个HTML表格中生成一个工作簿对象(Workbook)。document.querySelector("#productTable") 选择了具有 id 为 productTable 的表格元素。
  2. XLSX.write 这个函数将工作簿对象转换为二进制字符串。
    bookType: "xlsx" 指定了导出的文件类型为 Excel 文件
    type: "array" 表示输出的数据格式为数组。
  3. FileSaver.saveAs 这里使用 FileSaver.js 库将二进制数据保存为文件。
    Blob([wbout], { type: "application/octet-stream" }) 创建一个 Blob 对象,表示二进制数据,并设置其 MIME 类型为 "application/octet-stream",这是一个通用的二进制文件类型. FileSaver.saveAs 函数将这个 Blob 对象保存为文件,其中第二个参数为文件名,这里设置为 "product.xlsx"。
  4. try catch: 在尝试保存文件时,可能会出现异常,例如在不支持 Blob 或 FileSaver 的浏览器中。异常会被捕获,并在控制台中记录。


目录
相关文章
|
6月前
|
JavaScript
element-ui table表格多选后再打开默认选中
element-ui table表格多选后再打开默认选中
|
6月前
|
搜索推荐 前端开发 C#
推荐7款美观且功能强大的WPF UI库
推荐7款美观且功能强大的WPF UI库
393 2
|
7月前
|
前端开发 JavaScript UED
element-ui 表格数据究竟隐藏着怎样的神秘样式与格式化技巧?快来揭开谜底!
【8月更文挑战第22天】《element-ui 表格数据样式及格式化案例》展示了如何利用 element-ui 的表格组件实现美观且易读的数据展示。通过简单配置,可以自定义表格样式,如边框、背景色等,并通过 formatter 实现数据格式化,例如将成绩保留一位小数。此外,还能依据条件设置行样式,如成绩达优则高亮显示,从而增强用户体验和数据可读性。
111 1
|
7月前
|
计算机视觉
ElementUI——vue2+element-ui 2.x的动态表格和表单
ElementUI——vue2+element-ui 2.x的动态表格和表单
215 1
|
7月前
|
JavaScript 开发者
Element UI & Element Plus之改变表格单元格颜色
这篇文章展示了如何在Element UI和Element Plus框架中使用`:cell-style`属性来根据条件改变表格单元格的颜色。
606 0
Element UI & Element Plus之改变表格单元格颜色
|
7月前
|
图形学
小功能⭐️Unity获取点击到的UI
小功能⭐️Unity获取点击到的UI
|
1月前
|
前端开发 安全 开发工具
【11】flutter进行了聊天页面的开发-增加了即时通讯聊天的整体页面和组件-切换-朋友-陌生人-vip开通详细页面-即时通讯sdk准备-直播sdk准备-即时通讯有无UI集成的区别介绍-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
【11】flutter进行了聊天页面的开发-增加了即时通讯聊天的整体页面和组件-切换-朋友-陌生人-vip开通详细页面-即时通讯sdk准备-直播sdk准备-即时通讯有无UI集成的区别介绍-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
174 90
【11】flutter进行了聊天页面的开发-增加了即时通讯聊天的整体页面和组件-切换-朋友-陌生人-vip开通详细页面-即时通讯sdk准备-直播sdk准备-即时通讯有无UI集成的区别介绍-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
|
4月前
|
搜索推荐 Android开发 开发者
探索安卓开发中的自定义视图:打造个性化UI组件
【10月更文挑战第39天】在安卓开发的世界中,自定义视图是实现独特界面设计的关键。本文将引导你理解自定义视图的概念、创建流程,以及如何通过它们增强应用的用户体验。我们将从基础出发,逐步深入,最终让你能够自信地设计和实现专属的UI组件。
|
17天前
|
存储 人工智能 编译器
【03】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-测试hello word效果-虚拟华为手机真机环境调试-为DevEco Studio编译器安装中文插件-测试写一个滑动块效果-介绍诸如ohos.ui等依赖库-全过程实战项目分享-从零开发到上线-优雅草卓伊凡
【03】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-测试hello word效果-虚拟华为手机真机环境调试-为DevEco Studio编译器安装中文插件-测试写一个滑动块效果-介绍诸如ohos.ui等依赖库-全过程实战项目分享-从零开发到上线-优雅草卓伊凡
37 10
【03】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-测试hello word效果-虚拟华为手机真机环境调试-为DevEco Studio编译器安装中文插件-测试写一个滑动块效果-介绍诸如ohos.ui等依赖库-全过程实战项目分享-从零开发到上线-优雅草卓伊凡
|
18天前
|
JavaScript 数据安全/隐私保护
Vue Amazing UI 组件库(Vue3+TypeScript+Vite 等最新技术栈开发)
Vue Amazing UI 是一个基于 Vue 3、TypeScript、Vite 等最新技术栈开发构建的现代化组件库,包含丰富的 UI 组件和常用工具函数,并且持续不断维护更新中。另外,组件库全量使用 TypeScript,支持自动按需引入和 Tree Shaking 等,能够显著提升开发效率,降低开发成本。
49 5
Vue Amazing UI 组件库(Vue3+TypeScript+Vite 等最新技术栈开发)

热门文章

最新文章