JAVA easypoi处理纵向合并一对多

这样的数据结构导入
注意: 模板多的一侧 标题要加下划线 _

        <dependency>
            <groupId>cn.afterturn</groupId>
            <artifactId>easypoi-base</artifactId>
            <version>4.1.0</version>
        </dependency>
        <dependency>
            <groupId>cn.afterturn</groupId>
            <artifactId>easypoi-web</artifactId>
            <version>4.1.0</version>
        </dependency>
        <dependency>
            <groupId>cn.afterturn</groupId>
            <artifactId>easypoi-annotation</artifactId>
            <version>4.1.0</version>
        </dependency>

子集合 @ExcelCollection此注解用于集合这种的多行

@ExcelTarget("ExportGroupDto")
public class ClassGroupNameDto {
    @Excel(name = "名称")
    private String className;

    public String getClassName() {
        return className;
    }

    public void setClassName(String className) {
        this.className = className;
    }
}

主数据 @Excel这个是必不可少的,主要是要有一个参数设置needMerge = true, mergeVertical = true

public class ExportGroupDto {
    @Excel(name = "年级", mergeVertical = true, needMerge = true)
    private String yearClassName;

    @ExcelCollection(name = "中队")
    private List<ClassGroupNameDto> classNameList;

    public String getYearClassName() {
        return yearClassName;
    }

    public void setYearClassName(String yearClassName) {
        this.yearClassName = yearClassName;
    }

    public List<ClassGroupNameDto> getClassNameList() {
        return classNameList;
    }

    public void setClassNameList(List<ClassGroupNameDto> classNameList) {
        this.classNameList = classNameList;
    }
}

导入调用controller

@PostMapping("/upload")
    public R upload(@RequestParam("file") MultipartFile multipartFile) {
            ExcelImportResult<ExportGroupDto> result = null;
            try {
                ImportParams params = new ImportParams();
                // 表头设置为1行
                params.setHeadRows(1);
               // 设置开始的sheet
                params.setStartSheetIndex(0);
                // 标题行设置为0行,默认是0,可以不设置
                params.setTitleRows(0);
                result = ExcelImportUtil.importExcelMore(multipartFile.getInputStream(),
                        ExportGroupDto.class, params);
            } catch (Exception e) {
                logger.info(e.getMessage());
                return R.fail("导入失败!");
            }
            String sheetName = result.getWorkbook().getSheetName(i);
            List<ExportGroupDto> list = result.getList();
            String message = yxhGroupService.importGroup(sheetName, list);
       

        return R.success();
    }

posted @ 2022-03-10 15:03  菜鸟辉哥  阅读(1190)  评论(0编辑  收藏  举报