EasyExcel 是阿里巴巴的一个基于Java的简单方便省内存的读写Excel开源项目。

常用方法,见官方文档:https://easyexcel.opensource.alibaba.com/docs/current/   

下面介绍,Alibaba EasyExcel:合并 设置,版本 2.2.6+   

合并列、行,使用 OnceAbsoluteMergeStrategy  非常方便  。 


一、使用 直接 new  OnceAbsoluteMergeStrategy 对象:

new OnceAbsoluteMergeStrategy(1,2,0,0)  表示合并 0 列的 1和2两行,

这里的行列,均从 0 开始。

下面是 其 构造函数:

publicOnceAbsoluteMergeStrategy(int firstRowIndex, int lastRowIndex, int firstColumnIndex, int lastColumnIndex)

其中前两个参数是限制行,后两个参数是限制列,均包含在内。


二、通过 registerWriteHandler 方法注册进去即可:

1. 使用 总的 ExcelWriterBuilder 对象,或者 每个 Sheet 的 ExcelWriterSheetBuilder 对象,均可注册。


2. 在使用 总的 ExcelWriterBuilder 对象,注册很多的动态 WriteHandler 对象时,链式写法反而不方便,使用List反而操作方便些(当然如果都是些固定的WriteHandler,就无所谓了)



List<WriteHandler> writeHandlerList = Lists.newArrayList();
writeHandlerList.add(new ColumnWidthStyleStrategy()); // 列宽
writeHandlerList.add(new RowHeightStyleStrategy()); // 行高
writeHandlerList.add(new OnceAbsoluteMergeStrategy(1,2,0,0)); // 合并行

ExcelWriterBuilder excelWriterBuilder = EasyExcel.write(response.getOutputStream());
for (WriteHandler writeHandler : writeHandlerList) {
      excelWriterBuilder.registerWriteHandler(writeHandler);
}
ExcelWriter excelWriter = excelWriterBuilder.build();



三、如果有多地方合并,可以注册N个 OnceAbsoluteMergeStrategy 对象:



excelWriterBuilder.registerWriteHandler(new OnceAbsoluteMergeStrategy(1,2,0,0))
		.registerWriteHandler(new OnceAbsoluteMergeStrategy(2,2,3,4))
		.registerWriteHandler(new OnceAbsoluteMergeStrategy(5,7,1,3))
		.registerWriteHandler(new OnceAbsoluteMergeStrategy(4,4,0,head.size()));