react中读取excel中的内容

主要是使用xlsx这个工具,我是在react中使用的,所以就使用了npm install xlsx,但是呢,一直安装不成功,不管是使用npm install 还是使用 cnpm install,最后,在百度上看到有一个办法,使用npm view xlsx versions 查询出xlsx这个包目前有的版本号,然后可以用在里面选一个合适的版本,然后在package.json里面来配置xlsx,

"dependencies":{
    "xlsx": "0.8.0"
}

然后,把node_modules删掉,重新下载就可以了,这时候,就不会有问题了

安装完成之后,就剩下写代码了,我看到了两种写法,其实大同小异,放在这里,供大家自己选择

不管哪种方法,都要加上这两行代码,

import XLSX from 'xlsx';

<input type="file" id="excel-file" onChange={this.importExcel} />

(1)

      importExcel(e){
        var files = e.target.files;
        var name = files.name;
        const reader = new FileReader();
        reader.onload = (evt) => {
            const bstr = evt.target.result;
            const wb = XLSX.read(bstr, {type:'binary'});
            const wsname = wb.SheetNames[0];
            const ws = wb.Sheets[wsname];
            const data = XLSX.utils.sheet_to_csv(ws, {header:1});
            console.log("Data>>>"+data);
        };
        reader.readAsBinaryString(files[0]);
       }

(2)

 importExcel(e){
            var fileReader = new FileReader();
            fileReader.onload = function(ev) {
                try {
                    var data = ev.target.result,
                        workbook = XLSX.read(data, {type: 'binary'}),
                        persons = []; // 存储获取到的数据
                } catch (e) {
                    console.log('文件类型不正确');
                    return;
                }

                // 表格的表格范围,可用于判断表头是否数量是否正确
                var fromTo = '';
                // 遍历每张表读取
                for (var 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]));
                        // break; // 如果只取第一张表,就取消注释这行
                    }
                }

                console.log(persons);
            };

            // 以二进制方式打开文件
            fileReader.readAsBinaryString(files[0]);
}

猜你喜欢

转载自blog.csdn.net/fhjdzkp/article/details/82425537
今日推荐