<template>
<el-upload
class="excelClass"
:http-request="readFileExcel"
:show-file-list="false"
action="Fake Action"
>
<el-button type="primary">导入</el-button>
</el-upload>
</template>
<script>
import XLSX from 'xlsx' // 读取excel
export default {
name: "LoadExcel",
data() {
return {};
},
methods: {
readFileExcel(e) {
var _this = this;
var rABS = false; //是否将文件读取为二进制字符串
let f = e.file; // 文件信息
if (!f) return false;
else if (!/\.(xls|xlsx)$/.test(f.name.toLowerCase())) {
this.$message.error("上传格式不正确,请上传xls或者xlsx格式");
return false;
}
var reader = new FileReader();
FileReader.prototype.readAsBinaryString = function (f) {
var binary = "";
var rABS = false; //是否将文件读取为二进制字符串
var wb; //读取完成的数据
var outdata;
var reader = new FileReader();
reader.onload = function (e) {
var bytes = new Uint8Array(reader.result);
var length = bytes.byteLength;
for (var i = 0; i < length; i++) binary += String.fromCharCode(bytes[i]);
var XLSX = require("xlsx");
if (rABS) wb = XLSX.read(btoa(fixdata(binary)), { type: "base64" });
//手动转化
else wb = XLSX.read(binary, { type: "binary" }); // 这里能获取到所有的数据
outdata = XLSX.utils.sheet_to_json(wb.Sheets[wb.SheetNames[0]], { defval: "" }); //outdata的格式可打印了自行查看,注意这里只取到了第一个sheet的数据
console.log(outdata);
// 以下是对outdata的格式化,可按个人需要自行转换
outdata.map((p, idx) => {
// ...
});
};
reader.readAsArrayBuffer(f);
};
if (rABS) reader.readAsArrayBuffer(f);
else reader.readAsBinaryString(f);
},
},
};
</script>
<style lang="scss" scoped>
.excelClass {
display: inline-block;
padding: 0 10px;
}
</style>
vue仅导入读取excel数据
最新推荐文章于 2024-02-01 14:28:55 发布
这段代码展示了如何使用XLSX库在Vue组件中读取和处理Excel文件。当用户上传xls或xlsx文件时,通过FileReader API读取文件内容,然后利用XLSX库将二进制数据转换为JSON格式。读取到的数据可以进一步处理,例如进行数据格式化。若上传文件格式不正确,会显示错误提示。
摘要由CSDN通过智能技术生成