java使用@Excel注解导出一对多的多个sheet页
时间: 2023-10-04 21:04:59 浏览: 60
在Java中,可以使用EasyExcel库来实现Excel导出功能,并且它支持一对多的多个sheet页导出。下面是使用@Excel注解导出一对多的多个sheet页的示例代码:
首先,定义一个实体类,用于存储一对多的数据信息:
```java
public class ExportData {
@ExcelProperty(value = "姓名", index = 0)
private String name;
@ExcelProperty(value = "年龄", index = 1)
private Integer age;
@ExcelProperty(value = "性别", index = 2)
private String gender;
@ExcelProperty(value = "成绩", index = 3)
private Double score;
@ExcelIgnore
private List<ExportDetailData> detailDataList;
//getter和setter方法
}
public class ExportDetailData {
@ExcelProperty(value = "科目", index = 0)
private String subject;
@ExcelProperty(value = "分数", index = 1)
private Double score;
//getter和setter方法
}
```
其中,ExportData类用于表示一对多的数据信息,包括姓名、年龄、性别、成绩和详细数据列表;ExportDetailData类用于表示详细数据信息,包括科目和分数。
然后,定义一个导出工具类,用于将数据导出到Excel文件:
```java
public class ExcelExportUtil {
public static void export(List<ExportData> dataList, String filePath) {
try {
OutputStream out = new FileOutputStream(filePath);
ExcelWriter writer = EasyExcel.write(out).build();
for (ExportData data : dataList) {
Sheet sheet = Sheet.builder().sheetName(data.getName()).build();
writer.write(data.getDetailDataList(), sheet);
writer.write(data, sheet);
}
writer.finish();
out.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
```
其中,export方法接收一个ExportData列表和一个文件路径,将数据导出到指定的Excel文件中。
最后,调用ExcelExportUtil的export方法,将数据导出到Excel文件中:
```java
public class Main {
public static void main(String[] args) {
List<ExportData> dataList = new ArrayList<>();
ExportData data1 = new ExportData();
data1.setName("张三");
data1.setAge(18);
data1.setGender("男");
data1.setScore(90.0);
List<ExportDetailData> detailDataList1 = new ArrayList<>();
ExportDetailData detailData1 = new ExportDetailData();
detailData1.setSubject("语文");
detailData1.setScore(95.0);
detailDataList1.add(detailData1);
ExportDetailData detailData2 = new ExportDetailData();
detailData2.setSubject("数学");
detailData2.setScore(90.0);
detailDataList1.add(detailData2);
data1.setDetailDataList(detailDataList1);
dataList.add(data1);
ExportData data2 = new ExportData();
data2.setName("李四");
data2.setAge(20);
data2.setGender("女");
data2.setScore(85.0);
List<ExportDetailData> detailDataList2 = new ArrayList<>();
ExportDetailData detailData3 = new ExportDetailData();
detailData3.setSubject("语文");
detailData3.setScore(90.0);
detailDataList2.add(detailData3);
ExportDetailData detailData4 = new ExportDetailData();
detailData4.setSubject("数学");
detailData4.setScore(80.0);
detailDataList2.add(detailData4);
data2.setDetailDataList(detailDataList2);
dataList.add(data2);
ExcelExportUtil.export(dataList, "data.xlsx");
}
}
```
上述代码将导出两个sheet页,分别包含“张三”和“李四”的信息和详细数据。