问题现象:单元格中有空单元格,不处理直接使用导致空单元格数据被省略,解析错位
解决办法:var XL_row_object = XLSX.utils.sheet_to_json(workbook.Sheets[workbook.SheetNames[0]], {defval: null});
详细代码:
implUserExcel(file) {
//导入设备信息
let that = this;
this.loading = true;
const isXls = file.type === "xls/xlsx";
const isLt2M = file.size / 1024 / 1024 < 2;
if (file.name.indexOf("xls") === -1) {
this.loading = false;
this.$message.error("导入文件格式只能是 xls/xlsx 格式的Excel文件!");
return;
} else {
if (!isLt2M) {
this.loading = false;
this.$message.error("导入文件大小不能超过 2MB!");
return;
} else {
//拿到所导入文件的名字
let fileName = file.raw;
//定义reader,存放文件读取方法
let reader = new FileReader();
//启动函数
reader.readAsBinaryString(fileName);
//onload在文件被读取时自动触发
reader.onload = function (e) {
let uploadData = [];
//workbook存放excel的所有基本信息
const workbook = XLSX.read(e.target.result, { type: "binary" });
// Here is your object获取空单元格
var XL_row_object = XLSX.utils.sheet_to_json(workbook.Sheets[workbook.SheetNames[0]], {defval: null});
//console.log(XL_row_object);
if (XL_row_object.length > 0) {
for (var i = 1; i < XL_row_object.length; i++) {
var obj = {
frequency: "",
inspectNorm: "",
inspectOpportunity: "",
inspectPart: ""
};
obj.inspectPart = Object.values(XL_row_object[i])[4];
obj.inspectNorm = Object.values(XL_row_object[i])[8];
obj.frequency = Object.values(XL_row_object[i])[14];
obj.inspectOpportunity = Object.values(XL_row_object[i])[18];
that.excelData.push(obj);
}
}
};
}
this.loading = false;
}
this.loading = false;
}