【前端 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技巧 突破口