导入前是这样的
导入后
第一步。写入封装代码
export function delay(interval = 0) {
return new Promise(resolve => {
let timer = setTimeout(()=> {
clearTimeout(timer)
resolve()
}, interval)
})
}
// 按照二进制读取文件
export function readFile(file) {
return new Promise(resolve => {
let reader = new FileReader()
reader.readAsBinaryString(file)
reader.onload = e => {
resolve(e.target.result)
}
})
}
// 字段对应表
export let character = {
name: {
text: '姓名',
type: 'string'
},
phone: {
text: '电话',
type: 'string'
}
}
// 时间字符串格式化
export function formatTime(str, tpl) {
let arr = str.match(/\d+/g).map(item => {
return item.length < 2 ? '0' + item : item
})
tpl = tpl || '{0}年{1}月{2}日 {3}时{4}分{5}秒'
return tpl.replace(/\{(\d+)\}/g, (_, group) => {
return arr[group] || '00'
})
}
第三步在组件 写
import xlsx from 'xlsx'
import{readFile} from '../src/assets/utils'
export default {
name: 'app',
data(){
return{
dataTab:[]
}
},
methods:{
async handle(ev){
console.log(ev)
let file=ev.raw
if(!file) return
let data= await readFile(file)
let workbook=xlsx.read(data,{type:"binary"})
console.log(workbook)
let worksheet = workbook.Sheets[workbook.SheetNames[0]]
this.dataTab = xlsx.utils.sheet_to_json(worksheet) // 将数据转换成JSON格式
console.log(this.dataTab)
let arr = []
// data.forEach(item => {
// let obj = {}
// for (let key in character) {
// if (!character.objecthasOwnProperty(key)) break
// let v = character[key],
// text = v.text,
// type = v.type
// v = item[text] || ''
// type === 'string' ? (v = String(v)) : null
// type === 'number' ? (v = Number(v)) : null
// obj[key] = v
// }
// arr.push(obj)
// });
console.log(arr)
}
}
}
第四步:把获取到的数据传给表格即可