由于IE浏览器不支持 FileReader,所以在导入文件时做下判断,代码如下
readWorkbookFromLocalFile (files,callback) { const self = this; // const files = e.target.files[0]; const fileReader = new FileReader(); // 如果IE 浏览器 不支持FileReader const staus = FileReader.prototype.readAsBinaryString; staus ? fileReader.readAsBinaryString(files) : fileReader.readAsArrayBuffer(files); fileReader.onload = function(ev) { try { let data = ev.target.result, workbook = XLSX.read(data, {type: staus ? "binary" : "array"}), persons = []; // 存储获取到的数据 if(callback) callback(workbook); // 表格的表格范围,可用于判断表头是否数量是否正确 let fromTo = ""; // 遍历每张表读取 for (let sheet in workbook.Sheets) { if (workbook.Sheets.hasOwnProperty(sheet)) { fromTo = workbook.Sheets[sheet]['!ref']; persons = persons.concat(XLSX.utils.sheet_to_json(workbook.Sheets[sheet])); } } console.log(persons); // self.setState({uploadList:persons},() => self._saveXLSXData()) } catch (e) { self.file.value = ""; console.log("文件类型不正确!"); return; } }; }