VUE实现前端获取本地Excel中的数据并显示

    xiaoxiao2025-06-17  5

    前言:

      最近搞VUE的时候,项目上有个需求就是读取用户上传的excel文件,并读取文件的内容显示到界面上,本人通过在网上查询各种资料最终找到一种解决办法,现在分享给大家。

    1.npm安装依赖

    npm install -S file-saver xlsx(这里其实安装了2个依赖) npm install -D script-loader

    2.在界面上添加一个按钮

    <input id="upload" type="file" @change="importfxx(this)" accept=".csv, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel" />

    3.在src下创建一个文件夹,包含两个文件:

                                                            

    文件下载地址为:https://gitee.com/BenDanXianSheng/excel_relyon.git

    4.编写vue的方法

    methods: { importfxx(obj) { let _this = this; console.log("xxxxxxxxxxxxxxxxxxxxxxxxxxx1"); let inputDOM = this.$refs.inputer; // 通过DOM取文件数据 this.file = event.currentTarget.files[0]; var rABS = false; //是否将文件读取为二进制字符串 var f = this.file; var reader = new FileReader(); //if (!FileReader.prototype.readAsBinaryString) { FileReader.prototype.readAsBinaryString = function(f) { var binary = ""; var rABS = false; //是否将文件读取为二进制字符串 var pt = this; 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]]); //outdata就是你想要的东西 console.log(outdata) }; reader.readAsArrayBuffer(f); }; if (rABS) { reader.readAsArrayBuffer(f); } else { reader.readAsBinaryString(f); } } } };

       上边就是我找到的解决办法,希望对大家有用!

    最新回复(0)