easyExcel导出excel文件中有合并单元格

有时候,excel文件中,需要合并单元格,导出的时候应该怎么实现呢?

有两种实现方式,一种是策略形式,一种是注解形式.注解形式比较方便,策略形式可操作性更强,更灵活.

1.策略形式

    public void exportHeadersMerge(String path) {

        String sheetName = "sheetName";
        List<ExportHeadersExcel> excels = new ArrayList<>();
        ExportHeadersExcel exportHeadersExcel = new ExportHeadersExcel();
        exportHeadersExcel.setShui("一元重水");
        excels.add(exportHeadersExcel);
        ExportHeadersExcel exportHeadersExcel1 = new ExportHeadersExcel();
        exportHeadersExcel1.setShui("玄冥真水");
        excels.add(exportHeadersExcel1);
        ExportHeadersExcel exportHeadersExcel2 = new ExportHeadersExcel();
        exportHeadersExcel2.setShui("天一真水");
        excels.add(exportHeadersExcel2);
        ExportHeadersExcel exportHeadersExcel3 = new ExportHeadersExcel();
        exportHeadersExcel3.setShui("无形真水");
        excels.add(exportHeadersExcel3);
        //自定义策略
        //参数  int eachRow, int columnExtend, int columnIndex
        //eachRow 2 代表每两行就合并,每一行都执行,如果不够两行,要合并的这一列会没有下方的边框
        //columnExtend 合并扩展列, 向右合并列
        // columnIndex 列索引,从零开始,第columnIndex列开始执行合并,往右合并columnExtend列
        LoopMergeStrategy loopMergeStrategy = new LoopMergeStrategy(2, 0);
        //注解形式  @ContentLoopMerge(eachRow = 2)
        EasyExcel.write(path, ExportHeadersExcel.class)
                .registerWriteHandler(loopMergeStrategy)
                .sheet(sheetName)
                .doWrite(excels);
    }

效果

LoopMergeStrategy的参数释义:

//eachRow 2 代表每两行就合并,每一行都执行,如果不够两行,要合并的这一列会没有下方的边框 //columnExtend 合并扩展列, 向右合并列

// columnIndex 列索引,从零开始,第columnIndex列开始执行合并,往右合并columnExtend列

2.注解形式

实体类


import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ContentLoopMerge;
import com.alibaba.excel.annotation.write.style.ContentStyle;
import com.alibaba.excel.annotation.write.style.HeadRowHeight;
import com.alibaba.excel.enums.BooleanEnum;
import com.alibaba.excel.enums.poi.BorderStyleEnum;
import com.alibaba.excel.enums.poi.VerticalAlignmentEnum;
import lombok.Data;

@Data
@HeadRowHeight(30)
//属性注释在最下
@ContentStyle(wrapped = BooleanEnum.TRUE, verticalAlignment = VerticalAlignmentEnum.CENTER, borderBottom = BorderStyleEnum.THIN, borderLeft = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN)
public class ExportHeadersExcel {

    /**
     * 金
     */
    @ExcelProperty(value = {"七灵图","五行", "金"})
    //合并单元格
    @ContentLoopMerge(eachRow = 2)
    private String jin;
    /**
     * 木
     */
    @ExcelProperty(value = {"七灵图","五行", "木"})
    private String mu;
    /**
     * 水
     */
    @ExcelProperty(value = {"七灵图","五行", "水"})
    private String shui;
    /**
     * 火
     */
    @ExcelProperty(value = {"七灵图","五行", "火"})
    private String huo;
    /**
     * 土
     */
    @ExcelProperty(value = {"七灵图","五行", "土"})
    private String tu;
    /**
     * 阴
     */
    @ExcelProperty(value = {"七灵图","两仪", "阴"})
    private String yin;
    /**
     * 阳
     */
    @ContentLoopMerge(eachRow = 2)
    @ExcelProperty(value = {"七灵图","两仪", "阳"})
    private String yang;

}

代码

    public void exportHeadersMerge(String path) {

        String sheetName = "sheetName";
        List<ExportHeadersExcel> excels = new ArrayList<>();
        ExportHeadersExcel exportHeadersExcel = new ExportHeadersExcel();
        exportHeadersExcel.setShui("一元重水");
        excels.add(exportHeadersExcel);
        ExportHeadersExcel exportHeadersExcel1 = new ExportHeadersExcel();
        exportHeadersExcel1.setShui("玄冥真水");
        excels.add(exportHeadersExcel1);
        ExportHeadersExcel exportHeadersExcel2 = new ExportHeadersExcel();
        exportHeadersExcel2.setShui("天一真水");
        excels.add(exportHeadersExcel2);
        ExportHeadersExcel exportHeadersExcel3 = new ExportHeadersExcel();
        exportHeadersExcel3.setShui("无形真水");
        excels.add(exportHeadersExcel3);

        EasyExcel.write(path, ExportHeadersExcel.class)
                .sheet(sheetName)
                .doWrite(excels);
    }

效果

注解直接写在实体类的字段上就可以.

注解形式可以设定某一列进行合并,实体类上对金和阳两个字段加了注解,所以这两列进行了合并.策略形式不知道怎么设置某一列,知道的大佬在评论回复一下具体操作,万分感谢!

git仓库:导入导出: 导入导出的实例

更多导出场景:多场景easyExcel导出excel文件(一)-CSDN博客

读取excel场景:多场景easyExcel读取excel文件(二)-CSDN博客

根据模板填充excel:多场景easyExcel根据模板填充excel文件(三)-CSDN博客

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值