一、安装依赖
npm install file-saver xlsx -S
npm install script-loader -D
二、按需引入(在用到的组件中引入)
import * as XLSX from 'xlsx'
三、使用(全部代码)
<template>
<div class="function-point-container">
<!-- 批量导入 -->
<el-button
type="primary"
@click="$refs.excelBtn.click()"
>批量导入</el-button>
<el-upload
v-show="false"
accept="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,application/vnd.ms-excel"
action
:auto-upload="false"
:show-file-list="false"
:on-change="importData"
>
<span ref="excelBtn">导入EXCEL</span>
</el-upload>
</div>
</template>
<script>
import * as XLSX from 'xlsx'
export default {
name: 'FunctionPoint',
data() {
return {}
},
created() {},
methods: {
importData(file, fileList) {
const f = file.raw
let reader = new FileReader()
FileReader.prototype.readAsBinaryString = f => {
let binary = ''
let wb
let outdata
let reader = new FileReader()
reader.onload = e => {
let bytes = new Uint8Array(reader.result)
let length = bytes.byteLength
for (let i = 0; i < length; i++) {
binary += String.fromCharCode(bytes[i])
}
wb = XLSX.read(binary, {
type: 'binary',
cellDates: false
})
outdata = XLSX.utils.sheet_to_json(wb.Sheets[wb.SheetNames[0]])
const result = this.generateParam(outdata)
console.log('result--', result)
}
reader.readAsArrayBuffer(f)
}
reader.readAsBinaryString(f)
},
generateParam(data) {
const params = []
const parse = {
序号: 'index',
姓名: 'name',
性别: 'sex',
年龄: 'age',
手机号: 'phone',
地址: 'address'
}
data.forEach(item => {
let obj = {}
const keys = Object.keys(parse)
const itemKeys = Object.keys(item)
itemKeys.forEach(key => {
const val = item[key]
if (keys.includes(key)) {
obj[parse[key]] = val
}
})
params.push(obj)
})
return params
}
}
}
</script>
<style lang="scss" scoped>
</style>