js 前端獲取excel文件,生成數據傳入后端


需求:需要用戶點擊上傳excel文件,獲取excel數據,進行值的判斷,符合條件通過,不符合過濾

1、使用input file 文件類型的change 事件

<input type="file" ref="upload" accept=".xls,.xlsx,.csv" id="uploadInput" @change="readExcel($event)"/>

2、點擊事件內容

readExcel (e) {
var self = this;
const files = e.target.files;
console.log(files);
if (files.length <= 0) {
this.$toast('請輸入文件名');
return false;
} else if (!/\.(xls|xlsx|.csv)$/.test(files[0].name.toLowerCase())) {
this.$toast('文件上傳失敗,請檢查你的文件格式');
return false;
} else if (files.size >= 3145728) {
this.$toast('文件上傳失敗,大小不能超過3M');
return false;
}
const fileReader = new FileReader();
fileReader.onload = (ev) => {
try {
const data = ev.target.result;
const workbook = XLSX.read(data, {
type: 'binary'
});
const wsname = workbook.SheetNames[0];// 取第一張表
const ws = XLSX.utils.sheet_to_json(workbook.Sheets[wsname]);// 生成json表格內容
console.log(ws);
};
// 文件能夠傳多次
this.$refs.upload.value = '';
fileReader.readAsBinaryString(files[0]);
}
3、數組去重
fliterArry (outputs) {
let hash = {};
let key = '姓名';
let keyCard = '證件號碼';
let keymobile = '手機號碼';
let filiter = outputs.reduce((total, currentValue) => {
if (currentValue[key] === '99') {
if (!hash[currentValue[keymobile]]) {
hash[currentValue[keymobile]] = true;
total.push(currentValue);
}
} else {
if (!hash[currentValue[keyCard]]) {
hash[currentValue[keyCard]] = true;
total.push(currentValue);
}
}
return total;
}, []);
return filiter;
},


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM