引入js-xlsx包
npm install xlsx --save
导入
import XLSX from 'xlsx'
使用记录
readExcel(file) {
//清除 上传文件
this.$refs.upload.clearFiles();
const fileReader = new FileReader();
//excel表 列数组
let sheetArray=[];
//读取本地文件
fileReader.onload = (ev) => {
try {
//读出的总数据
const data = ev.target.result;
//读取方式
// XLSX.utils.sheet_to_csv:生成CSV格式
// XLSX.utils.sheet_to_txt:生成纯文本格式
// XLSX.utils.sheet_to_html:生成HTML格式
// XLSX.utils.sheet_to_json:输出JSON格式
const workbook = XLSX.read(data, {
type: 'binary'
});
//sheetNames里面保存了所有的sheet名字,然后Sheets则保存了每个sheet的具体内容
for(let sheet in workbook.Sheets) {
//将每一个表保存成Json格式
//XLSX.utils.sheet_to_json:输出JSON格式
let demo=XLSX.utils.sheet_to_json(workbook.Sheets[sheet]);
sheetArray.push(XLSX.utils.sheet_to_json(workbook.Sheets[sheet]));
}
// dm 表一的数据 sheetArray为所有表格的集合
let dm=sheetArray[0]; //读取第一张表的数据
let pos=0,max=0; //max为第一张表的行数,pos为第一张表的列数
for(let i=0;i<sheetArray[0].length;i++){
console.log(sheetArray[0][i].obje);
if(pos<Object.keys(dm[i]).length){
pos=Object.keys(dm[i]).length;
max=i;
}
}
//关系名称列表 (上级 中级 下级~)
this.listLabel = Object.keys(dm[max]);
//只读取表一数据 将行转为列
sheetArray[0].forEach(function(v, k) {
// debugger
let participants = [];
let data = v;
label.forEach(function(lv, index) {
});
tableData.push(temp);
})
this.infoList = tableData;
// console.log(this.infoList);
} catch(e) {
//console.log(e);
this.$message.warning('文件类型不正确!');
return false;
}
};
this.dialogTableVisible = false;
fileReader.readAsBinaryString(file.raw);
//fileReader.readAsArrayBuffer(file.raw);
},
遇到的问题一
解析表格的时候数据错乱了。
原因:数据里面有换行符,导致我解析的数据错乱了,解决方法,去掉换行符。
replace(/[\r\n]/g,"")