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文件的导入

 

posted @   lzhflzjx  阅读(123)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示