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;






}

posted @ 2022-11-04 14:19  小猪不会叫  阅读(774)  评论(0)    收藏  举报  来源