EasyExcel导出自定义合并单元格的策略

该博客介绍了一个使用EasyExcel实现自定义合并单元格策略的示例。在导出Excel时,如果下一行的主键与上一行相同,就会合并特定列。内容包括需求概述、测试代码及其运行结果,展示了如何通过修改`ExcelFillCellMergeStrategy`类来满足特定的合并条件。

需求概述

项目中需要导出的Excel如下所示:
在这里插入图片描述
目前的列表是查询出所有行的数据,前端再去按主键进行合并的。所以,导出时只要Excel下一行的主键相同,就合并上一行框红的列。

目前网上找到的EasyExcel自定义合并单元格都是ExcelFillCellMergeStrategy,这个工具类只要下一行的cell和上一行的cell内容相同就会合并,不符合目前的需求。本例也是在此基础上进行逻辑修改。 参考链接

测试代码

引入相关依赖:

<dependencies>
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>easyexcel</artifactId>
        <version>2.2.6</version>
    </dependency>
    <!--lombok-->
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.18.20</version>
        <scope>provided</scope>
    </dependency>
</dependencies>

ExcelModel类:

@Getter
@Setter
@ContentRowHeight(15) //内容行高
@HeadRowHeight(20)//表头行高
public class ExcelModel {
   
   

    public static final String RESEXCELNAME = "document.xlsx";
    public static final String TEMPLATEEXCELNAME = "文章管理";
    public static final String SUFFIX = ".xlsx";

    /**
     * notice
     * 当采用模板上传Excel且.needHead(false)设置了不生成标题头  @ColumnWidth(10)标签将无效,根据模板头的长度来走
     */
    @ColumnWidth(10)//单元格长度
    @ExcelProperty(value = "序号", index = 0)
    private String order;

    @ColumnWidth(20)//单元格长度
    @ExcelProperty(value = "文章标题", index = 1)
    private String title;

    @ColumnWidth(15)//单元格长度
    @ExcelProperty(value = "单位", index = 2)
    private String company;

    @ColumnWidth(15)//单元格长度
    @ExcelProperty(value = "编号", index = 3)
    private String documentCode;

    @ColumnWidth(12)//单元格长度
    @Exce
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值