本文已参与「新人创作礼」活动,一起开启掘金创作之路。
一、安装依赖
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"; //放在public目录下的文件可以直接访问
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){
//读出来的workbook数据很难读,转换为json格式,参考https://github.com/SheetJS/js-xlsx#utility-functions
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
/* eslint-disable prettier/prettier */
const XLSX = require("xlsx");
// 将行,列转换
function transformSheets(sheets) {
var content = [];
var content1 = [];
var tmplist = [];
for (let key in sheets) {
//读出来的workbook数据很难读,转换为json格式,参考https://github.com/SheetJS/js-xlsx#utility-functions
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 };