当前位置: 首页 > 工具软件 > MyExcel > 使用案例 >

myexcel导入导出数据

谢泽语
2023-12-01

myexcel导出实体类对象。


@ExcelTable(sheetName = "Sheet1",rowAccessWindowSize = 100,useFieldNameAsTitle = true)
public class UserExaminationExportExcelItem {

    @ExcelColumn(order = 1,index = 0,title = "考试名称")
    private String examName;

    @ExcelColumn(order = 2,index = 1,title = "学生姓名")
    private String trueName;

    @ExcelColumn(order = 3,index = 2,title = "手机号码")
    private String mobile;

    @ExcelColumn(order = 4,index = 3,title = "学校名称")
    private String schoolName;

    @ExcelColumn(order = 5,index = 4,title = "班级代号")
    private String classCode;

    @ExcelColumn(order = 6,index = 5,title = "考试科目")
    private String examKemu;

    @ExcelColumn(order = 7,index = 6,title = "考试成绩")
    private Integer examUserChengji;

    @ExcelColumn(order = 8,index = 7,title = "班级排名")
    private Integer banji;

    @ExcelColumn(order = 9,index = 8,title = "全排名")
    private Integer hontu;

    public String getExamName() {
        return examName;
    }

    public void setExamName(String examName) {
        this.examName = examName;
    }

    public String getTrueName() {
        return trueName;
    }

    public void setTrueName(String trueName) {
        this.trueName = trueName;
    }

    public String getMobile() {
        return mobile;
    }

    public void setMobile(String mobile) {
        this.mobile = mobile;
    }

    public String getSchoolName() {
        return schoolName;
    }

    public void setSchoolName(String schoolName) {
        this.schoolName = schoolName;
    }

    public String getClassCode() {
        return classCode;
    }

    public void setClassCode(String classCode) {
        this.classCode = classCode;
    }

    public String getExamKemu() {
        return examKemu;
    }

    public void setExamKemu(String examKemu) {
        this.examKemu = examKemu;
    }

    public Integer getExamUserChengji() {
        return examUserChengji;
    }

    public void setExamUserChengji(Integer examUserChengji) {
        this.examUserChengji = examUserChengji;
    }

    public Integer getBanji() {
        return banji;
    }

    public void setBanji(Integer banji) {
        this.banji = banji;
    }

    public Integer getHontu() {
        return hontu;
    }

    public void setHontu(Integer hontu) {
        this.hontu = hontu;
    }
}

具体导出业务代码。


    @RequestMapping(value = "/exportListUserExamination", method = RequestMethod.GET)
    @ApiOperation(httpMethod = "GET", value = "导出学生考试信息", notes = "导出学生考试信息")
    @SessionCheck
    public Map<String, Object> exportListUserExamination(
            HttpServletRequest request, @ApiParam(name = "examId", value = "考试id") @RequestParam(value = "examId", required = false) Integer examId,
            @ApiParam(name = "classId", value = "班级id") @RequestParam(value = "classId", required = false) Integer classId) {

        Map<String, Object> result = new HashMap<>();
        AuthAdminDTO authAdminDTO = (AuthAdminDTO) request.getAttribute("adminDTO");
        List<UserExaminationResult> userExaminationList = userExaminationFacade.listUserExamination(null, examId, classId, null, null, null);

        List<UserExaminationExportExcelItem> userExaminationExportExcelItemList = new ArrayList<>();

        for (UserExaminationResult userExaminationResult : userExaminationList) {
            UserExaminationExportExcelItem userExaminationExportExcelItem = new UserExaminationExportExcelItem();

            BeanUtils.copyProperties(userExaminationResult, userExaminationExportExcelItem, FieldUtils.getNullPropertyNames(userExaminationResult));

            userExaminationExportExcelItemList.add(userExaminationExportExcelItem);
        }

        if (CollectionUtils.isNotEmpty(userExaminationExportExcelItemList)) {
            Workbook workbook = DefaultExcelBuilder.of(UserExaminationExportExcelItem.class)
                    .build(userExaminationExportExcelItemList);
            String key = UUID.randomUUID().toString();
            ossClient.putObject(AliyunBucketEnum.BUCKET_ADMIN_RESOURCE.getName(), "ListUserExamination/" + key + ".xlsx", FileExportUtil.getInputStream(workbook));
            result.put("url", AliyunBucketEnum.BUCKET_ADMIN_RESOURCE.getUrl() + "ListUserExamination/" + key + ".xlsx");
        }
        return result;
    }

