这样的数据结构导入
注意: 模板多的一侧 标题要加下划线 _
<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();
}