前提:在我的项目中我使用的是ElementUi前端UI框架,用到的是里面的Upload上传组件。

第一步:需要安装三个依赖

npm install -S file-saver xlsx  (这里其实安装了2个依赖)

npm install -D script-loader

第二步:在main.js文件中全局导入挂载xlsx插件

//  导入excel插件

import XLSX from 'xlsx'

Vue.prototype.XLSX = XLSX

第三步:在src目录新建一个文件夹(名字随意),在这个文件夹里面放入2个JS文件分别是:Blob.js和Export2Excel.js,网上可百度下载。

第四步,需要的页面的template标签中开始写代码(我先写导入的代码)

<!-- 导入Excel -->
<el-upload
action="/上传文件的接口"
:on-change="onChange"
:auto-upload="false"
:show-file-list="false"
accept=".xls, .xlsx" >
<el-button type="warning" icon="el-icon-folder-add">批量导入</el-button>
</el-upload>

第五步:然后在  methods: {}中配置方法,代码如下:

 1 // ----------以下为导入Excel数据功能--------------
2 // 文件选择回调
3 onChange(file, fileList) {
4 console.log(fileList);
5 this.fileData = file; // 保存当前选择文件
6 this.readExcel(); // 调用读取数据的方法
7 },
8 // 读取数据
9 readExcel(e) {
10 console.log(e);
11 let that = this;
12 const files = that.fileData;
13 console.log(files);
14 if (!files) {
15 //如果没有文件
16 return false;
17 } else if (!/\.(xls|xlsx)$/.test(files.name.toLowerCase())) {
18 this.$message.error("上传格式不正确,请上传xls或者xlsx格式");
19 return false;
20 }
21 const fileReader = new FileReader();
22 fileReader.onload = ev => {
23 try {
24 const data = ev.target.result;
25 // console.log(data)
26 const workbook = this.XLSX.read(data, {
27 type: "binary"
28 });
29 console.log(workbook.SheetNames);
30 if (workbook.SheetNames.length >= 1) {
31 this.$message({
32 message: "导入数据表格成功",
33 showClose: true,
34 type: "success"
35 });
36 }
37 const wsname = workbook.SheetNames[0]; //取第一张表
38 const ws = this.XLSX.utils.sheet_to_json(workbook.Sheets[wsname]); //生成json表格内容
39 console.log(ws);
40 that.outputs = []; //清空接收数据
41 for (var i = 0; i < ws.length; i++) {
42 var sheetData = {
43 // 键名为绑定 el 表格的关键字,值则是 ws[i][对应表头名]
44 id: ws[i]["id"],
45 stuNumber: ws[i]["学号"],
46 stuName: ws[i]["姓名"],
47 sex: ws[i]["性别"],
48 tel: ws[i]["电话"],
49 xueyuan: ws[i]["学院"],
50 banji: ws[i]["班级"],
51 lyNumber: ws[i]["楼宇号"],
52 sushe: ws[i]["宿舍号"]
53 };
54 that.studentlist.unshift(sheetData);
55 }
56 this.$refs.upload.value = "";
57 } catch (e) {
58 return false;
59 }
60 };
61 // 如果为原生 input 则应是 files[0]
62 fileReader.readAsBinaryString(files.raw);
63 },

此时导入的功能就结束了,下面开始实现导出的功能

第一步,在template标签中写入导出的按钮,并绑定单击事件,代码如下:

<el-button type="warning" icon="el-icon-download" @click="exportToExcel">批量导出</el-button>

第二步:在methods{}方法中写对应的方法

 1 // ----------以下为导出Excel数据功能--------------
2 exportToExcel() {
3 //excel数据导出
4 require.ensure([], () => {
5 const { export_json_to_excel } = require("../../excel/Export2Excel");
6 const tHeader = [
7 "id",
8 "学号",
9 "姓名",
10 "性别",
11 "联系电话",
12 "宿舍号",
13 "学院",
14 "班级",
15 "楼宇号"
16 ];
17 const filterVal = [
18 "id",
19 "stuNumber",
20 "stuName",
21 "sex",
22 "tel",
23 "sushe",
24 "xueyuan",
25 "banji",
26 "lyNumber"
27 ];
28 const list = this.studentlist;
29 const data = this.formatJson(filterVal, list);
30 export_json_to_excel(tHeader, data, "学生列表excel");
31 });
32 },
33 formatJson(filterVal, jsonData) {
34 return jsonData.map(v => filterVal.map(j => v[j]));
35 },

https://www.bilibili.com/video/BV1H7411N7Qq/?spm_id_from=333.788.videocard.0

https://github.com/liyaxu123/-Vue-ElementUi-NodeJS-Mysql-

