1.引入工具庫
npm install -S file-saver xlsx
npm install -D script-loader
2.Element 上傳控件
<el-upload class="upload-demo" style="display: inline-block;" action="" :on-change="leading"
:show-file-list="false" accept="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,application/vnd.ms-excel"
:auto-upload="false">
<el-button type="primary" icon="el-icon-upload" circle size="mini"></el-button>
</el-upload>
limitUpload = 1 限制只能上傳1個文件
accept 為默認打開的可上傳的文件格式
:show-file-list="false" 不展示列表
action="" 因為導入,不用寫上傳路徑,只用功能就可以
3. methods
leading(file, fileList) { // 導入
this.importfxx(file.raw)
},
importfxx(obj) { //導入方法
// 通過DOM取文件數(shù)據(jù)
let _this = this
let rABS = false; //是否將文件讀取為二進制字符串
let f = obj
let reader = new FileReader();
//if (!FileReader.prototype.readAsBinaryString) {
FileReader.prototype.readAsBinaryString = function(f) {
let binary = "";
let rABS = false; //是否將文件讀取為二進制字符串
let pt = this;
let wb; //讀取完成的數(shù)據(jù)
let outdata;
let reader = new FileReader();
reader.onload = function(e) {
let bytes = new Uint8Array(reader.result);
let length = bytes.byteLength;
for (let i = 0; i < length; i++) {
binary += String.fromCharCode(bytes[i]);
}
let XLSX = require('xlsx');
if (rABS) {
wb = XLSX.read(btoa(fixdata(binary)), { //手動轉(zhuǎn)化
type: 'base64'
});
} else {
wb = XLSX.read(binary, {
type: 'binary'
});
}
outdata = XLSX.utils.sheet_to_json(wb.Sheets[wb.SheetNames[0]]); //outdata就是你想要的東西
console.log(outdata )
//因為此時outdata 格式為
//[ "單位": "a",
// "測點名稱": "b",
// "描述": "c",
// "測點類型": "d",
// "保留小數(shù)位": "e",
// "默認值": "f",
// "排序": "j"
//]
//以下方法可以改變?yōu)?// [
// "dataUnit": "a",
// "dataName": "b",
// "dataDesc": "c",
// "dataType": "d",
// "dataDecimals": "e",
// "defaultValue": "f",
// "dictSort": "j"
//]
//改變對象key方法
// let result = outdata.map(o=>{return{
//dataUnit:o['單位'],
//dataName:o["測點名稱"],
// dataDesc:o["描述"],
//dataType:o["測點類型"],
//dataDecimals:o["保留小數(shù)位"],
// defaultValue:o["默認值"],
//dictSort:o["排序"],
// }});
//console.log(result )
}
reader.readAsArrayBuffer(f);
}
if (rABS) {
reader.readAsArrayBuffer(f);
} else {
reader.readAsBinaryString(f);
}
},