@Test
public void mergeWrite() {
// 方法1 注解
String fileName = TestFileUtil.getPath() + "mergeWrite" + System.currentTimeMillis() + ".xlsx";
// 在DemoStyleData里面加上ContentLoopMerge注解
// 这里 需要指定写用哪个class去写,然后写到第一个sheet,名字为模板 然后文件流会自动关闭
EasyExcel.write(fileName, DemoMergeData.class).sheet("模板").doWrite(data());
// 方法2 自定义合并单元格策略
fileName = TestFileUtil.getPath() + "mergeWrite" + System.currentTimeMillis() + ".xlsx";
// 每隔2行会合并 把eachColumn 设置成 3 也就是我们数据的长度,所以就第一列会合并。当然其他合并策略也可以自己写
LoopMergeStrategy loopMergeStrategy = new LoopMergeStrategy(2, 0);
// 这里 需要指定写用哪个class去写,然后写到第一个sheet,名字为模板 然后文件流会自动关闭
EasyExcel.write(fileName, DemoData.class)
.registerWriteHandler(loopMergeStrategy)
.sheet("模板")
.doWrite(data());
}
private List<DemoData> data() {
List<DemoData> list = ListUtils.newArrayList();
for (int i = 0; i < 10; i++) {
DemoData data = new DemoData();
data.setNumber(i);
data.setString("STRING" + i);
data.setDate(new Date());
data.setDoubleData(0.56);
list.add(data);
}
return list;
}
@Getter
@Setter
@EqualsAndHashCode
public class DemoData {
/**
* Number Title
*/
@ExcelProperty("Number Title")
private Integer number;
/**
* String Title
*/
@ExcelProperty("String Title")
private String string;
/**
* Date Title
*/
@ExcelProperty("Date Title")
private Date date;
/**
* Number Title
*/
@ExcelProperty("Number Title")
private Double doubleData;
/**
* Ignore this field
*/
@ExcelIgnore
private String ignore;
}
Search before asking
Fastexcel version
1.2.0
JDK version
21
Operating system
mac os
Minimal reproduce step
What did you expect to see?
选中计数以及合计显示正确的值
What did you see instead?
Anything else?
No response
Are you willing to submit a PR?