fileReader.onload 方法null 修改为
fileReader.onloadend
完整代码。
<el-upload ref="upload" action="/" :http-request="httpRequest" :limit="1" accept=".xls" :show-file-list="false">
<template #trigger>
<el-button type="primary">结果导入</el-button>
</template>
</el-upload>
import * as XLSX from "xlsx";
const httpRequest = (e: any) => {
state.saveVisible = false;
state.ffResult = []; // 上传前清空
const file = e.file; // 文件信息
if (!file) {
// 没有文件
return false;
} else if (!/\.(xls)$/.test(file.name.toLowerCase())) {
// 格式根据自己需求定义
ElMessage.error("上传格式不正确,请上传xls格式");
return false;
}
const fileReader = new FileReader();
fileReader.readAsBinaryString(file)
fileReader.onloadend = ev => {
console.log("ev", ev);
try {
const data = ev.target.result;
const workbook = XLSX.read(data, {
type: "binary", // 以字符编码的方式解析
cellDates: true
});
const exlname = workbook.SheetNames[0]; // 取第一张表
const exl = XLSX.utils.sheet_to_json(workbook.Sheets[exlname]); // 生成json表格内容
// // const csv = XLSX.utils.sheet_to_csv(workbook.Sheets[exlname])
// // let splitDate = data.split(/\s+/) ;
// //表格数据更处理
let arr = [];
for (let i = 0; i < exl.length; i++) {
let obj = {};
obj.tm = setTm(exl[i].tm);
obj.value = exl[i].value.toFixed(2);
arr.push(obj);
}
state.ffResult = arr;
} catch (e) {
console.log("出错了:");
state.saveVisible = false;
return false;
}
};
fileReader.readAsBinaryString(file);
};