react后台管理系统 IE导入文件的兼容性问题

由于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;
        }
    };
}
XLSX文件的导入
君不见,高堂明镜悲白发,朝如青丝暮成雪
原文地址:https://www.cnblogs.com/lzhflzjx/p/13403578.html