easypoi多层嵌套导致合并单元格失效
熟悉阿里easypoi导出的小伙伴们相信都不会陌生@ExcelCollection这个注解,最近需要导出表格里面有多层嵌套,所以就用到了这个,但是最后导出的结果却不如人意,不仅表头不对,而且对应的数据也对应不上(数据已经是封装好的)。先给大家看看表头效果。

大家可以看到我上面标红的红框,它应该是和“人工标注”是合并单元格的,但是并没有,而且看标箭头的地方,表头是空的(我自己代码中明确有,代码太多,这里不再展示)。
所以自己在网上找了很多很多都没有解决这个问题,而自己的数据已经看了,封装的没有毛病。所以只有一种可能,就是easypoi的问题,于是我就讲当前版本升级到了最新的版本,就解决了这个问题。
当前版本:
<dependency>
<groupId>cn.afterturn</groupId>
<artifactId>easypoi-spring-boot-starter</artifactId>
<version>4.0.0</version>
</dependency>
升级之后的版本:
<dependency>
<groupId>cn.afterturn</groupId>
<artifactId>easypoi-spring-boot-starter</artifactId>
<version>4.4.0</version>
</dependency>
解决之后导出的表头:

以下是表头封装数据的代码:
@Data
@AllArgsConstructor
@NoArgsConstructor
public class ExportResourceScoreDto {
@Excel(name = "序号")
private Integer id;
@Excel(name = "文件夹名称",width = 15)
private String systemFolderName;
@Excel(name = "资源id",width = 15)
private String resourceId;
@Excel(name = "资源名称")
private String resourceName;
@ExcelCollection(name = "人工标注")
private List<ArtificialMarScorekBo> artificialMarScorekBos;
@ExcelCollection(name = "历史最优")
private List<HistoryArtificialMarScorekBo> historyArtificialMarScorekBos;
@Excel(name = "异常说明")
private String exceptionDecription;
}
ArtificialMarScorekBo:
@Data
@AllArgsConstructor
@NoArgsConstructor
public class ArtificialMarScorekBo {
@Excel(name = "拍摄角度",replace = {"正面_0","侧面_1","其他_2"},orderNum = "1")
private String angle;
@ExcelCollection(name = "大臂抬起",orderNum = "2")
private List<BigArmMarkDirectionBo> bigArm;
@ExcelCollection(name = "小臂抬起",orderNum = "3")
private List<SmallArmMarkDirectionBo> smallArm;
@Excel(name = "身体侧倾",orderNum = "4")
private Integer bodyRollDirection;
@Excel(name = "转头",orderNum = "5")
private Integer turnHeadFlag;
@ExcelCollection(name = "膝关节缓冲",orderNum = "6")
private List<LacMarkDirectionBo> lacqueredJoint;
@Excel(name = "前后脚",orderNum = "7")
private Integer almostSimultaneously;
@Excel(name = "弯腰",orderNum = "8")
private Integer bend;
}
HistoryArtificialMarScorekBo:
@Data
@AllArgsConstructor
@NoArgsConstructor
@ExcelTarget("ExportResourceScoreDto")
public class HistoryArtificialMarScorekBo {
@ExcelCollection(name = "大臂抬起",orderNum = "1")
private List<BigArmHistoryMarkDirectionBo> hisBigArm;
@ExcelCollection(name = "小臂抬起",orderNum = "2")
private List<SmallArmHistoryMarkDirectionBo> hisSmallArm;
@Excel(name = "身体侧倾",orderNum = "3")
private Integer hisBodyRollDirection;
@Excel(name = "转头",orderNum = "4")
private Integer hisTurnHeadFlag;
@ExcelCollection(name = "膝关节缓冲",orderNum = "5")
private List<LacHistoryMarkDirectionBo> hisLacqueredJoint;
@Excel(name = "前后脚",orderNum = "6")
private Integer hisAlmostSimultaneously;
@Excel(name = "弯腰",orderNum = "7")
private Integer hisBend;
}

浙公网安备 33010602011771号