easyexcel设置标题
时间: 2023-08-12 20:40:37 浏览: 174
在使用EasyExcel进行Excel文件读写时,可以使用以下代码设置标题:
```
// 创建ExcelWriter对象
ExcelWriter excelWriter = EasyExcel.write(fileName).build();
// 创建Sheet对象,并设置sheet名称和表头
Sheet sheet = new Sheet(1, 0);
sheet.setSheetName("Sheet1");
List<List<String>> head = new ArrayList<>();
List<String> head1 = new ArrayList<>();
head1.add("姓名");
head1.add("年龄");
head1.add("性别");
head.add(head1);
sheet.setHead(head);
// 将Sheet对象写入ExcelWriter对象中
excelWriter.write1(null, sheet);
// 关闭ExcelWriter对象
excelWriter.finish();
```
其中,head为表头数据,每个元素为一个List<String>,表示一个单元格的数据。sheet.setHead(head)方法用于设置表头。
相关问题
easyexcel 导出标题
在 EasyExcel 中,可以通过以下方式导出标题:
1. 在 Java Bean 中定义需要导出的字段,并使用 @ExcelProperty 注解为每个字段指定标题名称,例如:
```java
public class User {
@ExcelProperty("姓名")
private String name;
@ExcelProperty("年龄")
private int age;
// ...
}
```
2. 使用 EasyExcel 的 write() 方法将 Java Bean 导出到 Excel 文件中时,会自动将 @ExcelProperty 注解中指定的标题名称作为 Excel 文件的表头,例如:
```java
// 构造测试数据
List<User> userList = new ArrayList<>();
userList.add(new User("张三", 20));
userList.add(new User("李四", 25));
userList.add(new User("王五", 30));
// 导出 Excel 文件
String filename = "用户列表.xlsx";
EasyExcel.write(filename, User.class).sheet("用户信息").doWrite(userList);
```
以上代码会将 userList 中的数据导出到 "用户列表.xlsx" 文件中,其中第一行会自动添加 "姓名" 和 "年龄" 两个表头。
easyexcel 多级标题,设置父级标题合并,子级不合并
在使用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`参数来指定需要合并的单元格。注意,为了实现子级不合并的效果,需要将子级标题单独合并,而不是与父级标题一起合并。
阅读全文