Java之导入Excel Vue框架前端篇

html内容:

<!--选择上传的Excel文件-->
<input type="file" id="excel"ref="head" accept=".xls,.xlsx" @change="checkType()" multiple/>
<!--点击上传Excel文件-->
<button type="button" @click = "uploadExcel">导入Excel</button>

js:

上传部分:

     //检查选中的文件是否是Excel文件
        checkType() {
          let vm = this;
          let allImgExt = '.xls|.xlsx|';
          let filePath = this.$refs.head.value;
          let extName = filePath.substring(filePath.lastIndexOf(".")).toLowerCase();
          if (allImgExt.indexOf(extName + '|') === -1) {
            alert("请选择正确的Excel文件");
            this.$refs.head.value = '';
            excelContent = [];
            return;
          }
          let file = this.$refs.head.files[0];
          vm.readExcel(file);//预览选中的Excel文件信息
          vm.excelContent = [];
        }



        //导入Excel文件
        uploadExcel() {
          let vm = this ;
          let formData = new FormData();
          let file = this.$refs.head.files[0];
          if(file == ""  || file == undefined){
            alert("请选择要导入的Excel文件");
            return;
          }
          formData.append('file', file);
          console.log("userCode = ", this.token.userInfo.userCode)
          //调用函数,把formData当做参数上传给后台的attchment微服务中的表格中
          this.ctApi.post({
            url: uploadExcel,
            data: formData,
            success: (data) => {
              
            }
          })
        }

预览部分:把Excel文件的信息保存到excelContent 数组中,每一个元素就是一行excel数据

        //预览要导入的excel
        readExcel(file) {// 解析Excel
          let _this = this;
          return new Promise(function(resolve, reject){// 返回Promise对象
            const reader = new FileReader();
            reader.onload = (e) => {// 异步执行
              try {
                // 以二进制流方式读取得到整份excel表格对象
                let data = e.target.result,workbook = XLSX.read(data, {type: 'binary'});
                let batteryArr = [];

                var sheetNames = workbook.SheetNames // 工作表名称集合
                _this.workbook = workbook
                _this.getTable(sheetNames[0])
              } catch (e) {
                reject(e.message);
              }
            };
            reader.readAsBinaryString(file);
          });
        }
        //根据excel的表明,获取单元格内容
        getTable (sheetName) {
          let vm =this;
          var worksheet = this.workbook.Sheets[sheetName]//获取整张excel表的内容
          vm.excelContent = XLSX.utils.sheet_to_json(worksheet)//把获取的信息转换成接送字符串
        }    
posted @ 2019-05-08 17:03  流年成双  阅读(2446)  评论(0编辑  收藏  举报