Vue项目实现导入导出Excel表格功能
前提:在我的项目中我使用的是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表格功能的更多相关文章
- PHP导入导出excel表格图片(转)
写excel的时候,我用过pear的库,也用过pack压包的头,同样那些利用smarty等作的简单替换xml的也用过,csv的就更不用谈了.呵呵.(COM方式不讲了,这种可读的太多了,我也写过利用wp ...
- PHP导入导出excel表格图片的代码和方法大全
基本上导出的文件分为两种: 1:类Excel格式,这个其实不是传统意义上的Excel文件,只是因为Excel的兼容能力强,能够正确打开而已.修改这种文件后再保存,通常会提示你是否要转换成Excel文件 ...
- Java代码导入导出 Excel 表格最简单的方法
import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStrea ...
- vue项目使用js-xlsx进行excel表格的导入和导出方法的简单原型封装
前提:已经安装好 file-saver xlsx和 script-loader,如未安装,请查看 https://www.cnblogs.com/luyuefeng/p/8031597.html 新建 ...
- vue项目,前端导出excel
今天研究一下前端如何导出excel,边查边实践,边记录 1.安装依赖库 xlsx:这是一个功能强大的excel处理库,但是上手难度也很大,还涉及不少二进制的东西 file-saver:ES5新增了相关 ...
- Java IO 导入导出Excel表格
1.将excel导入到内存 1. 调用工作簿Workbook的静态方法getWorkbook(),获得工作簿Workbook对象 InputStream in = new FileInputStrea ...
- Java利用POI实现导入导出Excel表格示例代码
转自:https://www.jb51.net/article/95526.htm 介绍 Jakarta POI 是一套用于访问微软格式文档的Java API.Jakarta POI有很多组件组成,其 ...
- JS导入导出Excel表格的方法
https://blog.csdn.net/aa122273328/article/details/50388673 导出 https://blog.csdn.net/qq_37281252/arti ...
- Spring Boot:添加导出Excel表格功能
1.添加POI依赖 2.创建EXCEL实体类 3.创建表格工具类 4.创建ExcelConstant 5.创建ExcelController 1.添加POI依赖 <dependency> ...
- phpexcel 导入导出excel表格
phpexcel中文实用手册 转载:http://www.cnblogs.com/freespider/p/3284828.html 下面是总结的几个使用方法 include 'PHPExcel.ph ...
随机推荐
- STM32外设:通用输入输出 GPIO、EXIT
主要外设: GPIO:General Purpose I/O 一般用途IO EXIT:External Interrupt/Event Controller 外部中断/事件控制器(STM32) 辅助外 ...
- 记一次解决RestTemplate和HttpClient请求结果乱码的问题
调用一个接口,发送POST请求,浏览器和Postman均返回正常,代码中用RestTemplate和HttpClient均返回乱码 开始一直以为是编码问题导致,网上查了解决方法,也看了源码,都不对症 ...
- 【UniApp】-uni-app-修改组件主题和样式
前言 好,经过上个章节的介绍完毕之后,了解了一下 uni-app-扩展组件 那么了解完了uni-app-扩展组件之后,这篇文章来给大家介绍一下 uni-app-修改组件主题和样式 首先不管三七二十一, ...
- mybits_基础
1.框架:一款半成品软件,我们可以基于框架继续开发,从而完成一些个性化的需求 2.ORM:对象关系映射,数据和实体对象的映射 3.MyBatis:是一个优秀的基于Java的持久层框架,它内部封装了JD ...
- CompletableFuture异步编程
1.创建 /** * public static <U> CompletableFuture<U> supplyAsync(Supplier<U> supplier ...
- LR(0)分析法
LR(0)是一种自底向上的语法分析方法.两个基本动作是移进和规约. 具体例子如下 已知文法G[E] (1) E→aА (2) E→bB (3) A→cА (4) A→d (5) B→cB (6) B→ ...
- CTFshow元旦水友赛 CRYPTO WP
CRYPTO 新年祝福 题目 加油!为跨年夜还在努力的自己加油! ctfshow全体工作人员,祝您学业有成,阖家幸福! 解码下面base64 Y3Rmc2hvd3vmlK/ku5jlrp3lj6Pku ...
- Docker下的SqlServer发布订阅启用
一.准备一个Docker的sqlserver #创建挂载数据文件夹 mkdir -p /home/mssql/data #创建挂载日志文件夹 mkdir /home/mssql/log #给文件夹权限 ...
- 一篇文章彻底搞懂TiDB集群各种容量计算方式
背景 TiDB 集群的监控面板里面有两个非常重要.且非常常用的指标,相信用了 TiDB 的都见过: Storage capacity:集群的总容量 Current storage size:集群当前已 ...
- Picker 选择器
WXML 文件中 <view class="container"> <view> <text>选择器的值: {{pickerValue}}< ...