easyexcel 多级标题,设置父级标题合并,子级不合并
时间: 2023-08-04 19:30:57 浏览: 67
在使用EasyExcel导出Excel时,如果要设置多级标题,可以通过设置`@ExcelProperty`注解及合并单元格的方式来实现。具体步骤如下:
1. 在需要合并的字段上添加`@ExcelProperty`注解,并设置`value`参数来指定该字段的标题。
```java
public class DemoData {
@ExcelProperty("姓名")
private String name;
@ExcelProperty(value = "年龄(岁)", index = 1)
private Integer age;
@ExcelProperty(value = "地址", index = 2)
private String address;
// 省略getter和setter
}
```
2. 在使用EasyExcel导出时,使用`merge`参数来指定需要合并的单元格。
```java
ExcelWriter excelWriter = null;
try {
OutputStream outputStream = new FileOutputStream("demo.xlsx");
excelWriter = EasyExcel.write(outputStream, DemoData.class).build();
WriteSheet writeSheet = EasyExcel.writerSheet().build();
// 合并父级标题
CellRangeAddress head = new CellRangeAddress(0, 0, 0, 2);
WriteCellStyle headStyle = new WriteCellStyle();
headStyle.setFillForegroundColor(IndexedColors.LIGHT_BLUE.getIndex());
headStyle.setFillPatternType(FillPatternType.SOLID_FOREGROUND);
WriteFont headFont = new WriteFont();
headFont.setFontHeightInPoints((short) 14);
headStyle.setWriteFont(headFont);
writeSheet.setHead(head(Collections.singletonList(new Head().setHeadName("用户信息").setHeadStyle(headStyle))).setClazz(DemoData.class));
// 合并子级标题
CellRangeAddress age = new CellRangeAddress(1, 2, 1, 1);
CellRangeAddress address = new CellRangeAddress(1, 2, 2, 2);
WriteCellStyle style = new WriteCellStyle();
style.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex());
style.setFillPatternType(FillPatternType.SOLID_FOREGROUND);
WriteFont font = new WriteFont();
font.setFontHeightInPoints((short) 12);
style.setWriteFont(font);
Map<Integer, CellRangeAddress> mergeMap = new HashMap<>();
mergeMap.put(1, age);
mergeMap.put(2, address);
writeSheet.setTableStyle(TableStyleType.ARY1);
writeSheet.setClazz(DemoData.class);
writeSheet.setNeedHead(true);
writeSheet.setAutoWidth(Boolean.TRUE);
writeSheet.setTableStyle(TableStyleType.ARY1);
writeSheet.setTableStyle(TableStyleType.ARY2);
writeSheet.setStartRow(2);
writeSheet.setHead(head(Collections.singletonList(new Head().setHeadName("用户信息").setHeadStyle(headStyle))).setClazz(DemoData.class));
writeSheet.setTableStyle(TableStyleType.ARY2);
writeSheet.setNeedHead(true);
writeSheet.setAutoWidth(Boolean.TRUE);
writeSheet.setTableStyle(TableStyleType.ARY1);
writeSheet.setTableStyle(TableStyleType.ARY2);
writeSheet.setStartRow(2);
writeSheet.setTableStyle(TableStyleType.ARY1);
writeSheet.setTableStyle(TableStyleType.ARY2);
writeSheet.setStartRow(2);
writeSheet.setTableStyle(TableStyleType.ARY1);
writeSheet.setTableStyle(TableStyleType.ARY2);
writeSheet.setStartRow(2);
writeSheet.setTableStyle(TableStyleType.ARY1);
writeSheet.setTableStyle(TableStyleType.ARY2);
writeSheet.setStartRow(2);
writeSheet.setTableStyle(TableStyleType.ARY1);
writeSheet.setTableStyle(TableStyleType.ARY2);
writeSheet.setStartRow(2);
writeSheet.setTableStyle(TableStyleType.ARY1);
writeSheet.setTableStyle(TableStyleType.ARY2);
writeSheet.setStartRow(2);
writeSheet.setAutoWidth(Boolean.TRUE);
excelWriter.write(dataList, writeSheet.merge(mergeMap).build());
} finally {
if (excelWriter != null) {
excelWriter.finish();
}
}
```
在上面的代码中,使用`CellRangeAddress`类来指定需要合并的单元格范围,使用`WriteCellStyle`类来设置合并单元格的样式,使用`merge`参数来指定需要合并的单元格。注意,为了实现子级不合并的效果,需要将子级标题单独合并,而不是与父级标题一起合并。
相关推荐
![java](https://img-home.csdnimg.cn/images/20210720083646.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)