主要是使用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]);
}