用到的插件: xlsx
- 引入xlsx
npm install xlsx --save
- 示例使用的前端框架antd,所以下面直接引用組件
<a-upload
accept=".xls,.xlsx"
:show-upload-list="false"
action=""
name="file"
@change="exportData">
<a-button icon="upload" class="my-upload">選擇文件</a-button>
</a-upload>
不同前端框架獲取到的對(duì)象可能不同巴元,因此,需注意尋找自己獲取到的對(duì)象中的正確File對(duì)象
exportData (e) {
const that = this
// 拿取文件對(duì)象剃允,注:不同框架獲取到的對(duì)象可能不同,傳統(tǒng)upload拿到的對(duì)象應(yīng)該是e.target.file
var f = e.fileList[0].originFileObj
var binary = ''
var wb
var outdata
var reader = new FileReader()
reader.onload = function (e) {
// 讀取成Uint8Array齐鲤,再轉(zhuǎn)換為Unicode編碼(Unicode占兩個(gè)字節(jié))
var bytes = new Uint8Array(reader.result)
var length = bytes.byteLength
for (var i = 0; i < length; i++) {
binary += String.fromCharCode(bytes[i])
}
wb = XLSX.read(binary, {
type: 'binary'
})
outdata = XLSX.utils.sheet_to_json(wb.Sheets[wb.SheetNames[0]])
//outdata 就是你最后生成的數(shù)組
console.log(outdata )
}
reader.readAsArrayBuffer(f)
}
以上斥废。