Vue项目实现导入导出Excel表格功能的更多相关文章

  1. PHP导入导出excel表格图片(转)

    写excel的时候,我用过pear的库,也用过pack压包的头,同样那些利用smarty等作的简单替换xml的也用过,csv的就更不用谈了.呵呵.(COM方式不讲了,这种可读的太多了,我也写过利用wp ...

  2. PHP导入导出excel表格图片的代码和方法大全

    基本上导出的文件分为两种: 1:类Excel格式,这个其实不是传统意义上的Excel文件,只是因为Excel的兼容能力强,能够正确打开而已.修改这种文件后再保存,通常会提示你是否要转换成Excel文件 ...

  3. Java代码导入导出 Excel 表格最简单的方法

    import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStrea ...

  4. vue项目使用js-xlsx进行excel表格的导入和导出方法的简单原型封装

    前提:已经安装好 file-saver xlsx和 script-loader,如未安装,请查看 https://www.cnblogs.com/luyuefeng/p/8031597.html 新建 ...

  5. vue项目,前端导出excel

    今天研究一下前端如何导出excel,边查边实践,边记录 1.安装依赖库 xlsx:这是一个功能强大的excel处理库,但是上手难度也很大,还涉及不少二进制的东西 file-saver:ES5新增了相关 ...

  6. Java IO 导入导出Excel表格

    1.将excel导入到内存 1. 调用工作簿Workbook的静态方法getWorkbook(),获得工作簿Workbook对象 InputStream in = new FileInputStrea ...

  7. Java利用POI实现导入导出Excel表格示例代码

    转自:https://www.jb51.net/article/95526.htm 介绍 Jakarta POI 是一套用于访问微软格式文档的Java API.Jakarta POI有很多组件组成,其 ...

  8. JS导入导出Excel表格的方法

    https://blog.csdn.net/aa122273328/article/details/50388673 导出 https://blog.csdn.net/qq_37281252/arti ...

  9. Spring Boot:添加导出Excel表格功能

    1.添加POI依赖 2.创建EXCEL实体类 3.创建表格工具类 4.创建ExcelConstant 5.创建ExcelController 1.添加POI依赖 <dependency> ...

  10. phpexcel 导入导出excel表格

    phpexcel中文实用手册 转载:http://www.cnblogs.com/freespider/p/3284828.html 下面是总结的几个使用方法 include 'PHPExcel.ph ...

随机推荐

  1. HDU 4787 GRE Revenge

    Now Coach Pang is preparing for the Graduate Record Examinations as George did in 2011. At each day, ...

  2. 在 JMeter 中使用 JSON 提取器提取特定条件下的值

    当你需要在 JMeter 中对接收到的 JSON 响应进行处理时,JSON 提取器是一个非常有用的工具.在本文中,我们将讨论如何使用 JSON 提取器来提取特定条件下的值,以满足你的需求. 问题描述 ...

  3. bash shell笔记整理——cd命令、目录路径

    cd---change directory 改变目录的意思 语法: cd [选项] <目录> 选项: -L 会自动进入符号连接目录(默认) -P 进入符号连接目录的真实目录下. 常用: 命 ...

  4. android webview(外部浏览器)调起app

    最近写的项目中涉及外部浏览器以及项目webview中调起app,所以总结下,和大家分享下. 总的实现方法还是比较简单的, 1:在清单中注册 首先在AndroidManifest文件中,注册一个过滤器 ...

  5. Reformer 模型 - 突破语言建模的极限

    Reformer 如何在不到 8GB 的内存上训练 50 万个词元 Kitaev.Kaiser 等人于 20202 年引入的 Reformer 模型 是迄今为止长序列建模领域内存效率最高的 trans ...

  6. Volcano 原理、源码分析(二)

    0. 总结前置 1. 概述 2. 寻找调度器中的 PodGroup 2.1 从 PodGroup 到 JobInfo 的封装 2.2 从 Pod 到 TaskInfo 的封装 3. 控制器中 PodG ...

  7. servlet怎么实现第一个程序和实现下载文件

    简单介绍一下servlet是什么:1:Servlet是sun公司提供的一门用于开发动态web资源的技术 2:我们若想用发一个动态web资源,需要完成以下2个步骤: 第一步:1.编写一个Java类,实现 ...

  8. Luogu P4524 Ceste 题解

    题目链接:\(\texttt{Luogu P4524 Ceste}\) 简化题意 给定一个有 \(n\) 个点 \(m\) 条边的无向图.每条边的边权为一个二元组 \((a, b)\),求以 \(1\ ...

  9. 高性能网络设计秘笈:深入剖析Linux网络IO与epoll

    本文分享自华为云社区<高性能网络设计秘笈:深入剖析Linux网络IO与epoll>,作者: Lion Long . 一.epoll简介 epoll是Linux内核中一种可扩展的IO事件处理 ...

  10. 解读登录双因子认证(MFA)特性背后的TOTP原理

    摘要:随着互联网密码泄露事件频发,越来越多的产品开始支持多因子认证(MFA),TOTP则是MFA领域里最普遍的一种实现方式,本文介绍TOTP的原理和华为云的实践经验. 原理 TOTP(Time-Bas ...