<a-upload accept=".csv, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel"
:beforeUpload="beforeUpload" @change="handleFileChange">
<a-button type="primary">导入Excel</a-button>
</a-upload>
methods:
//导入excel
beforeUpload(file){
let _this = this
return new Promise(function(resolve, reject){
// readExcel方法也使用了Promise异步转同步,此处使用then对返回值进行处理
_this.readExcel(file).then(result => {
// 此时标识校验成功,为resolve返回
if (result) resolve(result)
})
})
},
//解析Excel
readExcel(file) {
let _this = this
return new Promise(function (resolve, reject) {// 返回Promise对象
const reader = new FileReader()
reader.onload = (e) => {// 异步执行
try {
// 以二进制流方式读取得到整份excel表格对象
let data = e.target.result, workbook = XLSX.read(data, {type: 'binary'})
const exlname = workbook.SheetNames[0] // 取第一张表
const exl = XLSX.utils.sheet_to_json(workbook.Sheets[exlname]) // 生成json表格内容
console.log(exl)
let arr = []
exl.map((v, i) => {
let obj = {}
//对获取的Excel数据进行操作
arr.push(obj)
})
_this.dataSource = arr
resolve()
} catch (e) {
reject(e.message)
}
}
reader.readAsBinaryString(file)
})
},
导入excel表格(随机表头)
于 2021-10-11 19:30:55 首次发布