zoukankan      html  css  js  c++  java
  • js 导入 execl

    html
    ---------------------------------------------------------------------------
      <el-upload
                :show-file-list="false"
              ref="upload"  
              name="excelFile"
                :action="uploadUrl" 
                :on-change="handleChange"
          :on-success = "successMethod"
                accept="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel"
                :auto-upload="true"
              >
                <el-button size="mini" class="button" @click="submitUpload" style="margin-left:10px">导入</el-button>
              </el-upload>
    ---------------------------------------------------------------------------
     
     
    js 
    ---------------------------------------------------------------------------
       handleChange(file, fileList) {
          console.log("---");
          this.tableData = [];
          this.totalCount = 0;
          this.importfxx(file.raw);
        },
    importfxx(obj) {
          let _this = this;

          let inputDOM = this.$refs.inputer;

          // 通过DOM取文件数据
    console.log(event.currentTarget);
    console.log(event.currentTarget.files);
    if(event.currentTarget.files == undefined){
    return;
    }
          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",
                });
              }

              wb.Sheets[wb.SheetNames[0]].A1 = { t: "n", v: "工号", w: "USERID" };
              wb.Sheets[wb.SheetNames[0]].B1 = { t: "s", v: "姓名", w: "USERNAME" };
              wb.Sheets[wb.SheetNames[0]].C1 = {
                t: "s",
                v: "职称",
                w: "PROFESSIONAL",
              };
              wb.Sheets[wb.SheetNames[0]].D1 = { t: "s", v: "科室", w: "DEPTNAME" };
              wb.Sheets[wb.SheetNames[0]].E1 = { t: "s", v: "角色", w: "ROLE" };
              wb.Sheets[wb.SheetNames[0]].F1 = {
                t: "s",
                v: "入职日期",
                w: "INDATE",
              };

              outdata = XLSX.utils.sheet_to_json(wb.Sheets[wb.SheetNames[0]]); //outdata就是你想要的东西
              var newList = [];
              var newListMore = [];
              var msg = "";


              for (var index in outdata) {
                console.log(!outdata[index].PROFESSIONAL);
                if (newList.indexOf(outdata[index].USERID) < 0) {
                  newList.push(outdata[index].USERID);
                  //----判断数据是否有空值   
                //   if((!outdata[index].USERID)||(!outdata[index].USERNAME)||(!outdata[index].PROFESSIONAL)||(!outdata[index].DEPTNAME)||(!outdata[index].ROLE)||(!outdata[index].INDATE)){
                //     _this.$alert("有数据未填写完整", "数据异常!", {
                //   dangerouslyUseHTMLString: true,
                // });
                //     return;
                //   }
                } else {
                  var indexs = index;
                  indexs++;
                  newListMore.push(outdata[index].USERID);
                  msg +=
                    "<b><p>" +
                    "第" +
                    indexs +
                    "行-工号:" +
                    outdata[index].USERID +
                    "</p></b>";
                }
              }
              console.log(msg);
              if (msg == "") {
                _this.$alert(msg, "工号重复,请修改!", {
                  dangerouslyUseHTMLString: true,
                });
                return;
              } else {
                _this.totalCount = outdata.length; 
                _this.pageSize = outdata.length;
              }
             

              this.da = [...outdata];

              let arr = [];

              console.log(outdata);
    //           _this.tableData = outdata;

     



              this.da.map((v) => {
                let obj = {};

                obj.id = v.id;

                obj.status = v.status;

                arr.push(obj);
              });

              let para = {
                //withList: JSON.stringify(this.da)

                withList: arr,
              };

              // _this.$message({
              //   message: "请耐心等待导入成功",

              //   type: "success",
              // });

              // withImport(para).then(res => {

              //  window.location.reload()

              // })
            };

            reader.readAsArrayBuffer(f);
          };

          if (rABS) {
            reader.readAsArrayBuffer(f);
          } else {
            reader.readAsBinaryString(f);
          }
        },
    -------------------------------------------------------------
     
    后台
    -------------------------------------------------------------
     @RequestMapping("UploadFile")
    @ResponseBody
    public CommonResult UploadFile(@RequestBody MultipartFile excelFile) throws Exception {
    System.out.println(excelFile);

    // JSONObject object = JSON.parseObject(newDate.toString());
    // System.out.println(object);
    // JSONObject mdroInfo = JSON.parseObject(newDate.toString()).getJSONObject("newDate");
    // System.out.println(mdroInfo);
    // User reportCard = JSON.parseObject(JSON.parseObject(newDate.toString()).getJSONObject("newDate").toJSONString(),User.class);
    // User reportCard = JSON.parseObject(JSON.toJSONString(newDate.get("newDate")),User.class);
    // System.out.println(reportCard);

    InputStream in = excelFile.getInputStream();
    POIFSFileSystem poifsFileSystem = new POIFSFileSystem(in);
    HSSFWorkbook wb = new HSSFWorkbook(poifsFileSystem);
    // 2.读取页脚sheet
    HSSFSheet sheet = wb.getSheetAt(0);
    int coloumNum = sheet.getRow(0).getPhysicalNumberOfCells();
    System.out.println(coloumNum);

    List<Map<String, Object>> list = new ArrayList<>();
    //获取sheet的行数
    int rows = sheet.getPhysicalNumberOfRows();
    System.out.println("有行数" + sheet.getFirstRowNum());
    System.out.println("有行数" + sheet.getLastRowNum());

    for (int j = 1; j < sheet.getLastRowNum(); j++) {
    Map<String, Object> map = new HashMap<>();
    HSSFRow row = sheet.getRow(j);//行
    // System.out.println(row.getPhysicalNumberOfCells());
    System.out.println("有列数" + sheet.getRow(0).getLastCellNum());
    if (null != row) {
    for (int k = 0; k < sheet.getRow(0).getLastCellNum(); k++) {
    HSSFCell cell = row.getCell(k);//列
    if (null != cell) {

    switch (cell.getCellType()) {
    case HSSFCell.CELL_TYPE_NUMERIC:// 数字
    if (DateUtil.isCellDateFormatted(cell)) {
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    String str = sdf.format(cell.getDateCellValue());
    map.put(sheet.getRow(0).getCell(k).getStringCellValue(), str);
    } else {
    map.put(sheet.getRow(0).getCell(k).getStringCellValue(), cell.getNumericCellValue());
    }
    // System.out.print(cell.getNumericCellValue()
    // + " ");

    break;
    case HSSFCell.CELL_TYPE_STRING:// 字符串
    // System.out.print(cell.getStringCellValue()
    // + " ");
    map.put(sheet.getRow(0).getCell(k).getStringCellValue(), cell.getStringCellValue());
    break;
    case HSSFCell.CELL_TYPE_BOOLEAN:// Boolean
    // System.out.println(cell.getBooleanCellValue()
    // + " ");
    map.put(sheet.getRow(0).getCell(k).getStringCellValue(), cell.getBooleanCellValue());
    break;
    case HSSFCell.CELL_TYPE_FORMULA:// 公式
    // System.out.print(cell.getCellFormula() + " ");
    map.put(sheet.getRow(0).getCell(k).getStringCellValue(), cell.getCellFormula());
    break;
    case HSSFCell.CELL_TYPE_BLANK:// 空值
    // System.out.println(" ");
    map.put(sheet.getRow(0).getCell(k).getStringCellValue(), "");
    break;
    case HSSFCell.CELL_TYPE_ERROR:// 故障
    // System.out.println(" ");
    map.put(sheet.getRow(0).getCell(k).getStringCellValue(), "");
    break;
    default:
    // System.out.print("未知类型 ");
    map.put(sheet.getRow(0).getCell(k).getStringCellValue(), "");
    break;
    }

    } else {
    System.out.print("- ");
    map.put(sheet.getRow(0).getCell(k).getStringCellValue(), "");
    }
    }

    }

    list.add(map);
    if (map.size() > 0) {
    User u = new User();
    System.out.println(map);
    System.out.println(map.get("角色") == null);
    System.out.println("".equals(map.get("角色")));

    u.setUserName("".equals(map.get("姓名")) ? "" : map.get("姓名").toString());
    u.setRole("".equals(map.get("角色")) ? "" : map.get("角色").toString());
    u.setProfessional("".equals(map.get("职称")) ? "" : map.get("职称").toString());
    u.setUserId("".equals(map.get("工号")) ? "" : map.get("工号").toString());
    u.setDeptname("".equals(map.get("科室")) ? "" : map.get("科室").toString());
    u.setIndate("".equals(map.get("入职日期")) ? "" : map.get("入职日期").toString());
    CommonResult result = userService.addUser(u);
    if (result.getCode() != 200) {
    return result;
    }
    }
    }

    return new CommonResult(200, "删除成功", list);
    }
  • 相关阅读:

    jQuery post使用变量作参数名
    线性结构____二叉堆
    Java虚拟机
    spring在线生成
    树形结构_红黑树:平衡2X 哈夫曼树:最优2X
    线性结构____双链表/栈/队列
    Java中的String,StringBuilder,StringBuffer三者的区别
    JPress的CMS系统在Window下的部署和使用
    List之contains方法
  • 原文地址:https://www.cnblogs.com/adai-study-1030/p/13729971.html
Copyright © 2011-2022 走看看