Open QAQqwe opened 12 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; // 禁止单元格合并
}
}
}
自定义表头和内容策略之后,会将pojo对象值是 null 的 单元格合并到上一个非 null 字段对应的单元格上了,怎么处理不要这种效果