alibaba / easyexcel

快速、简洁、解决大文件内存溢出的java处理Excel工具
https://easyexcel.opensource.alibaba.com
Apache License 2.0
31.96k stars 7.49k forks source link

自定义表头和内容策略不想要合并单元格 #3468

Open QAQqwe opened 12 months ago

QAQqwe commented 12 months ago

自定义表头和内容策略之后,会将pojo对象值是 null 的 单元格合并到上一个非 null 字段对应的单元格上了,怎么处理不要这种效果

ljluestc commented 3 months ago

import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.write.builder.ExcelWriterBuilder;
import com.alibaba.excel.write.metadata.WriteSheet;
import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy;

import java.util.ArrayList;
import java.util.List;

public class CustomStrategyExample {

    public static void main(String[] args) {
        String fileName = "output.xlsx";

        // 准备数据
        List<CustomData> dataList = new ArrayList<>();
        dataList.add(new CustomData("John", null, 30));
        dataList.add(new CustomData(null, "New York", 25));

        // 写入 Excel 文件
        EasyExcel.write(fileName, CustomData.class)
                .registerWriteHandler(new LongestMatchColumnWidthStyleStrategy())
                .registerWriteHandler(new NoMergeContentStyleStrategy()) // 注册自定义内容样式策略
                .sheet("Sheet1")
                .doWrite(dataList);
    }

    // POJO 类
    public static class CustomData {
        @ExcelProperty("Name")
        private String name;

        @ExcelProperty("City")
        private String city;

        @ExcelProperty("Age")
        private Integer age;

        // 构造函数、getter 和 setter 方法
        public CustomData(String name, String city, Integer age) {
            this.name = name;
            this.city = city;
            this.age = age;
        }
    }

    // 自定义内容样式策略,禁止 null 值的单元格合并
    public static class NoMergeContentStyleStrategy extends LongestMatchColumnWidthStyleStrategy {
        @Override
        public boolean canMergeCell(String fieldName, Object fieldValue, Class fieldType, int rowIndex, int columnIndex) {
            return false; // 禁止单元格合并
        }
    }
}