一、安装依赖
npm install xlsx --save 或 npm instatll xlsx@0.17.0 --save
npm install file-saver --save
二、引入
import axios from "axios";
import XLSX from "xlsx";
import transformSheets from "../scripts/read_xlsx";
三、方法
created() {
var url = "msg.xlsx";
this.readExcelFile(url)
},
readExcelFile(url) {
axios.get(url,{responseType:'arraybuffer'})
.then((res)=>{
let data = new Uint8Array(res.data)
var a = XLSX
let wb = XLSX.read(data, {type:"array"})
console.log('wb',wb)
let sheets = wb.Sheets
this.content = this.transformSheets(sheets)
console.log('*****content-获取的excel数据*****',this.content)
}).catch( err =>{
this.err = err
})
},
transformSheets(sheets){
let content1 = []
let tmplist = []
for (let key in sheets){
tmplist.push(XLSX.utils.sheet_to_json(sheets[key]).length)
content1.push(XLSX.utils.sheet_to_json(sheets[key]))
}
return content1
console.log(tmplist)
console.log(content1)
}
四、关键--->导入转制函数 read_xlsx.js
const XLSX = require("xlsx");
function transformSheets(sheets) {
var content = [];
var content1 = [];
var tmplist = [];
for (let key in sheets) {
tmplist.push(XLSX.utils.sheet_to_json(sheets[key]).length);
content1.push(XLSX.utils.sheet_to_json(sheets[key]));
}
var maxLength = Math.max.apply(Math, tmplist);
for (let y in [...Array(maxLength)]) {
content.push([]);
for (let x in [...Array(tmplist.length)]) {
try {
for (let z in content1[x][y]) {
content[y].push(content1[x][y][z]);
}
} catch (error) {
content[y].push(" ");
}
}
}
content.unshift([]);
for (let key in sheets) {
content[0].push(key);
}
return content;
}
export { transformSheets as default };