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();
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了