【前端 VUE】Vue中 excel 导入导出 XLSX
npm安装
npm install -S file-saver xlsx(这里其实安装了2个依赖) npm install -D script-loader
Blob.js,Export2Excel.js下载地址:
然后再main.js中导入这两个文件;
<input id="upload" type="file" @change="importfxx(this)" accept=".csv, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel" />
//导入
importfxx(obj) {
let _this = this;
let inputDOM = this.$refs.inputer;
// 通过DOM取文件数据
this.file = event.currentTarget.files[0];
var rABS = false; //是否将文件读取为二进制字符串
var f = this.file;
var reader = new FileReader();
//if (!FileReader.prototype.readAsBinaryString) {
FileReader.prototype.readAsBinaryString = function(f) {
var binary = "";
var rABS = false; //是否将文件读取为二进制字符串
var pt = this;
var wb; //读取完成的数据
var outdata;
var reader = new FileReader();
reader.onload = function(e) {
var bytes = new Uint8Array(reader.result);
var length = bytes.byteLength;
for (var i = 0; i < length; i++) {
binary += String.fromCharCode(bytes[i]);
}
var XLSX = 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.outdata = outdata;
_this.$message({
message: "导入成功",
type: "success"
});
};
reader.readAsArrayBuffer(f);
};
if (rABS) {
reader.readAsArrayBuffer(f);
} else {
reader.readAsBinaryString(f);
}
},
提炼 导入excel文件 解析数据得到 列表 使用vue elementUI 做示例
引入xlsx插件"xlsx": "^0.16.0"
import XLSX from xlsx
使用elementUI 的上传组件 el-upload
<el-upload class="avatar-uploader" action="uploadImg" :show-file-list="false"
accept=".xlsx, .xls" :http-request="newrequest">
<template #tip>
<div class="el-upload__tip">
{
{上传格式为excel文件}}
</div>
</template>
<span style="color:#0369AB;cursor:pointer;">导入</span>
</el-upload>
上传文件回调事件(newrequest) 获得file 并进行处理
const newrequest = async (param: any) => {
console.log(param)
let dataBinary = await filterFile(param.file)
let Book = XLSX.read(dataBinary, {type: binary, cellDates: true})
let Sheet = Book.Sheets[Book.SheetNames[0]]
const data = XLSX.utils.sheet_to_json(Sheet)
console.log(data)
}
const filterFile = (file:any) => {
return new Promise(resolve => {
let reader = new FileReader()
reader.readAsBinaryString(file)
reader.onload = ev => {
resolve(ev.target.result)
}
})
}
数据结果展示
下一篇:
游戏 找CALL技巧 突破口
