這樣的數據結構導入
注意: 模板多的一側 標題要加下划線 _
<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();
}