标签:提取 excel item 导入 let file const tableData childItem
/** * @description: 导入excel并进行数据提取 * @param {type} * @return: */ Vue.prototype.$importExcel = function (file, header) { let _this = this; return new Promise(function (resolve, reject) { const types = file.name.split('.')[1] const fileType = ['xlsx', 'xlc', 'xlm', 'xls', 'xlt', 'xlw', 'csv'].some(item => item === types) if (!fileType) { _this.$message({ type: "warning", message: "文件格式不正确,请重新选择!" }); reject(); } const reader = new FileReader(); reader.onload = function (e) { const data = e.target.result; this.wb = XLSX.read(data, { type: "binary" }); const wsname = this.wb.SheetNames[0]; const ws = this.wb.Sheets[wsname]; /* Convert array of arrays */ const sheetJson = XLSX.utils.sheet_to_json(ws); let tableData = []; //转换为真正的table所需要的数据 for (let item of sheetJson) { let obj = {}; for (let key in item) { for (let childItem of _this.header) { if (key === childItem.label) { obj[childItem.prop] = item[key]; break; } } } tableData.push(obj); } resolve(tableData); }; reader.readAsBinaryString(file.raw); }); }
<template> <div> <el-upload class="upload-demo" ref="upload" :auto-upload="false" :on-change="change" > <el-button style="margin-left: 10px;" size="small" type="success" @click="submitUpload" >上传到服务器</el-button> </el-upload> </div> </template> <script> </script> import XLSX from "xlsx"; export default { methods: { submitUpload() { this.$refs.upload.submit(); }, change(file) { this.$importExcel(file, this.header).then(tableData => { console.log(tableData); }); }, } }
标签:提取,excel,item,导入,let,file,const,tableData,childItem 来源: https://www.cnblogs.com/wangRong-smile/p/11137355.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。