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

2021-01-11 15:50发布

前言:

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

1.npm安装依赖

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

文件下载地址为: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);
      }
    }
  }
};


作者:靖凡无所畏惧

链接:https://blog.csdn.net/wjf1997/article/details/90580790

来源:CSDN
著作权归作者所有,转载请联系作者获得授权,切勿私自转载。