原标题:Vue+Element前端导入导出Excel

来自:SegmentFault,作者:xrkffgg

1、 前言

1.1 业务场景

由前台导入Excel表格,获取批量数据。

根据一个数组导出Excel表格。

2、 实现原理2.1 引入工具库

file-saver、xlsx、-loader

npm install-S file-saver xlsx

npm install-D -loader 2.2 导入Excel2.2.1 Element 上传控件

class= "upload-demo"

action= ""

: on-change= "handleChange"

: on-exceed= "handleExceed"

: on- remove= "handleRemove"

:file-list= "fileListUpload"

:limit= "limitUpload"

accept= "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,application/vnd.ms-excel"

:auto-upload= "false">

点击上传

只 能 上 传 xlsx / xls 文 件

limitUpload = 1限制只能上传1个文件

accept为默认打开的可上传的文件格式

handleChange(file, fileList){

this.fileTemp = file.raw

},

handleRemove(file,fileList){

this.fileTemp = null

},

fileTemp这里定义了一下变量,指向最新上传的附件,起始定义为null。

这里发现控件file.raw是我们要用的File类型。

2.2.2 导入判断

if( this.fileTemp){

if(( this.fileTemp.type == 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet') || ( this.fileTemp.type == 'application/vnd.ms-excel')){

this.importfxx( this.fileTemp)

} else{

this.$message({

type: 'warning',

message: '附件格式错误,请删除后重新上传!'

})

}

} else{

this.$message({

type: 'warning',

message: '请上传附件!'

})

} 2.2.3 导入函数importfxx(obj) {

let_this = this;

// 通过DOM取文件数据

this.file = obj

varrABS = false; //是否将文件读取为二进制字符串

varf = this.file;

varreader = newFileReader;

//if (!FileReader.prototype.readAsBinaryString) {

FileReader.prototype.readAsBinaryString = function( f){

varbinary = "";

varrABS = false; //是否将文件读取为二进制字符串

varpt = this;

varwb; //读取完成的数据

varoutdata;

varreader = newFileReader;

reader. = function( e){

varbytes = newUint8Array(reader.result);

varlength = bytes.byteLength;

for( vari = 0; i < length; i++) {

binary += String.fromCharCode(bytes[i]);

}

varXLSX = require( 'xlsx');

if(rABS) {

wb = XLSX.read(btoa(fixdata(binary)), { //手动转化

type: 'base64'

});

} else{

wb = XLSX.read(binary, {

type: 'binary'

});

}

outdata = XLSX.utils.sheet_to_json(wb.Sheets[wb.SheetNames[ 0]]); //outdata就是你想要的东西

this.da = [...outdata]

letarr = []

this.da.map( v=>{

letobj = {}

obj.code = v[ '设备ID']

obj.type = v[ '设备型号']

arr.push(obj)

})

returnarr

}

reader.readAsArrayBuffer(f);

}

if(rABS) {

reader.readAsArrayBuffer(f);

} else{

reader.readAsBinaryString(f);

}

},

arr就是我们要的结果,是一个数组。每一个值是个对象,包含了codetype两个属性。

excel中格式为横向 设备ID 和 设备型号。

2.3 导出Excel2.3.1 引入JS文件

可参考下载地址-github :https://github.com/xrkffgg/Ktools/tree/master/JS/002.Excel

将其中的2个JS文件放入到自己的工程中。

2.3.2 修改JS文件中地址

打开Export2Excel.js,会出现如上图所示。由于本人将Blob.js和Export2Excel.js放到了同一级,这里引入是这样的。

这几个文件不支持import引入,所以需要-loader来将他们挂载到全局环境下。

2.3.3 导出函数

getExcel(res) {

require.ensure([], => {

const{ export_json_to_excel } = require( '../../introduce/Export2Excel.js')

consttHeader = [ '姓名', '年龄']

constfilterVal = [ 'name', 'age']

constlist = res

constdata = this.formatJson(filterVal, list)

export_json_to_excel(tHeader, data, '导出列表名称')

})

},

formatJson(filterVal, jsonData) {

returnjsonData.map( v=>filterVal.map( j=>v[j]))

},

这里的引用请根据自己的层级关系和文件夹命名require('../../introduce/Export2Excel.js')

res为传入的数组,格式如:res =[{name:'小白',age:'18'},{name:'小黑',age:'16'}]

tHeader为导出Excel表头名称,导出列表名称即为导出Excel名称。

下载的Excel位置根据浏览器设置的下载位置而定。

3、 后记

感谢支持。若不足之处,欢迎大家指出,共勉。

如果觉得不错,记得 点赞 ,谢谢大家

js导出变量 vue_Vue+Element前端导入导出Excel相关推荐

  1. Vue+Element前端导入导出Excel

    1 前言 1.1 业务场景 由前台导入Excel表格,获取批量数据. 根据一个数组导出Excel表格. 2 实现原理 2.1 引入工具库 file-saver.xlsx.script-loader n ...

  2. linux如何mysql实现导出数据库,Linux下MySQL导入导出数据库

    linux下 一.导出数据库用mysqldump命令(注意mysql的安装路径,即此命令的路径): 1.导出数据和表结构: mysqldump -u用户名 -p密码 数据库名 > 数据库名.sq ...

  3. mysql数据泵导入导出_ORACLE使用数据泵导入导出部分表

    1.导出名字为A的表(这里会导出SEQUENCES及FUNCTION等内容) expdp TEST/TEST@orcl schemas=TEST dumpfile=TEST.dmp DIRECTORY ...

  4. 数据库oracle数据导入导出命令,数据库oracle数据导入导出命令

    exp Oracle数据导入导出imp/exp 功能:Oracle数据导入导出imp/exp就相当与oracle数据还原与备份. 大多情况都可以用Oracle数据导入导出完成数据的备份和还原(不会造成 ...

  5. Vue + Element 实现导入导出Excel

    1.首先搭建Vue 项目(具体可参考以前文章,不再详述:https://blog.csdn.net/qq_42540989/article/details/89853923) 2.引入Element( ...

  6. mysql数据库导出后乱码问题_MySQL导入导出数据出现乱码的解决办法

    在mysql导入导出数据时经常出现中文乱码的问题,大多是因类导入导出时编码设置不一致所引起的.本文介绍了不同平台下的编码转换方法,供大家参考. 在linux系统中默认的是utf8编码,而windows ...

  7. mysql导出数据库报错,navicat 导入导出数据库报错的解决

    在使用navicat导入导出数据功能时,导出没问题,导入总是报错,还遇到了中文乱码.在网上查了很多资料,比如使用了navicat的数据传输功能,但仍然报错,弄了几个小时都没解决. 最后换了种思路,我直 ...

  8. 5.非关系型数据库(Nosql)之mongodb:创建集合,备份与导入导出, 数据还原,导入导出

     1固定集合 固定集合值得是事先创建而且大小固定的集合 2固定集合的特征:固定集合很像环形队列,如果空间不足,最早文档就会被删除,为新的文档腾出空间.一般来说,固定集合适用于任何想要自动淘汰过期属 ...

  9. java 前端导出exvel_使用纯前端做的Excel导出了解一下

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 这是我改造的前端Excel导出,需要引入jQuery插件[复制粘贴即可使用],各位不懂可以试一下.纯属练习 使用JS标签方式将页面数据信息导出xlsx文件 ...

  10. mysql命令导入导出数据库_MYSQL命令行导入导出数据库详解

    Mysql命令行导入数据库: 1,将要导入的.sql文件移至bin文件下,这样的路径比较方便 2,同上面导出的第1步 3,进入MySQL:mysql -u 用户名 -p 如我输入的命令行:mysql ...

最新文章

  1. jdk8中流的使用(二)
  2. 学了那么久的计算机视觉,竟然还不懂YOLO?!
  3. oracle sys sysman system 介绍
  4. 安卓WebView加载网页不显示或者乱跳问题
  5. 软件项目管理:进度管理相关概念介绍
  6. real类型_如何使用REAL方法对您的Web内容进行现实检查
  7. MySQL锁机制,行锁jingran加在索引上
  8. 容器编排技术 -- Kubernetes kubectl create secret generic 命令详解
  9. secureCRT使用退格键(backspace)出现^H解决的方法
  10. 大数据时代,新起的数据有哪几种模型
  11. 年终福利 | “社区之星”(年度贡献者)成长故事征集
  12. 如日中天的Uber到底是用什么开发语言做到的?
  13. Atitit nlp重要节点 v3 目录 1. 语法分析重点 节点余额365个 1 2. nlp词性表 2 2.1. 词语分类13类 2 2.2. 副词 约20个 3 2.3. 代词30个 3 2
  14. win7下cmd乱码
  15. 医院患者随访工作信息化建设可行性报告
  16. 常见的夜间经济项目有哪些?
  17. 云计算入门必备的60条术语
  18. 获取class的三种方式
  19. 集合竞价 连续竞价 开盘价如何产生
  20. 【读官方文档,学原味技术】SpringBoot-Staters和自定义Starter

热门文章

  1. this installer requires you to restart your system to finish installing Microsoft VC
  2. spring 之 AOP 理解
  3. 王思聪吃热狗火了,程序员开发各种恶搞小程序!王校长:我不要脸的啊
  4. 《Haskell函数式编程入门》—— 第1章,第1.6节本章小结
  5. 迭代器java.util.Iterator接口
  6. c#.net 无法直接启动带有“类库输出类型”的项目
  7. Autodesk MapGuide Enterprise 2012开发技术入门培训视频录像下载
  8. “朝三暮四”与“BPO”
  9. 第7章 特种文献检索
  10. 资源冲突导致启动黑屏问题