myexcel导入实体类对象。


@ExcelTable(sheetName = "Sheet1",rowAccessWindowSize = 100,useFieldNameAsTitle = true)
public class UserExaminationImportExcelltem {

    @ExcelColumn(order = 1,index = 0,title = "考试名称")
    private String examName;

    @ExcelColumn(order = 2,index = 1,title = "考试科目")
    private String examKemu;

    @ExcelColumn(order = 3,index = 2,title = "学生名称")
    private String trueName;

    @ExcelColumn(order = 4,index = 3,title = "手机号码")
    private String mobile;

    @ExcelColumn(order = 5,index = 4,title = "班级代号")
    private String classCode;

    @ExcelColumn(order = 6,index = 5,title = "考试成绩")
    private String examUserChengji;

    @ExcelColumn(order = 7,index = 6,title = "错误原因")
    private String error;

    public String getExamKemu() {
        return examKemu;
    }

    public void setExamKemu(String examKemu) {
        this.examKemu = examKemu;
    }

    public String getTrueName() {
        return trueName;
    }

    public void setTrueName(String trueName) {
        this.trueName = trueName;
    }

    public String getExamName() {
        return examName;
    }

    public void setExamName(String examName) {
        this.examName = examName;
    }

    public String getMobile() {
        return mobile;
    }

    public void setMobile(String mobile) {
        this.mobile = mobile;
    }

    public String getClassCode() {
        return classCode;
    }

    public void setClassCode(String classCode) {
        this.classCode = classCode;
    }

    public String getExamUserChengji() {
        return examUserChengji;
    }

    public void setExamUserChengji(String examUserChengji) {
        this.examUserChengji = examUserChengji;
    }

    public String getError() {
        return error;
    }

    public void setError(String error) {
        this.error = error;
    }
}

