美文网首页
Vue+Element导入Excel

Vue+Element导入Excel

作者: 小碗吃不了 | 来源:发表于2021-04-08 15:42 被阅读0次
  • 工具(file-saver、xlsx、script-loader)

    npm install -S file-saver xlsx
    
    npm install -D script-loader
    
  • 按钮

     <el-upload
      class="upload-demo"
      action=""
      :on-change="handleChange"
      :on-exceed="handleExceed"
      :on-remove="handleRemove"
      :file-list="fileListUpload"
      :limit="limitUpload" //limitUpload = 1限制只能上传1个文件
      accept="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,application/vnd.ms-excel"
      //accept为默认打开的可上传的文件格式
      :auto-upload="false">
      <el-button size="small" type="primary">点击上传</el-button>
      <div slot="tip" class="el-upload__tip">只 能 上 传 xlsx / xls 文 件</div>
    </el-upload>
    
  • 方法

    handleChange(file, fileList) {
      this.fileTemp = file.raw;
      if (this.fileTemp) {
      if (
        this.fileTemp.type ==
          "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" ||
        this.fileTemp.type == "application/vnd.ms-excel"
      ) {
        this.importfxx(this.fileTemp);
      } else {
        this.$message({
          type: "warning",
          message: "附件格式错误,请删除后重新上传!",
        });
      }
    } else {
      this.$message({
        type: "warning",
        message: "请上传附件!",
      });
    }
    },
    
    handleRemove(file, fileList) {
      this.fileTemp = null;
    },
    importfxx(obj) {
    let _this = this; // 通过DOM取文件数据
    this.file = obj;
    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]]);
        console.log(outdata);//接收的数据
      };
      reader.readAsArrayBuffer(f);
    };
    
    if (rABS) {
      reader.readAsArrayBuffer(f);
    } else {
      reader.readAsBinaryString(f);
    }
    },

相关文章

网友评论

      本文标题:Vue+Element导入Excel

      本文链接:https://www.haomeiwen.com/subject/vakvkltx.html