excel文件上传问题?

excel文件上传问题?

我在点击导入学生时,上传excel文件总是会报Uncaught ReferenceError: XLSX is not defined
at FileReader.reader.onload的错误是什么原因导致的?求指点

代码如下:

//导入

importExcel(obj) {

if (this.classId == "" || this.classId == null) {

this.$message({

type: "info",

message: "请选择要导入学生数据的班级",

});

} else {

if (!obj.files) {

//导入的数据

return;

}

let file = obj.files[0], //导入的数据

types = file.name.split(".")[1], //拿到类型

fileType = ["xlsx", "xlc", "xlm", "xls", "xlt", "xlw", "csv"].some(

(item) => item === types

);

if (!fileType) {

alert("格式错误!请重新选择");

return;

}

this.file2Xce(file).then((tabJson) => {

//tabJson就是解析出来的json数据,数据格式如下

if (tabJson && tabJson.length > 0) {

console.log(tabJson)

this.file3cex(tabJson);

} else {

alert("导入数据为空!!!");

}

});

}

},

file2Xce(file) {

return new Promise(function (resolve, reject) {

let reader = new FileReader(); //创建FileReader对象,将文件内容读入内存,通过一些api接口,可以在主线程中访问本地文件

reader.onload = function (e) {

//onload 当读取操作成功完成时调用

let data = e.target.result;

this.wb = XLSX.read(data, {

type: "binary", //二进制

});

// XLSX.utils.json_to_sheet(data) 接收一个对象数组并返回一个基于对象关键字自动生成的“标题”的工作表,默认的列顺序由使用Object.keys的字段的第一次出现确定

resolve(

XLSX.utils.sheet_to_json(this.wb.Sheets[this.wb.SheetNames[0]])

);

};

reader.readAsBinaryString(file); // 异步按字节读取文件内容,结果为文件的二进制串

});

},

file3cex(obj) {

var data = obj.map((el) => {

if (this.testingData(el)) {

let obj = {};

obj.name = el.学生姓名;

if (el.学生性别 == "男") {

obj.sex = 1;

} else {

obj.sex = 2;

}

obj.age = el.年龄;

obj.studentNumber=el.学号;

obj.role = 3;

obj.phone = el.联系电话;

obj.address = el.家庭住址;

obj.account = el.学生账号;

obj.password = el.学生密码;

obj.remark = el.备注;

obj.classId = this.classId;

obj.flag = 0;

obj.cardId = el.身份证号;

return obj;

}

});

var addDate = [];

for (var j = 0; j < data.length; j++) {

if (data[j] != undefined) {

var zh = new String(data[j].account);

var mm = new String(data[j].password);

if (zh.length >= 6 && mm.length >= 6) {

addDate.push(data[j]);

}

}

}

if (addDate.length > 0) {

const res = new Map();

//根据属性去重

var studata = addDate.filter(

(a) => !res.has(a.account) && res.set(a.account, 1)

);

var info = "";

for (var m = 0; m < studata.length; m++) {

info = info + "--" + studata[m].name;

}

this.axios

.batchStudentInfo(studata)

.then((res) => {

if (res.data.code == 101) {

if (res.data.data > 0) {

this.$notify({

title: "数据导入提示",

message:

"成功导入" +

studata.length +

"条学生数据(" +

info +

")。" +

(data.length - studata.length) +

"条学生数据导入失败!!",

duration: 0,

});

} else {

this.$message({

type: "error",

message: "学生数据导入失败!!",

});

}

} else {

this.$message({

type: "error",

message: res.data.message,

});

}

})

.then((err) => {});

} else {

this.$message({

type: "info",

message: "导入的学生数据异常导入失败!!",

});

}

},

testingData(obj) {

var state = true;

if (

obj.学生姓名 == "" ||

obj.学生姓名 == null ||

obj.学生姓名 == undefined

) {

state = false;

} else if (

obj.学生性别 == "" ||

obj.学生性别 == null ||

obj.学生性别 == undefined

) {

state = false;

} else if (obj.年龄 == "" || obj.年龄 == null || obj.年龄 == undefined) {

state = false;

} else if (

obj.学生账号 == "" ||

obj.学生账号 == null ||

obj.学生账号 == undefined

) {

state = false;

} else if (

obj.学生密码 == "" ||

obj.学生密码 == null ||

obj.学生密码 == undefined

) {

state = false;

}

return state;

},

//格式化json文件

formatJson(filterVal, jsonData) {

//filterVal是data中list的key值

return jsonData.map((v) => filterVal.map((j) => v[j])); //list可能为空,所以报错map未定义

},


回答:

excel文件上传问题?
你在使用XLSX的时候引用XLSX了吗,https://www.npmjs.com/package...


回答:

XLSX应该是一个专门的解析xlsx类型数据文件的第三方库吧,你是否正确引入了这个库?


回答:

如果已经正确引入了。试试window.XLSX


回答:

这里这个是koa实现导入导出excel文件样例。用的也是xlsx与xlsx-style。你可以看一下:https://github.com/liucys/fro...


回答:

import XLSX from 'xlsx-js-style'
要先安装xlsx-js-style

以上是 excel文件上传问题? 的全部内容, 来源链接: utcz.com/p/936486.html

回到顶部