具体导入业务逻辑。


    @RequestMapping(value = "/importUserExamination", method = RequestMethod.POST)
    @NoAuthCheck
    public Map<String, Object> importUserExamination(@RequestParam("file") MultipartFile file) throws Exception {
        Map<String, Object> result = new HashMap<>();
        List<UserExaminationImportExcelltem> userExaminationImportExcelltemList = DefaultExcelReader.of(UserExaminationImportExcelltem.class).sheet(0).rowFilter(row -> row.getRowNum() > 0).read(file.getInputStream());
        List<UserExaminationImportExcelltem> UserExaminationImportExcelltem = new ArrayList<>();
        for (UserExaminationImportExcelltem classImportExcelItem : userExaminationImportExcelltemList) {
            UserExaminationImportExcelltem classImportExcelItem1 = new UserExaminationImportExcelltem();

            BeanUtils.copyProperties(classImportExcelItem, classImportExcelItem1);

            if (StringUtils.isBlank(classImportExcelItem.getExamName())) {
                classImportExcelItem1.setError("考试名称未填写");
            }
            if (StringUtils.isBlank(classImportExcelItem1.getError()) && StringUtils.isBlank(classImportExcelItem.getExamKemu())) {
                classImportExcelItem1.setError("考试科目未填写");
            }
            if (StringUtils.isBlank(classImportExcelItem1.getError()) && StringUtils.isBlank(classImportExcelItem.getTrueName())) {
                classImportExcelItem1.setError("学生姓名未填写");
            }
            if (StringUtils.isBlank(classImportExcelItem1.getError()) && StringUtils.isBlank(classImportExcelItem.getMobile())) {
                classImportExcelItem1.setError("手机号码未填写");
            }
            if (StringUtils.isBlank(classImportExcelItem1.getError()) && classImportExcelItem.getExamUserChengji()+"" == null) {
                classImportExcelItem1.setError("考试成绩未填写");
            }
            ExaminationDTO byExamName = examinationFacade.getByExamName(classImportExcelItem.getExamName(), classImportExcelItem.getExamKemu());
            if (StringUtils.isBlank(classImportExcelItem1.getError()) && byExamName == null) {
                classImportExcelItem1.setError("考试名称或科目错误");
            }
            UserDTO userByMobile = userFacade.getUserByMobile(classImportExcelItem.getMobile());
            if (StringUtils.isBlank(classImportExcelItem1.getError()) && userByMobile == null) {
                classImportExcelItem1.setError("手机号码错误");
            } else if (StringUtils.isBlank(classImportExcelItem1.getError()) && null != userByMobile) {
                if(userByMobile.getTruename()!=null){
                    if (!userByMobile.getTruename().trim().equals(classImportExcelItem.getTrueName())) {
                        classImportExcelItem1.setError("学生姓名错误");
                    }
                }
            }
//            Integer bySchoolName = schoolInfoFacade.getBySchoolName(userByMobile.getSchool());
//            if (StringUtils.isBlank(classImportExcelItem1.getError()) && classDTO == null) {
//                classImportExcelItem1.setError("班级代号错误");
//            }
            if (StringUtils.isBlank(classImportExcelItem1.getError())) {
                if (Double.parseDouble(classImportExcelItem.getExamUserChengji() + "") > Double.parseDouble(byExamName.getExamManfen() + "")) {
                    classImportExcelItem1.setError("考试成绩不能大于当前科目满分");
                }
            }
            if (StringUtils.isNotBlank(classImportExcelItem1.getError())) {
                UserExaminationImportExcelltem.add(classImportExcelItem1);
            } else {
                UserExaminationDTO userExaminationDTO = new UserExaminationDTO();
                userExaminationDTO.setExamId(byExamName.getId());
                userExaminationDTO.setUserId(userByMobile.getUserId());
//                userExaminationDTO.setSchoolId(bySchoolName);
                if (classImportExcelItem.getClassCode() != null) {
                    ClassDTO classDTO = classFacade.getClassByClassCode(classImportExcelItem.getClassCode());
                    if (classDTO != null) {
                        userExaminationDTO.setClassId(classDTO.getClassId());
                    }
                }
                userExaminationDTO.setExamUserChengji(Double.parseDouble(classImportExcelItem.getExamUserChengji()));
                try {
                    List<UserExaminationResult> userExaminationResults = userExaminationFacade.listUserExamination(null, byExamName.getId(), null, classImportExcelItem.getMobile(), null, null);
                    //如果重复导入则以最新的为准
                    if (0 != userExaminationResults.size()) {
                        userExaminationDTO.setId(userExaminationResults.get(0).getId());
                        userExaminationFacade.updateUserExamination(userExaminationDTO,0);
                    } else {
                        userExaminationFacade.insertUserExamination(userExaminationDTO);
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                    classImportExcelItem1.setError("未知错误");
                    UserExaminationImportExcelltem.add(classImportExcelItem1);
                }
            }
        }
//        if (CollectionUtils.isEmpty(UserExaminationImportExcelltem)) {
            ExaminationDTO byExamName = examinationFacade.getByExamName(userExaminationImportExcelltemList.get(0).getExamName(), userExaminationImportExcelltemList.get(0).getExamKemu());
            userExaminationFacade.updateRanking(byExamName.getId());
//            List<UserExaminationResult> userExaminationResults = userExaminationFacade.listUserExamination(null, byExamName.getId(), null, null, null, null);
//            for (UserExaminationResult userExaminationResult : userExaminationResults) {
//                //学生的宏图排名
//                Integer byPaiMing = userExaminationFacade.getByAchievementRanking(byExamName.getId(), null, userExaminationResult.getUserId());
//                //学生的班级排名
//                Integer byPaiMing1 = 0;
//                if (userExaminationResult.getClassId() != null) {
//                    byPaiMing1 = userExaminationFacade.getByAchievementRanking(byExamName.getId(), userExaminationResult.getClassId(), userExaminationResult.getUserId());
//                }
//                userExaminationFacade.updateAchievementRanking(byPaiMing1, byPaiMing, userExaminationResult.getUserId(), byExamName.getId());
//            }
//        }
        if (CollectionUtils.isNotEmpty(UserExaminationImportExcelltem)) {
            result.put("errorCount", UserExaminationImportExcelltem.size());
            Workbook workbook = DefaultExcelBuilder.of(UserExaminationImportExcelltem.class)
                    .build(UserExaminationImportExcelltem);
            String key = UUID.randomUUID().toString();
            ossClient.putObject(AliyunBucketEnum.BUCKET_ADMIN_RESOURCE.getName(), "importUserExamination/" + key + ".xlsx", FileExportUtil.getInputStream(workbook));
            result.put("url", AliyunBucketEnum.BUCKET_ADMIN_RESOURCE.getUrl() + "importUserExamination/" + key + ".xlsx");
        }
        result.put("totalCount", userExaminationImportExcelltemList.size());
        return result;
    }
 类似资料: