EasyExcel使用动态头,头部相同值单元格自动合并问题

本文介绍了在使用EasyExcel生成Excel时遇到动态头导致的单元格自动合并问题。通过测试代码展示了如何在写入动态头时关闭自动合并功能,从而满足不自动合并的需求。修改后的代码中,通过`automaticMergeHead(false)`参数即可禁止自动合并,实现了预期效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用EasyExcel生产excel时,如果使用动态头当头部单元格的值相同时会产生单元格自动合并的问题,有可能我们是不需要去做自动合并的,但是EasyExcel官网又没有提供如何防止自动头合并的解决措施。那就只有从代码当中去找了。

测试代码如下
public class Test {

    @org.junit.Test
    public void dynamicHeadWrite() {
        String fileName ="dynamicHeadWrite" + System.currentTimeMillis() + ".xlsx";
        EasyExcel.write(fileName)
                // 这里放入动态头
                .head(head()).sheet("模板")
                // 当然这里数据也可以用 List<List<String>> 去传入
                .doWrite(data());
    }

    private List data() {
       return new ArrayList();
    }


    private List<List<String>> head() {
        List<List<String>> list = new ArrayList<List<String>>();
        List<String> head0 = new ArrayList<String>();
        head0.add("字符串");
        List<String> head1 = new ArrayList<String>();
        head1.add("字符串");
        List<String> head2 = new ArrayList<String>();
        head2.add("日期" + System.currentTimeMillis());
        list.add(head0);
        list.add(head1);
        list.add(head2);
        return list;
    }
}

运行效果如图,可以看到已经做了自动合并了

在这里插入图片描述

假如我们不想要自动合并,可以改成这样

public class Test {

    @org.junit.Test
    public void dynamicHeadWrite() {
        String fileName ="dynamicHeadWrite" + System.currentTimeMillis() + ".xlsx";
        EasyExcel.write(fileName)
                // 这里放入动态头
                .head(head()).automaticMergeHead(false).sheet("模板")
                // 当然这里数据也可以用 List<List<String>> 去传入
                .doWrite(data());
    }

    private List data() {
       return new ArrayList();
    }


    private List<List<String>> head() {
        List<List<String>> list = new ArrayList<List<String>>();
        List<String> head0 = new ArrayList<String>();
        head0.add("字符串");
        List<String> head1 = new ArrayList<String>();
        head1.add("字符串");
        List<String> head2 = new ArrayList<String>();
        head2.add("日期" + System.currentTimeMillis());
        list.add(head0);
        list.add(head1);
        list.add(head2);
        return list;
    }
}

修改之后运行效果如图
在这里插入图片描述

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值